WPF Save DialogBox (для Windows 64) - PullRequest
       20

WPF Save DialogBox (для Windows 64)

0 голосов
/ 29 декабря 2011

Это похоже на старые посты на этом сайте, но я получаю сообщение об ошибке.Я хочу создать кнопку в 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();
        }
    }

Ответы [ 3 ]

0 голосов
/ 29 декабря 2011

Вы должны попытаться добавить уловку вокруг утверждения, чтобы получить лучшее представление о том, что происходит.

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

Также проверьте на ноль:

bool? result = saveFile.ShowDialog();

if (result != null &&  (result.HasValue && result.Value))
{
// code
}
0 голосов
/ 29 декабря 2011

Я бы создал диалоговое окно В случае.И у вас нет двух разных фильтров.

    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
        }
0 голосов
/ 29 декабря 2011

Вы устанавливаете недопустимый FilterIndex, который может иметь к этому отношение.

Нет второго фильтра в строке фильтра, как написано:

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

Попробуйте установить FilterIndex равным 1 или добавить другой фильтр в строку.

...