Wenn man in einer ConsoleApplication OpenFileDialog.ShowDialog() aufruft, ist dieser mitnichten modal zur Console. Man benötigt das WindowHandle der Console, um es dazu zu bringen.
using System;
using System.Diagnostics;
using System.Windows.Forms;
public class Program
{
private static CommandLineWindow s_Window = new CommandLineWindow();
[STAThread()]
public static void Main(String[] args)
{
using(OpenFileDialog ofd = new OpenFileDialog())
{
//funktioniert nicht:
//ofd.ShowDialog();
//funktioniert:
ofd.ShowDialog(s_Window);
}
}
}
internal class CommandLineWindow : IWin32Window
{
#region IWin32Window Members
public IntPtr Handle
{
get
{
return (Process.GetCurrentProcess().MainWindowHandle);
}
}
#endregion
}
3 Kommentare zum Snippet