如何在标准控件中使用C#创建用户控件?

时间:2011-05-03 17:25:38

标签: c# .net winforms user-controls


我想在C#Visual Studio 2010中使用标准控件创建用户控件,在设计时保持独立。 问题是,当我创建这样的标准用户控件时:

public partial class MyUserControl: UserControl 
{
    public MyUserControl()
    {
        InitializeComponent();
    }
}

我在其上添加了2个按钮和1个文本框,它们成为UserControl的一部分 然后,当设计控件并将其添加到表单上时,我可以移动它,调整大小等,但我无法单击或选择Button1或Button2或TextBox1。
双击button1也不会创建button1_click事件,而是创建UserControl_Load事件 我希望实现类似于DataBindingNavigator控件的效果 - 您可以在其中单独单击每个按钮。

我知道我可以创建公共属性设置/返回用户控件按钮或文本框,但它们会出现在设计器中,不可能选择它们。

您认为可以使用标准控件吗?如果是的话,怎么做? 最好的问候,
mj82

4 个答案:

答案 0 :(得分:7)

你不能这样做,因为它没有意义。

假设您可以按照自己的要求进行操作 - 然后在表单上就可以移动用户控制按钮等 - 实际上是从表面本身设计用户控件。好的,但是那些也有用户控制的其他形式呢?这就是为什么一旦你删除用户控件就会修复它。您没有为每个表单实例设计用户控件,您设计控件然后对每个表单都是相同的。

点击按钮相同。您想要创建一个单击事件处理程序,但根据您要求的内容,将在表单中发生。但是按钮不在您的表单上,它位于您的用户控件上,它的click事件必须在用户控件中处理,而不是父表单。

用户控制背后的想法是不必做你所描述的。它们是预装配的构件。

DataBindinghNavigator只不过是一个工具条。如果您想要这种行为,只需使用工具条。

答案 1 :(得分:2)

通常,您可以将控制事件的处理程序放在UserControl中。如果您的UserControl需要通知某些事件的页面,那么将这些事件添加到您的UserControl。

如果您想要在页面上独立触发事件的单独控件,那么这些控件可能不应该是UserControl的一部分。

答案 2 :(得分:1)

您需要做的是在您的控件中创建事件触发器,然后在您的表单中创建事件处理程序,以便在单击“button_1”等时处理操作...您无法从表单设计视图创建事件,因为应该在控件中构建的东西。

答案 3 :(得分:0)

如果你到目前为止需要使用代码动态操作用户界面,你应该尝试研究MVC。 http://www.asp.net/mvc