我正在尝试创建一个 GUI,其中在组合框中选择一个项目会改变每个复选框是否被选中。
GUI 有很多复选框,用户可以选中或取消选中。
例如,用户可以从组合框中选择“项目 1”,然后用户选中他想要检查的任何复选框。然后,当用户选择“item 2”时,从“item 1”选中的复选框将变灰,用户可以选中或取消选中其余的复选框。
组合框中的每个项目基本上都保存了用户在复选框上的选择。
谁能告诉我如何做到这一点?
我正在尝试创建一个 GUI,其中在组合框中选择一个项目会改变每个复选框是否被选中。
GUI 有很多复选框,用户可以选中或取消选中。
例如,用户可以从组合框中选择“项目 1”,然后用户选中他想要检查的任何复选框。然后,当用户选择“item 2”时,从“item 1”选中的复选框将变灰,用户可以选中或取消选中其余的复选框。
组合框中的每个项目基本上都保存了用户在复选框上的选择。
谁能告诉我如何做到这一点?
例如 4 个复选框,1 个组合框
public Form1()
{
InitializeComponent();
for (int i = 0; i < 3; i++)
comboBox1.Items.Add(i.ToString());
comboBox1.Text = comboBox1.Items[0].ToString();
}
bool needtoupdate = true;
public class CheckedItems
{
public CheckedItems()
{
for (int i = 0; i < b.Length; i++)
{
b[i] = false;
}
}
public bool[] b = { false, false, false, false };
}
CheckedItems[] allcheckeditems = { new CheckedItems(), new CheckedItems(), new CheckedItems()};
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
needtoupdate = false;
checkBox1.Checked = allcheckeditems[Convert.ToInt32(comboBox1.Text)].b[0];
checkBox2.Checked = allcheckeditems[Convert.ToInt32(comboBox1.Text)].b[1];
checkBox3.Checked = allcheckeditems[Convert.ToInt32(comboBox1.Text)].b[2];
checkBox4.Checked = allcheckeditems[Convert.ToInt32(comboBox1.Text)].b[3];
needtoupdate = true;
}
void saveallchecked()
{
if (!needtoupdate) return;
allcheckeditems[Convert.ToInt32(comboBox1.Text)].b[0] = checkBox1.Checked;
allcheckeditems[Convert.ToInt32(comboBox1.Text)].b[1] = checkBox2.Checked;
allcheckeditems[Convert.ToInt32(comboBox1.Text)].b[2] = checkBox3.Checked;
allcheckeditems[Convert.ToInt32(comboBox1.Text)].b[3] = checkBox4.Checked;
}
private void comboBox1_SelectedValueChanged(object sender, EventArgs e)
{
}
private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
saveallchecked();
}
private void checkBox2_CheckedChanged(object sender, EventArgs e)
{
saveallchecked();
}
private void checkBox3_CheckedChanged(object sender, EventArgs e)
{
saveallchecked();
}
private void checkBox4_CheckedChanged(object sender, EventArgs e)
{
saveallchecked();
}
我会将您的复选框和组合放在更新面板中,为用户更改组合框时创建一个事件,在这种情况下,您必须循环查看哪些被选中,哪些您设置为启用 false(它们将显示为灰色)。
有用吗?