ImageList+Listview设计图片浏览器

论坛 期权论坛 编程之家     
选择匿名的用户   2021-5-31 23:06   20   0

需要在窗体增加imageList和listview控件,并把ListView控件的LargeImageList设置为imageList1

ListView控件显示图片的大小可以在imageList1控件中调整ImageSize属性,如果图片失真,可以设置imageList1控件的ColorDepth值为Depth32Bit.

窗体设计:

image

参考代码:


  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9. using System.IO;
  10. using EXCEL = Microsoft.Office.Interop.Excel;
  11. using WORD = Microsoft.Office.Interop.Word;
  12. namespace ImageListView
  13. {
  14. public partial class OfficeTextEditor : Form
  15. {
  16. private LanguageWizard mParentFrm;
  17. public OfficeTextEditor(LanguageWizard parentFrm)
  18. {
  19. InitializeComponent();
  20. this.mParentFrm = parentFrm;
  21. fillListView_Word();
  22. fillListView_Excel();
  23. }
  24. private List mLViewWord_FileName = new List();
  25. private void fillListView_Word()
  26. {
  27. DirectoryInfo dir = new DirectoryInfo(Application.StartupPath + @"\Word");

  28. listViewWord.Items.Clear();
  29. this.imageListWord.Images.Clear();
  30. foreach (FileInfo d in dir.GetFiles())
  31. {
  32. if (d.Name.EndsWith("_E.doc"))
  33. {
  34. mLViewWord_FileName.Add(d.FullName);
  35. }
  36. }
  37. for (int i = 0; i mLViewWord_FileName.Count; i++)
  38. {
  39. this.imageListWord.Images.Add(System.Drawing.Image.FromFile(dir + @"\WordItem.png"));
  40. this.listViewWord.Items.Add(System.IO.Path.GetFileName(mLViewWord_FileName[i]), i);
  41. this.listViewWord.Items[i].ImageIndex = i;
  42. this.listViewWord.Items[i].Name = mLViewWord_FileName[i];
  43. }
  44. }
  45. private List mLViewExcel_FileName = new List();
  46. private void fillListView_Excel()
  47. {
  48. DirectoryInfo dir = new DirectoryInfo(Application.StartupPath + @"\Excels");
  49. listViewExcel.Items.Clear();
  50. this.imageListExcel.Images.Clear();
  51. foreach (FileInfo d in dir.GetFiles())
  52. {
  53. if (d.Name.EndsWith("_E.xls"))
  54. {
  55. mLViewExcel_FileName.Add(d.FullName);
  56. }
  57. }
  58. for (int i = 0; i mLViewExcel_FileName.Count; i++)
  59. {
  60. this.imageListExcel.Images.Add(System.Drawing.Image.FromFile(dir + @"\ExcelItem.png"));
  61. this.listViewExcel.Items.Add(System.IO.Path.GetFileName(mLViewExcel_FileName[i]), i);
  62. this.listViewExcel.Items[i].ImageIndex = i;
  63. this.listViewExcel.Items[i].Name = mLViewExcel_FileName[i];
  64. }
  65. }
  66. private void button1_Click(object sender, EventArgs e)
  67. {
  68. //this.mParentFrm.Show();
  69. this.Close();
  70. }
  71. private void listViewWord_MouseDoubleClick(object sender, MouseEventArgs e)
  72. {
  73. ListViewHitTestInfo info = listViewWord.HitTest(e.X, e.Y);
  74. if (info.Item != null)
  75. {
  76. }
  77. }
  78. private void listViewExcel_MouseDoubleClick(object sender, MouseEventArgs e)
  79. {
  80. ListViewHitTestInfo info = listViewExcel.HitTest(e.X, e.Y);
  81. if (info.Item != null)
  82. {
  83. EXCEL.Application eApp = new EXCEL.Application();
  84. EXCEL.Workbook workBook = eApp.Workbooks.Open(info.Item.Name);
  85. EXCEL.Worksheet workSheet = eApp.ActiveSheet;
  86. try
  87. {
  88. eApp.Visible = true;
  89. }
  90. catch (Exception ex)
  91. {
  92. MessageBox.Show(ex.Message);
  93. }
  94. finally
  95. {
  96. /* 关掉任务管理器中的进程EXCEL/WORD的关键代码 */
  97. System.Runtime.InteropServices.Marshal.ReleaseComObject(eApp);
  98. System.Runtime.InteropServices.Marshal.ReleaseComObject(workBook);
  99. System.Runtime.InteropServices.Marshal.ReleaseComObject(workSheet);
  100. eApp = null;
  101. workBook = null;
  102. workSheet = null;
  103. GC.Collect();
  104. }
  105. }
  106. }

  107. }
  108. }


运行效果:

image


参考网址:

http://www.cnblogs.com/hfzsjz/p/3929131.html

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP