2011-05-03 77 views
2


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

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

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

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

您认为使用标准控件有可能吗?如果是这样,该怎么做?
最好的问候,
mj82

+5

我认为你不明白用户控制背后的想法是诚实的。只要您将事件转发到控件本身的双击事件,就可以捕获按钮的事件。你想做这件事的原因不完全清楚。我只会说它是一个奇怪的决定。 – 2011-05-03 17:29:47

+0

正如我所说的,我想做一些类似于DataBindingNavigator的事情,每个按钮都可以移动或点击。 – mj82 2011-05-03 17:33:15

回答

6

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

假设你可以做你所要求的 - 然后在窗体上,你将能够移动用户控制按钮等 - 本质上设计用户控制从表面本身。好的,但所有其他形式也有这种用户控制?这就是为什么一旦你放弃用户控制它是固定的。您不必为每个表单实例设计一个用户控件,您可以设计控件,然后每个表单都是相同的。

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

用户控件背后的想法是不必做你所描述的。他们是预先组装好的积木。

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

+0

那么,我接受答案,这是不可能的 - 除非有人找到解决方案;) – mj82 2011-05-03 19:46:49

1

通常情况下,你会把你的处理程序为您的用户控件中的控件的事件。如果您的UserControl需要通知某些事件的页面,则将这些事件添加到您的UserControl。

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

1

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