如何通过单击复选框更改标签文本(数字)?
How to make label text(number) change by clicking checkbox?
老师给我们布置了作业。复选框是学生可以选择的课程,其下方的标签是剩余的空闲位置。基本上每次课程(复选框)选择时,在标签处连接到它的数字应该减少负 1。如果人取消选中它,数字应该 return 到基本。
对不起我的英语,我希望它是可以理解的。
在这个例子中,我选择了每个 checkboxs
的 checkedchanged
属性,这是每个 checkboxs
中的函数。您可以根据需要更改 0
或 ++
或 --
来更改初始值或更改后的值。您只需将每个函数的两个 if 条件添加到您的函数,并更改其中的名称以反映标签的名称。
public partial class Form1 : Form
{
int counter=0;
public Form1()
{
InitializeComponent();
label1.Text = counter.ToString();
}
private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
if (checkBox1.Checked)
{
counter++;
label1.Text = counter.ToString();
}
if (!checkBox1.Checked)
{
counter--;
label1.Text = counter.ToString();
}
}
private void checkBox3_CheckedChanged(object sender, EventArgs e)
{
if (checkBox3.Checked)
{
counter++;
label1.Text = counter.ToString();
}
if (!checkBox3.Checked)
{
counter--;
label1.Text = counter.ToString();
}
}
private void checkBox2_CheckedChanged(object sender, EventArgs e)
{
if (checkBox2.Checked)
{
counter++;
label1.Text = counter.ToString();
}
if (!checkBox2.Checked)
{
counter--;
label1.Text = counter.ToString();
}
}
}
您可以尝试为每个复选框订阅 CheckedChanged
事件。并使用 Convert.ToInt32 Method 获取标签中的值。然后通过swicth statement
.
判断选中的checkbox
public Form1()
{
InitializeComponent();
checkBox1.CheckedChanged += checkBox_CheckedChanged;
checkBox2.CheckedChanged += checkBox_CheckedChanged;
checkBox3.CheckedChanged += checkBox_CheckedChanged;
}
private void checkBox_CheckedChanged(object sender, EventArgs e)
{
if (((CheckBox)sender).Checked)
{
switch (((CheckBox)sender).Name)
{
case "checkBox1":
labelofcb1.Text = (Convert.ToInt32(labelofcb1.Text) + 1).ToString();
break;
case "checkBox2":
labelofcb2.Text = (Convert.ToInt32(labelofcb2.Text) + 1).ToString();
break;
case "checkBox3":
labelofcb3.Text = (Convert.ToInt32(labelofcb3.Text) + 1).ToString();
break;
}
}
else
{
switch (((CheckBox)sender).Name)
{
case "checkBox1":
labelofcb1.Text = (Convert.ToInt32(labelofcb1.Text) - 1).ToString();
break;
case "checkBox2":
labelofcb2.Text = (Convert.ToInt32(labelofcb2.Text) - 1).ToString();
break;
case "checkBox3":
labelofcb3.Text = (Convert.ToInt32(labelofcb3.Text) - 1).ToString();
break;
}
}
}
老师给我们布置了作业。复选框是学生可以选择的课程,其下方的标签是剩余的空闲位置。基本上每次课程(复选框)选择时,在标签处连接到它的数字应该减少负 1。如果人取消选中它,数字应该 return 到基本。
对不起我的英语,我希望它是可以理解的。
在这个例子中,我选择了每个 checkboxs
的 checkedchanged
属性,这是每个 checkboxs
中的函数。您可以根据需要更改 0
或 ++
或 --
来更改初始值或更改后的值。您只需将每个函数的两个 if 条件添加到您的函数,并更改其中的名称以反映标签的名称。
public partial class Form1 : Form
{
int counter=0;
public Form1()
{
InitializeComponent();
label1.Text = counter.ToString();
}
private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
if (checkBox1.Checked)
{
counter++;
label1.Text = counter.ToString();
}
if (!checkBox1.Checked)
{
counter--;
label1.Text = counter.ToString();
}
}
private void checkBox3_CheckedChanged(object sender, EventArgs e)
{
if (checkBox3.Checked)
{
counter++;
label1.Text = counter.ToString();
}
if (!checkBox3.Checked)
{
counter--;
label1.Text = counter.ToString();
}
}
private void checkBox2_CheckedChanged(object sender, EventArgs e)
{
if (checkBox2.Checked)
{
counter++;
label1.Text = counter.ToString();
}
if (!checkBox2.Checked)
{
counter--;
label1.Text = counter.ToString();
}
}
}
您可以尝试为每个复选框订阅 CheckedChanged
事件。并使用 Convert.ToInt32 Method 获取标签中的值。然后通过swicth statement
.
public Form1()
{
InitializeComponent();
checkBox1.CheckedChanged += checkBox_CheckedChanged;
checkBox2.CheckedChanged += checkBox_CheckedChanged;
checkBox3.CheckedChanged += checkBox_CheckedChanged;
}
private void checkBox_CheckedChanged(object sender, EventArgs e)
{
if (((CheckBox)sender).Checked)
{
switch (((CheckBox)sender).Name)
{
case "checkBox1":
labelofcb1.Text = (Convert.ToInt32(labelofcb1.Text) + 1).ToString();
break;
case "checkBox2":
labelofcb2.Text = (Convert.ToInt32(labelofcb2.Text) + 1).ToString();
break;
case "checkBox3":
labelofcb3.Text = (Convert.ToInt32(labelofcb3.Text) + 1).ToString();
break;
}
}
else
{
switch (((CheckBox)sender).Name)
{
case "checkBox1":
labelofcb1.Text = (Convert.ToInt32(labelofcb1.Text) - 1).ToString();
break;
case "checkBox2":
labelofcb2.Text = (Convert.ToInt32(labelofcb2.Text) - 1).ToString();
break;
case "checkBox3":
labelofcb3.Text = (Convert.ToInt32(labelofcb3.Text) - 1).ToString();
break;
}
}
}