用C#語言在VS2010 WPF中編寫的選擇文件和選擇文件夾的問題及其解決方案


1.選擇文件對話框

如題:寫一個選擇文件的功能時,添加一個textbox和一個Button,textbox的name為textBox1,Button的name為button1,然后在設計界面,雙擊Button,添加代碼如下:

private void button1_Click(object sender, RoutedEventArgs e)
{
Microsoft.Win32.OpenFileDialog fileDialog1 = new Microsoft.Win32.OpenFileDialog();
fileDialog1.InitialDirectory = "d:\\";//初始目錄
fileDialog1.Filter = "yuv files (*.yuv)|*.yuv";//文件的類型
fileDialog1.FilterIndex = 1;
fileDialog1.RestoreDirectory = true;
if (fileDialog1.ShowDialog() == true)
{
textBox1.Text = fileDialog1.FileName;
str1 = fileDialog1.FileName;
}
else
{
textBox1.Text = "";

}

這樣就可以選擇文件了,文件的類型什么的可以自己在上面添加,如上代碼,或者如下:

openFileDialog.Filter="文本文件|*.*|C#文件|*.cs|所有文件|*.*";

 

2.選擇文件夾對話框

有時我們需要選擇的不是文件,而是文件夾,那么就要換一個方法了,通常在一個forms里,用FolderBrowserDialog就行了,但是WPF程序卻無法使用這個類,此時我們可以通過添加引用來使用它,在項目上單擊右鍵,選擇“添加引用”,選擇System.Windows.Forms即可,此時可以把這個命名空間導入,如果不導入就用如下代碼:

        private void button4_Click(object sender, RoutedEventArgs e)
{
System.Windows.Forms.FolderBrowserDialog folderBrowserDialog1 = new System.Windows.Forms.FolderBrowserDialog();
folderBrowserDialog1.Description = "請選擇圖片所在的文件夾";
folderBrowserDialog1.ShowNewFolderButton = true;
folderBrowserDialog1.RootFolder = Environment.SpecialFolder.Personal;
System.Windows.Forms.DialogResult result = folderBrowserDialog1.ShowDialog();
if (result == System.Windows.Forms.DialogResult.OK)
{
string folderName = folderBrowserDialog1.SelectedPath;
if (folderName != "")
{
textBox1.Text = folderName;
}
}

        }

這其中有些類在使用時注意添加前面所屬的命名空間,

比如這一句:

if (result == System.Windows.Forms.DialogResult.OK),我之前在很多網頁里看到的都是

if (result == DialogResult.OK)   如果是這樣,在OK這里就會報錯,什么不能比較什么的,其實就是類的使用不當而已。

另外,如果要復制一個文件到另外一個文件夾,可以用file.copy(string 源文件,string目的文件)命令,但是file.copy(string 路徑)不能覆蓋同名文件,這時可以用file.delete(string 路徑)刪除,示例如下:

            if (str1 != folderName)
            {
                if (System.IO.File.Exists(folderName + "\\the encrypted image.jpg"))
                {
                    System.IO.File.Delete(folderName + "\\the encrypted image.jpg");

                }
                System.IO.File.Copy(str1 + "\\the encrypted image.jpg", folderName + "\\the encrypted image.jpg");
            }

 

這些只是我個人在遇到這個問題時解決過程中的經驗總結,如果大家有什么疑問,歡迎和我交流O(∩_∩)O~

另外還可以自己做個選擇文件的控件,詳情見參考文獻2,題目是“WPF:詳解創建Lookless自定義控件——文件選擇控件”,這篇文章的代碼我試過,可以使用,使用的時候記得把“FileSelector.cs”和“Themes”文件夾添加到工程中。作者看起來是個牛人,還是90后,自愧不如,已加關注。

 

參考文獻:1.http://hi.baidu.com/blues_master/item/5cec6fa96deaec9f15107395

2.http://www.cnblogs.com/mgen/archive/2012/01/10/2318269.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM