Как заставить форму ждать, пока диалоговое окно свойств не будет закрыто? С#
Привет! Я создаю приложение типа проводника, и все шло хорошо - пока я не понял, что мне нужно добавить меню свойств..
Итак, я использовал этот код:
[DllImport("shell32.dll", CharSet = CharSet.Auto)] static extern bool ShellExecuteEx(ref SHELLEXECUTEINFO lpExecInfo); [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] public struct SHELLEXECUTEINFO { public int cbSize; public uint fMask; public IntPtr hwnd; [MarshalAs(UnmanagedType.LPTStr)] public string lpVerb; [MarshalAs(UnmanagedType.LPTStr)] public string lpFile; [MarshalAs(UnmanagedType.LPTStr)] public string lpParameters; [MarshalAs(UnmanagedType.LPTStr)] public string lpDirectory; public int nShow; public IntPtr hInstApp; public IntPtr lpIDList; [MarshalAs(UnmanagedType.LPTStr)] public string lpClass; public IntPtr hkeyClass; public uint dwHotKey; public IntPtr hIcon; public IntPtr hProcess; } private const int SW_SHOW = 5; private const uint SEE_MASK_INVOKEIDLIST = 12; public static bool ShowFileProperties(string Filename) { SHELLEXECUTEINFO info = new SHELLEXECUTEINFO(); info.cbSize = System.Runtime.InteropServices.Marshal.SizeOf(info); info.lpVerb = "properties"; info.lpFile = Filename; info.nShow = SW_SHOW; info.fMask = SEE_MASK_INVOKEIDLIST; return ShellExecuteEx(ref info); }
Теперь он работает для отображения свойств файлов, но позволяет пользователю возобновить фокус с исходной формой.
Как я могу дать меню свойств, которое открывается кодом при условии того же поведения, что и
ShowDialog()
?Краткое изложение моего вопроса:
Как сделать так, чтобы родительская форма приостановилась до тех пор, пока не появится форма свойств, которая открывается с помощью приведенного выше кода, как это было бы, если бы я открыл универсальную форму с помощью
ShowDialog()
?Спасибо :)
Что я уже пробовал:
Я предоставил код выше - я действительно не знаю, что нужно изменить, чтобы добавить желаемое поведение.
Richard Deeming
NB: Окно свойств не является модальным в Проводнике Windows. Если вы пытаетесь имитировать поведение проводника, вам не следует делать окно свойств модальным. :)