C#用户控件
如何在父控件添加控件 我使用C#Windows应用程序C#用户控件
我有一个用户控制,包括组框和复选框组框,控制被启用或检查的检查属性的基础上禁用方框 现在在其他应用程序中使用此控件时 如何在组框中添加控件? ,以便它们可以启用o在我的应用程序中禁用
我最终创建了一个用户控件,其中我在复选框中添加了一个组框。 因此,基于复选框启用和禁用组框。
是否想通过代码(以编程方式)或使用设计器添加控件?
如果你想一个控件添加到组框,面板或其他容器,你首先创建控件:
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;
我希望我正确理解你的问题。
感谢您的回复 以及我知道如何添加控件 ,我实际上做了一个usercontrol有一个groupbox和一个复选框 现在我想在我的应用程序中使用这个usercontrol 和那里我想要在我的usercontrol中添加控件 是否真的有可能? – MehaJain 2010-07-08 16:51:52
听起来好像您想在设计时间之后(即以编程方式)将控件添加到用户控件中。您需要在用户控件中提供一种机制,允许您为其添加其他控件。我将用一个例子编辑我的答案。 – JYelton 2010-07-08 16:55:06
你是否明白了 bt你能不能告诉我该怎么办 我是一个新程序员 我该怎么办? – MehaJain 2010-07-08 17:00:06
你能发表一些你到目前为止的样本吗? – mwright 2010-07-08 16:38:57
OK 这里是我的代码 在用户控件我有一个组框和一个复选框 然后我写了下面的代码 的foreach控制CTRL this.groupbox1.controls { 如果(CTRL!= this.checkbox1) { ctrl.enabled = this.checkbox1.checked; } } 这是我的控制现在我想用在其他应用 我想这个控件知道我可以添加控件(面板,groupboxes)这个已经取得控制 – MehaJain 2010-07-08 16:57:11
如果你想简单的添加额外的控制到用户控件本身,创建一个公共方法(类似于我的答案的编辑部分),它将控件添加到用户控件(例如:this.Controls.Add)而不是容器。然而,意识到如果没有某种使用它们的属性的代码,添加的控件将很难被使用,并反过来使它成为调用代码的属性或方法。 – JYelton 2010-07-08 17:02:49