|
web
newsgroups
|
|||||||||||||||||||||||
|
|||||||||||||||||||||||
Winforms User COntrolIam creating a user control with 2 buttons, And i have a public static variable i'll be changing the value of the variable in the button click events. When i consume the user control in the winforms application how to automatically get the value of the public variable on click of the user control. user control code using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Data; using System.Text; using System.Windows.Forms; namespace WindowsControlLibrary2 { public partial class UserControl1 : UserControl { public static string msButtonClicked; public UserControl1() { InitializeComponent(); } public UserControl1(Delegate p) { InitializeComponent(); } private void Button1_Click(object sender, EventArgs e) { msButtonClicked = "Val1"; } private void Button2_Click(object sender, EventArgs e) { msButtonClicked = "Val2"; } private void Button3_Click(object sender, EventArgs e) { msButtonClicked = "Val3"; } private void Button4_Click(object sender, EventArgs e) { msButtonClicked = "Val4"; } } } consuming page i want value to be popped up in userControl11_click event private void userControl11_Load(object sender, EventArgs e) { MessageBox.Show(WindowsControlLibrary2.UserControl1.msButtonClicked); //EventHandler handler = new EventHandler(a); //userControl11.Click += handler; } Regards Saravanan K wrong newsgroup, try the C# newsgroup:
http://msdn.microsoft.com/newsgroups/default.aspx?dg=microsoft.public.dotnet.languages.csharp they can prob help you out -- -iwdu15 It sounds like you are breaking encapsulation. As an alternative, I would
recommend that you have a single public property against which you program your consuming classes. Perhaps you could just override .Text and return a private string msButtonClicked (which should not be static). Public fields are typically considered bad OOP practice. Alternatively, you could just have the .Text accessor check the value of the internal boxes and return the appropriate string, thereby eliminating the need for msButtonClicked as a string anyway. On property Set, you can set the private string and click the appropriate internal button. All of the internal buttons should be scoped private (or protected), not public to maintain the encapsulation. For your messaging back to the consuming form, your control should raise a custom event (perhaps "Changed") whenever an internal button is clicked. The form would add a handler to the user control's Changed event rather than any internal event handlers. Once you make these changes, your form will only need to be concerned with the following: .Text (property) and .Changed (event). Everything else will be encapsulated inside of the user control. Jim Wooley http://devauthority.com/blogs/jwooley/default.aspx Show quoteHide quote > Hello there, > > Iam creating a user control with 2 buttons, And i have a public > static variable i'll be changing the value of the variable in the > button click events. > > When i consume the user control in the winforms application how to > automatically get the value of the public variable on click of the > user control. > > user control code > > using System; > using System.Collections.Generic; > using System.ComponentModel; > using System.Drawing; > using System.Data; > using System.Text; > using System.Windows.Forms; > namespace WindowsControlLibrary2 > { > public partial class UserControl1 : UserControl > { > public static string msButtonClicked; > public UserControl1() > { > InitializeComponent(); > } > public UserControl1(Delegate p) > { > InitializeComponent(); > } > private void Button1_Click(object sender, EventArgs e) > { > msButtonClicked = "Val1"; > } > private void Button2_Click(object sender, EventArgs e) > { > msButtonClicked = "Val2"; > } > private void Button3_Click(object sender, EventArgs e) > { > msButtonClicked = "Val3"; > } > private void Button4_Click(object sender, EventArgs e) > { > msButtonClicked = "Val4"; > } > } > } > consuming page > i want value to be popped up in userControl11_click event > private void userControl11_Load(object sender, EventArgs e) > { > MessageBox.Show(WindowsControlLibrary2.UserControl1.msButtonClicked); > //EventHandler handler = new EventHandler(a); > //userControl11.Click += handler; > } > Regards > Saravanan K
Equivalent of DataGridTableStyle for DataGridView?
Date and Time Calculation. Listview columnheader question Addhandler in a Multithreading class and the events raised in seperate threads, how to get to the ca How Do I Create an Entry Point for a DLL? How to use a datagridview to add/update/edit rows Windows Service - Does not work outside of debug !! blue mask over icon How to toggle the RTS/DTS line devenv command line |
|||||||||||||||||||||||