By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
431,795 Members | 1,216 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 431,795 IT Pros & Developers. It's quick & easy.

Winforms User COntrol

P: n/a
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.UserControl 1.msButtonClicked);
//EventHandler handler = new EventHandler(a);
//userControl11.Click += handler;
}
Regards
Saravanan K

Jul 29 '06 #1
Share this Question
Share on Google+
2 Replies


P: n/a
wrong newsgroup, try the C# newsgroup:

http://msdn.microsoft.com/newsgroups...nguages.csharp

they can prob help you out
--
-iwdu15
Jul 30 '06 #2

P: n/a
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
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.UserControl 1.msButtonClicked);
//EventHandler handler = new EventHandler(a);
//userControl11.Click += handler;
}
Regards
Saravanan K

Jul 31 '06 #3

This discussion thread is closed

Replies have been disabled for this discussion.