.ShowDialog没有创建模态形式

时间:2014-12-22 16:03:53

标签: c# modal-dialog messagebox showdialog

使用C#.Net 4

我的应用程序在启动时加载音频文件,如果音频文件的路径无效,我们会警告用户。我正在进行改进,允许用户找到文件,删除关联或继续保持不变。

以前我使用MessageBox来执行此操作,并且效果很好,但是需要自定义按钮意味着我必须创建自定义对话框。

当我调用此自定义对话框时,它不会阻止主窗体上的操作,您仍然可以单击菜单,按钮,拖放等等...在您单击之前,MessageBox不允许与主窗体交互单击确定或取消以关闭对话框。我已将两种方法都留在以下方法中进行演示。

因此,调用MessageBox.Show会停止对主窗体的所有操作,使用.ShowDialog()调用我的自定义窗体不会,我做错了什么?

private void PopulateWaveformAudio()
    {
        if (_sequence.GetAllMedia().Any())
        {
            IMediaModuleInstance media = _sequence.GetAllMedia().First();
            Audio audio = media as Audio;
            toolStripMenuItem_removeAudio.Enabled = true;
            if (audio.MediaExists)
            {
                TimelineControl.Audio = audio;
                toolStripButton_AssociateAudio.ToolTipText = string.Format("Associated Audio: {0}",
                    Path.GetFileName(audio.MediaFilePath));
            }
            else
            {
                InvalidAudioPathDialog result = new InvalidAudioPathDialog(audio.MediaFilePath);
                result.ShowDialog();

                switch(result.InvalidAudioDialogResult)
                {
                    case InvalidAudioDialogResult.KeepAudio:
                        break;
                    case InvalidAudioDialogResult.RemoveAudio:
                        break;
                    case InvalidAudioDialogResult.LocateAudio:
                        break;

                }

                string message = String.Format("Audio file not found on the path:\n\n {0}\n\nPlease Check your settings/path.",
                    audio.MediaFilePath);
                Logging.Warn(message);
                MessageBox.Show(message, @"Missing audio file",MessageBoxButtons.OK,MessageBoxIcon.Warning);
            }

        }

    }

0 个答案:

没有答案
相关问题