C#-如何通过选中复选框以编程方式创建文本框?

C#-如何通过选中复选框以编程方式创建文本框?,c#,winforms,C#,Winforms,我有一个表单和一个按钮。单击按钮,然后以编程方式创建一个面板,其中包含一个复选框和一个文本框;但是对于文本框而言,可见为假。 如果我选中了复选框,我想将我的文本框更改为Visible=true。 有人能帮我吗 public void CreateSlide(string name, string title, string desc) { var PanelOrder = new Panel() { Name = name, Size = n

我有一个
表单
和一个
按钮
。单击
按钮
,然后以编程方式创建一个
面板
,其中包含一个
复选框
和一个
文本框
;但是对于
文本框
而言,
可见
。 如果我选中了
复选框
,我想将我的
文本框
更改为
Visible=true
。 有人能帮我吗

public void CreateSlide(string name, string title, string desc) 
{
    var PanelOrder = new Panel() 
    { 
        Name = name,
        Size = new Size(395, 33),
        BorderStyle = BorderStyle.FixedSingle,
        Location = new Point(203, 157)
    };

    var ckOrder = new CheckBox()
    {
        Name = name,
        Text = "Order",
        Size = new Size(102, 21),
        Location = new Point(3, 5),
        FlatStyle = FlatStyle.Flat,
        Font = new Font("Segoe UI", 10, FontStyle.Bold)
    };

    ckOrder.CheckedChanged += new EventHandler(this.ckBoxOrder_CheckedChanged);

    var TxtQty = new TextBox
    {
        Name = name,
        Text = "1",
        Visible = false,
        BorderStyle = BorderStyle.FixedSingle,
        Size = new Size(100, 25),
        Location = new Point(290, 3)
    };

    PanelOrder.Controls.Add(ckOrder);
    PanelOrder.Controls.Add(TxtQty);
}
相关的事件处理程序是

private void ckBoxOrder\u CheckedChanged(对象发送方,事件参数e)
{
if(((复选框)发送方).Checked==true)
{

//??TxtQty.Visible=true;//您需要在创建文本框的函数范围之外为文本框声明一个变量(引用),然后可以将其设置为Visible true/false。或者(较慢)可以枚举表单(或面板)中的所有控件,找到您的文本框,并将其设置为visible true/false。

您可以尝试使用lambda,以便将所有相关代码保存在
CreateSiled
中:

public void CreateSlide(string name, string title, string desc) {
  var PanelOrder = new Panel() { 
    Name = name,
    Size = new Size(395, 33),
    BorderStyle = BorderStyle.FixedSingle,
    Location = new Point(203, 157),
    Parent = this // <- Put PanelOrder panel on the form
  };

  var ckOrder = new CheckBox() {
    Name = name,
    Text = "Order",
    Size = new Size(102, 21),
    Location = new Point(3, 5),
    FlatStyle = FlatStyle.Flat,
    Font = new Font("Segoe UI", 10, FontStyle.Bold),
    Parent = PanelOrder // <- Put ckOrder on the PanelOrder panel
  };

  var TxtQty = new TextBox() {
    Name = name,
    Text = "1",
    Visible = false,
    BorderStyle = BorderStyle.FixedSingle,
    Size = new Size(100, 25),
    Location = new Point(290, 3),
    Parent = PanelOrder // <- Put TxtQty on the PanelOrder panel
  };

  // lambda function
  ckOrder.CheckedChanged += (s, e) => {
    TxtQty.Visible = ckOrder.Checked;
  };
}
public void CreateSlide(字符串名称、字符串标题、字符串描述){
var PanelOrder=new Panel(){
Name=Name,
尺寸=新尺寸(395,33),
BorderStyle=BorderStyle.FixedSingle,
位置=新点(203157),

Parent=this//IN ckBoxOrder\u checked changed您可能希望按名称查找文本框。然后您可以使用它。您能给我举个简单的例子吗?类似于
this.Controls.find(“您的文本框名称”)。Visible=true
public void CreateSlide(string name, string title, string desc) {
  var PanelOrder = new Panel() { 
    Name = name,
    Size = new Size(395, 33),
    BorderStyle = BorderStyle.FixedSingle,
    Location = new Point(203, 157),
    Parent = this // <- Put PanelOrder panel on the form
  };

  var ckOrder = new CheckBox() {
    Name = name,
    Text = "Order",
    Size = new Size(102, 21),
    Location = new Point(3, 5),
    FlatStyle = FlatStyle.Flat,
    Font = new Font("Segoe UI", 10, FontStyle.Bold),
    Parent = PanelOrder // <- Put ckOrder on the PanelOrder panel
  };

  var TxtQty = new TextBox() {
    Name = name,
    Text = "1",
    Visible = false,
    BorderStyle = BorderStyle.FixedSingle,
    Size = new Size(100, 25),
    Location = new Point(290, 3),
    Parent = PanelOrder // <- Put TxtQty on the PanelOrder panel
  };

  // lambda function
  ckOrder.CheckedChanged += (s, e) => {
    TxtQty.Visible = ckOrder.Checked;
  };
}