0

これは、このサイトの古い投稿と似ていますが、エラー メッセージが表示され続けます。ダイアログボックスを開き、後日読むためにテキストファイルを保存するボタンをC#WPFで作成したいと考えています。このコードは Windows 32 では機能しますが、Windows 64 ではクラッシュします。このコードを変更して、両方のシステムで機能させるにはどうすればよいですか? 私はプログラミングの初心者です。

Microsoft.Win32.SaveFileDialog saveFile = new Microsoft.Win32.SaveFileDialog(); //throws error message here

    private void savebutton_Click(object sender, RoutedEventArgs e)
    {
        saveFile.FileName = Class1.stringjobnum; 
        saveFile.Filter = "CCurtain (*.cur)|*.cur"; 
        saveFile.FilterIndex = 2; 
        saveFile.InitialDirectory = "T:\\Tank Baffle Curtain Calculator\\SavedTanks"; 
        saveFile.OverwritePrompt = true; 

        bool? result = saveFile.ShowDialog();

        if (result.HasValue && result.Value)
        {
            clsSaveFile.s_FilePath = saveFile.FileName;
            int iDotLoc = clsSaveFile.s_FilePath.LastIndexOf('.');


            string strExtTest = clsSaveFile.s_FilePath.Substring(iDotLoc);
            if (strExtTest != ".cur")
                clsSaveFile.s_FilePath += ".cur";
            FileInfo sourceFile = new FileInfo(clsSaveFile.s_FilePath);
            clsSaveFile.saveFile();
        }
    }
4

3 に答える 3

0

イベントでダイアログボックスを作成します。また、2 つの異なるフィルターはありません。

    private void savebutton_Click(object sender, RoutedEventArgs e)
    {
        Microsoft.Win32.SaveFileDialog saveFile = new Microsoft.Win32.SaveFileDialog();
        saveFile.FileName = Class1.stringjobnum; 
        saveFile.Filter = "CCurtain|*.cur";; 
        saveFile.FilterIndex = 1; 
        saveFile.InitialDirectory = "T:\\Tank Baffle Curtain Calculator\\SavedTanks"; 
        saveFile.OverwritePrompt = true; 

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

        // Process open file dialog box results
        if (result == true)
        {
            string filename = saveFile.FileName;
            // are you sure you need to check the extension.
            // if so extension is a a fileinfo property
        }
于 2011-12-28T21:37:38.967 に答える
0

無効な FilterIndex を設定しています。これは何か関係がある可能性があります。

次のように、フィルター文字列に 2 番目のフィルターはありません。

"CCurtain (*.cur)|*.cur"

FilterIndex を 1 に設定するか、別のフィルターを文字列に追加してみてください。

于 2011-12-28T21:06:51.680 に答える
0

何が起こっているのかをよりよく理解するために、文の周りにキャッチを追加してみてください。

try
{ 
    code here
}
catch (Exception ex)
{
   ex.message contains the info
}

また、null を確認します。

bool? result = saveFile.ShowDialog();

if (result != null &&  (result.HasValue && result.Value))
{
// code
}
于 2011-12-28T21:08:08.527 に答える