C# WinForm實現(xiàn)圖片瀏覽器
C#WinForm程序設(shè)計之圖片瀏覽器,這次我們一起做一個圖片查看器,這個圖片查看器的原始圖如下:
我們首先來介紹一下這個原始圖的構(gòu)成:
左邊上面是一個 TextBox 和 一個 Button,分別用來顯示當(dāng)前路徑以及返回上一個路徑。左邊下面是一個瀏覽文件的文件路徑樹狀圖(TreeView),用來顯示當(dāng)前路徑下的文件和文件夾。右邊是一個pictureBox,用來展示選中的圖片。
接下來我們一步一步實現(xiàn)這個圖片查看器!
首先大家應(yīng)該看到了左邊的TreeView上面已經(jīng)有顯示當(dāng)前PC的所有路徑信息,那么是怎么做到的呢?
方法很簡單,就是先監(jiān)聽窗口的 Load 事件,代碼如下:
private void Form1_Load(object sender, EventArgs e) { createDrivers();//調(diào)用下面的函數(shù) } private void createDrivers() { DirectoryInfo di; TreeNode tn; string s; foreach (string ss in Environment.GetLogicalDrives()) { /** * ss的值形式如下: * C:\ * D:\ * E:\ * F:\ * I:\ */ di = new DirectoryInfo(ss); //生成路徑 if (di.Exists) //如果當(dāng)前路徑存在 { s = ss.Substring(0, ss.IndexOf("\\")); //去掉路徑的 \ 得到如:C: tn = new TreeNode(ss); //設(shè)置結(jié)點的值 tn.Tag = "Root"; treeView1.Nodes.Add(tn); //把結(jié)點加入到TreeView中 } } }
接下來我們設(shè)置每個 Node 的點擊事件,也就是監(jiān)聽 AfterSelect 事件:
private void treeView1_AfterSelect(object sender, TreeViewEventArgs e) { TreeNode tn = e.Node; //得到發(fā)生選擇事件的結(jié)點 path = tn.FullPath; //得到完整的路徑 path是一個定義的全局變量 textBox1.Text = path; //在左上角的文本框顯示完整的路徑 if (tn.Tag.ToString() == "File") //如果當(dāng)前結(jié)點是文件 { string ext = path.Substring(path.LastIndexOf(".") + 1); //得到文件的后綴 ext = ext.ToLower(); if (ext == "ico" || ext == "gif" || ext == "jpg" || ext == "png" || ext == "bmp") //如果是圖片,設(shè)置到右邊的pictureBox pictureBox1.Image = Image.FromFile(path); else //否則使用系統(tǒng)默認(rèn)的工具打開該文件 System.Diagnostics.Process.Start(path); } else //反之當(dāng)前結(jié)點是文件夾 { getSubContents(tn);//得到當(dāng)前結(jié)點的全部內(nèi)容 } } private void getSubContents(TreeNode parent) { DirectoryInfo di; TreeNode tn; di = new DirectoryInfo(parent.FullPath + "\\"); //得到路徑 if (!di.Exists) return; //路徑不存在,直接返回 foreach (DirectoryInfo d in di.GetDirectories()) //該路徑下面的所有 文件夾 { tn = new TreeNode(d.Name); tn.Tag = "Directory"; parent.Nodes.Add(tn); //將該節(jié)點添加到父節(jié)點 } foreach (FileInfo f in di.GetFiles()) { tn = new TreeNode(f.Name); //該路徑下的所有 文件 tn.Tag = "File"; parent.Nodes.Add(tn); } treeNode = parent;// 全局變量 記錄當(dāng)前結(jié)點 }
接下來我們運(yùn)行一下看看效果(pictureBox的大小模式設(shè)置成Zoom)
你們有沒有成功呢?
接下來就是實現(xiàn)那個 Back 按鈕的回退功能了!
private void button1_Click(object sender, EventArgs e) { DirectoryInfo di = new DirectoryInfo(path + "\\"); int p = path.LastIndexOf("\\"); if (p >= 0) { path = path.Substring(0, p); textBox1.Text = path; if (treeNode != null) { //全局變量 當(dāng)前選中的結(jié)點 treeNode.Nodes.Clear(); //移除當(dāng)前結(jié)點下的所有子節(jié)點 treeView1.SelectedNode = treeNode.Parent; //設(shè)置他的父節(jié)點為當(dāng)前選中結(jié)點 } } }
這樣這個小項目就算完成了,是不是很輕松?
欄 目:C#教程
下一篇:C#實現(xiàn)BBcode轉(zhuǎn)為Markdown的方法
本文標(biāo)題:C# WinForm實現(xiàn)圖片瀏覽器
本文地址:http://mengdiqiu.com.cn/a1/C_jiaocheng/5269.html
您可能感興趣的文章
- 01-10WinForm限制窗體不能移到屏幕外的方法
- 01-10WinForm繪制圓角的方法
- 01-10C#實現(xiàn)txt定位指定行完整實例
- 01-10WinForm實現(xiàn)仿視頻播放器左下角滾動新聞效果的方法
- 01-10C#實現(xiàn)清空回收站的方法
- 01-10C#實現(xiàn)讀取注冊表監(jiān)控當(dāng)前操作系統(tǒng)已安裝軟件變化的方法
- 01-10C#實現(xiàn)多線程下載文件的方法
- 01-10C#實現(xiàn)Winform中打開網(wǎng)頁頁面的方法
- 01-10C#實現(xiàn)遠(yuǎn)程關(guān)閉計算機(jī)或重啟計算機(jī)的方法
- 01-10C#自定義簽名章實現(xiàn)方法


閱讀排行
本欄相關(guān)
- 01-10C#通過反射獲取當(dāng)前工程中所有窗體并
- 01-10關(guān)于ASP網(wǎng)頁無法打開的解決方案
- 01-10WinForm限制窗體不能移到屏幕外的方法
- 01-10WinForm繪制圓角的方法
- 01-10C#實現(xiàn)txt定位指定行完整實例
- 01-10WinForm實現(xiàn)仿視頻播放器左下角滾動新
- 01-10C#停止線程的方法
- 01-10C#實現(xiàn)清空回收站的方法
- 01-10C#通過重寫Panel改變邊框顏色與寬度的
- 01-10C#實現(xiàn)讀取注冊表監(jiān)控當(dāng)前操作系統(tǒng)已
隨機(jī)閱讀
- 08-05DEDE織夢data目錄下的sessions文件夾有什
- 01-10delphi制作wav文件的方法
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 04-02jquery與jsp,用jquery
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
- 01-11ajax實現(xiàn)頁面的局部加載
- 01-10使用C語言求解撲克牌的順子及n個骰子
- 01-10C#中split用法實例總結(jié)
- 08-05織夢dedecms什么時候用欄目交叉功能?