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;
};
}