C#用户控件

C#用户控件,c#,winforms,user-controls,C#,Winforms,User Controls,如何在父控件中添加控件 我正在使用C#windows应用程序 我有一个用户控件,包括组框和复选框组框,控件根据复选框的checked属性启用或禁用 现在在其他应用程序中使用此控件时 如何在组框中添加控件?? 以便在我的应用程序中启用或禁用控件您想通过代码(编程)或使用设计器添加控件吗 如果要将控件添加到groupbox、panel或其他容器,请首先创建控件: Label myLabel = new Label(); myLabel.Name = "Name"; myLabel.Text = "E

如何在父控件中添加控件 我正在使用C#windows应用程序

我有一个用户控件,包括组框和复选框组框,控件根据复选框的checked属性启用或禁用 现在在其他应用程序中使用此控件时 如何在组框中添加控件??
以便在我的应用程序中启用或禁用控件

您想通过代码(编程)或使用设计器添加控件吗

如果要将控件添加到groupbox、panel或其他容器,请首先创建控件:

Label myLabel = new Label();
myLabel.Name = "Name";
myLabel.Text = "Example";
myLabel.Location = new Point(10, 10);
然后,通过add方法,使用容器的Controls属性将其添加到容器中:

myGroupBox.Controls.Add(myLabel);
最后,您可以使用复选框的状态来启用/禁用整个容器(及其所有子控件)。您可能希望在某个地方使用布尔值,但这是基本思想:

在复选框的CheckChanged事件中,执行以下操作:

myGroupBox.Enabled = myCheckBox.Checked;
或相反,取决于您希望启用状态的方式

编辑:

从您的评论中可以看出,您似乎希望在设计时之后向现有用户控件添加其他控件。您需要在公共方法中提供该功能

public void AddControl(Control controlToAdd)
{
    myGroupBox.Controls.Add(controlToAdd);
}
基本上公开用户控件容器的
控件。将
添加到与用户控件交互的代码中

我希望这是有帮助的

编辑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;

我希望我正确理解了您的问题。

您希望通过代码(编程)或使用设计器添加控件吗

如果要将控件添加到groupbox、panel或其他容器,请首先创建控件:

Label myLabel = new Label();
myLabel.Name = "Name";
myLabel.Text = "Example";
myLabel.Location = new Point(10, 10);
然后,通过add方法,使用容器的Controls属性将其添加到容器中:

myGroupBox.Controls.Add(myLabel);
最后,您可以使用复选框的状态来启用/禁用整个容器(及其所有子控件)。您可能希望在某个地方使用布尔值,但这是基本思想:

在复选框的CheckChanged事件中,执行以下操作:

myGroupBox.Enabled = myCheckBox.Checked;
或相反,取决于您希望启用状态的方式

编辑:

从您的评论中可以看出,您似乎希望在设计时之后向现有用户控件添加其他控件。您需要在公共方法中提供该功能

public void AddControl(Control controlToAdd)
{
    myGroupBox.Controls.Add(controlToAdd);
}
基本上公开用户控件容器的
控件。将
添加到与用户控件交互的代码中

我希望这是有帮助的

编辑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中的代码。我有一个组框和一个复选框,然后我在this.groupbox1.controls{if(ctrl!=this.checkbox1){ctrl.enabled=this.checkbox1.checked;}中为每个控件ctrl编写了以下代码这是我的控件现在我想在其他应用程序中使用此控件我想知道如何将控件(面板、组框)添加到此已制作的控件如果只想将其他控件添加到用户控件本身,请创建一个公共方法(类似于我答案中编辑部分中的方法)将控件添加到用户控件(例如:
this.controls.Add
)而不是容器中。但是,要意识到,如果没有某种代码利用添加的控件的属性,那么添加的控件将很难使用,从而使其成为调用代码的属性或方法。这是用户控件的一个有趣特性,并且修改了默认设计器行为;我不知道这是可以做到的。像往常一样,感谢汉斯提供的好信息。(虽然我仍然不确定它是否适用于这个问题。)你能发布一些到目前为止的示例吗?好的,这是我在usercontrol中的代码。我有一个组框和一个复选框,然后我在this.groupbox1.controls{if(ctrl!=this.checkbox1){ctrl.enabled=this.checkbox1.checked;}中为每个控件编写了以下代码这是我的控件现在我想在其他应用程序中使用此控件我想知道如何将控件(面板、组框)添加到此已制作的控件如果您只想将其他控件添加到用户控件本身,请创建