2016-11-25 108 views
-2

當執行下面的代碼時,我希望彈出一個警告對話框,它會詢問我是否確定要覆蓋文件,但是沒有彈出窗口。有誰知道一個簡單的方法來實現它?無需創建自己的自定義窗口導出一個.txt文件,不會出現覆蓋警告

XAML:

<Grid> 
    <TextBox x:Name="name" Text="hi" /> 
    <Button x:Name="create_File" Click="create_File_Click" Content="make the notepad" Width="auto"/> 
    </Grid> 

C#:

public partial class MainWindow : Window 
{ 
    public MainWindow() 
    { 
     InitializeComponent(); 
    } 

public void createFile() 
    { 

    string text_line = string.Empty; 
    string exportfile_name = "C:\\" + name.Text + ".txt"; 

    System.IO.StreamWriter objExport; 
    objExport = new System.IO.StreamWriter(exportfile_name); 

    string[] TestLines = new string[2]; 
       TestLines[0] = "****TEST*****"; 
       TestLines[1] = "successful"; 


       for (int i = 0; i < 2; i++) 
       { 
        text_line = text_line + TestLines[i] + "\r\n"; 
        objExport.WriteLine(TestLines[i]); 

       } 
       objExport.Close(); 
       MessageBox.Show("Wrote File"); 

    } 
    private void create_File_Click(object sender, RoutedEventArgs e) 
    { 
     createFile(); 
    } 
} 

UPDATE我沒有使用SaveFileDialog

,現在我和它我的工作方式也是如此......感謝答案,這裏是我現在擁有的:

public void createFile() 
    { 
     string text_line = string.Empty; 
     string export_filename = name.Text; 


     Microsoft.Win32.SaveFileDialog dlg = new Microsoft.Win32.SaveFileDialog(); 
     dlg.FileName = export_filename; // Default file name 
     dlg.DefaultExt = ".text"; // Default file extension 
     dlg.Filter = "Text documents (.txt)|*.txt"; // Filter files by extension 

     // Show save file dialog box 
     Nullable<bool> result = dlg.ShowDialog(); 


     // save file 
     System.IO.StreamWriter objExport; 
     objExport = new System.IO.StreamWriter(dlg.FileName); 

     string[] TestLines = new string[2]; 
     TestLines[0] = "****TEST*****"; 
     TestLines[1] = "successful"; 



     for (int i = 0; i < 2; i++) 
     { 
      text_line = text_line + TestLines[i] + "\r\n"; 
      objExport.WriteLine(TestLines[i]); 

     } 
     objExport.Close(); 


    } 


    private void create_File_Click(object sender, RoutedEventArgs e) 
    { 
     createFile(); 
    } 

} 
+1

爲什麼你會希望出現一個確認對話框休息嗎?你需要自己處理這個邏輯......另外,你需要將你的流包裝在一個「使用」塊中 – musefan

+0

你爲什麼期望?您正在使用'StreamWriter'直接寫入文件,這只是一個類而不是UI元素。 'SaveFileDialog'將在選擇現有文件時要求確認,但對於'StreamWriter',這根本沒有任何意義(否則沒有UI的應用程序永遠不能使用'StreamWriter')。 – bassfader

+0

@ 2以上,嗯好吧好吧謝謝你的答案 – JohnChris

回答

2

1)檢查文件是否存在(File.Exists

2)如果是的話,顯示有是一個MessageBox(MessageBox.Show),並沒有選項。

3)檢查,如果用戶點擊是,然後才執行代碼的

+0

@感謝給我一種方法來做到這一點,我用的方法,但SaveFileDialog更有意義,只是沒有' t知道它 – JohnChris

1
DialogResult dialogResult = File.Exists(exportfile_name) 
    ? MessageBox.Show(null, "Sure?", "Some Title", MessageBoxButtons.YesNo) 
    : DialogResult.Yes; 

if (dialogResult == DialogResult.Yes) 
{ 
    // save file 
} 
+0

這是美麗的,謝謝另一種方式來做到這一點! – JohnChris