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




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

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

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

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

你认为可以用标准控制吗?如果是,如何做到这一点
致以最良好的问候,
mj82

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

假设你可以按照你的要求去做——然后在表单上你可以移动用户控件按钮等等——本质上是在from surface本身上设计用户控件。好吧,但其他所有也有该用户控件的表单呢?这就是为什么一旦您放弃用户控件,它就被修复了。你没有为每个表单实例设计一个用户控件,你设计了控件,然后它对每个表单都是一样的

与单击按钮相同。你想创建一个点击事件处理程序,但根据你的要求,这会在表单中发生。但按钮不在你的表单上,它在你的用户控件上,它的点击事件必须在用户控件中处理,而不是在父表单中。

用户控件背后的理念是不必做你描述的事情。它们是预先组装好的构建块。

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

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

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

您需要做的是在控件中创建事件触发器,然后在窗体中创建事件处理程序,以在单击"button_1"时处理操作等。您不能从窗体设计视图创建事件,因为这是应该内置到控件中的内容。

如果您需要用代码动态操作用户界面,那么您应该尝试研究MVC。http://www.asp.net/mvc

最新更新