Using postmessage to interoperate?
-
What I would really like to do is tell the parent control to send a button click to a child control. In C++ it would be this pParent->SendMessage( WM_COMMAND, MAKEWPARAM(ID_Of_CHILD, BN_CLICKED) ); Can you help me with this syntax or point me towards reading material? Below is my best effort. Thanks. using System.Runtime.InteropServices; public class Form1 : System.Windows.Forms.Form { [DllImport("user32.dll")] protected static extern int PostMessage( IntPtr wnd, uint Msg, IntPtr wParam, IntPtr lParam); . . . private void button1_Click(object sender, System.EventArgs e) { * #define BN_CLICKED 0 #define BN_PAINT 1 #define BN_HILITE 2 #define BN_UNHILITE 3 #define BN_DISABLE 4 #define BN_DOUBLECLICKED 5 */ const uint WM_COMMAND = 0x0111; const uint BN_CLICKED = 0x0000; PostMessage((IntPtr)BusinessRules.Handle, WM_COMMAND, (IntPtr)BN_CLICKED, (IntPtr)IntPtr.Zero); } private void BusinessRules_Click(object sender, System.EventArgs e) { System.Windows.Forms.MessageBox.Show("I was clicked"); }
-
What I would really like to do is tell the parent control to send a button click to a child control. In C++ it would be this pParent->SendMessage( WM_COMMAND, MAKEWPARAM(ID_Of_CHILD, BN_CLICKED) ); Can you help me with this syntax or point me towards reading material? Below is my best effort. Thanks. using System.Runtime.InteropServices; public class Form1 : System.Windows.Forms.Form { [DllImport("user32.dll")] protected static extern int PostMessage( IntPtr wnd, uint Msg, IntPtr wParam, IntPtr lParam); . . . private void button1_Click(object sender, System.EventArgs e) { * #define BN_CLICKED 0 #define BN_PAINT 1 #define BN_HILITE 2 #define BN_UNHILITE 3 #define BN_DISABLE 4 #define BN_DOUBLECLICKED 5 */ const uint WM_COMMAND = 0x0111; const uint BN_CLICKED = 0x0000; PostMessage((IntPtr)BusinessRules.Handle, WM_COMMAND, (IntPtr)BN_CLICKED, (IntPtr)IntPtr.Zero); } private void BusinessRules_Click(object sender, System.EventArgs e) { System.Windows.Forms.MessageBox.Show("I was clicked"); }
Unless I'm missing something, just call PerformClick():
private void button1_Click(object sender, System.EventArgs e) {
BusinessRules.PerformClick();
}Cheers, Julian Program Manager, C# This posting is provided "AS IS" with no warranties, and confers no rights.
-
Unless I'm missing something, just call PerformClick():
private void button1_Click(object sender, System.EventArgs e) {
BusinessRules.PerformClick();
}Cheers, Julian Program Manager, C# This posting is provided "AS IS" with no warranties, and confers no rights.