C#用户控件

问题描述:

如何在父控件添加控件 我使用C#Windows应用程序C#用户控件

我有一个用户控制,包括组框和复选框组框,控制被启用或检查的检查属性的基础上禁用方框 现在在其他应用程序中使用此控件时 如何在组框中添加控件? ,以便它们可以启用o在我的应用程序中禁用

+0

你能发表一些你到目前为止的样本吗? – mwright 2010-07-08 16:38:57

+0

OK 这里是我的代码 在用户控件我有一个组框和一个复选框 然后我写了下面的代码 的foreach控制CTRL this.groupbox1.controls { 如果(CTRL!= this.checkbox1) { ctrl.enabled = this.checkbox1.checked; } } 这是我的控制现在我想用在其他应用 我想这个控件知道我可以添加控件(面板,groupboxes)这个已经取得控制 – MehaJain 2010-07-08 16:57:11

+0

如果你想简单的添加额外的控制到用户控件本身,创建一个公共方法(类似于我的答案的编辑部分),它将控件添加到用户控件(例如:this.Controls.Add)而不是容器。然而,意识到如果没有某种使用它们的属性的代码,添加的控件将很难被使用,并反过来使它成为调用代码的属性或方法。 – JYelton 2010-07-08 17:02:49

我最终创建了一个用户控件,其中我在复选框中添加了一个组框。 因此,基于复选框启用和禁用组框。

是否想通过代码(以编程方式)或使用设计器添加控件?

如果你想一个控件添加到组框,面板或其他容器,你首先创建控件:

Label myLabel = new Label(); 
myLabel.Name = "Name"; 
myLabel.Text = "Example"; 
myLabel.Location = new Point(10, 10); 

然后,用容器的Controls属性将其添加到容器中,通过添加方法:

myGroupBox.Controls.Add(myLabel); 

最后,您可以使用复选框的状态来启用/禁用整个容器(及其所有子控件)。您可能需要使用一个布尔值的地方,但是这是基本的想法:

在CheckChanged事件的复选框,这样做:

myGroupBox.Enabled = myCheckBox.Checked; 

或者逆,这取决于你如何想启用状态。

编辑:

从您的评论,这听起来像你想更多的控件添加到设计时间后,现有用户的控制。您需要使用公共方法提供该功能。

public void AddControl(Control controlToAdd) 
{ 
    myGroupBox.Controls.Add(controlToAdd); 
} 

基本上暴露用户控件容器的Controls.Add到与用户控件交互的代码。

我希望这是有帮助的。

编辑2:

以下是您所发布注释代码:

foreach(Control ctrl in this.groupbox1.Controls) 
{ 
    if (ctrl != this.checkbox1) 
    { 
     ctrl.Enabled = this.checkbox1.Checked; 
    } 
} 

这遍历所有控件,并启用或禁用所有的人除了checkbox1基于checkbox1的检查州。

首先,如果checkbox1不是groupbox1中的子控件,则不需要if语句来确保当前控件不是 checkbox1。它永远不会,因为foreach只是迭代groupbox1的子控件。只要checkbox1在groupbox1之外,它就会在迭代中被忽略。

其次,如果您只是启用或禁用整个groupbox,则更快更容易维护。它内的所有控件都将继承启用/禁用状态。使用你的控制名称的代码将是:

groupbox1.Enabled = checkbox1.Checked; 

我希望我正确理解你的问题。

+0

感谢您的回复 以及我知道如何添加控件 ,我实际上做了一个usercontrol有一个groupbox和一个复选框 现在我想在我的应用程序中使用这个usercontrol 和那里我想要在我的usercontrol中添加控件 是否真的有可能? – MehaJain 2010-07-08 16:51:52

+0

听起来好像您想在设计时间之后(即以编程方式)将控件添加到用户控件中。您需要在用户控件中提供一种机制,允许您为其添加其他控件。我将用一个例子编辑我的答案。 – JYelton 2010-07-08 16:55:06

+0

你是否明白了 bt你能不能告诉我该怎么办 我是一个新程序员 我该怎么办? – MehaJain 2010-07-08 17:00:06