嗨,我有一个小的winforms程序,很快会发展到更多。该计划有2个面板panel1
和panel2
这些面板是动态填充一些表单控件。第一个面板用组合框填充,第二个用按钮网格填充。我想要实现的是能够禁用右键,具体取决于用户从combobox
中选择的内容。网格的每一列表示一周中的某一天,如果您愿意,则可以使用combobox
从列表中选择禁用所需日期。禁用动态按钮
要做到这一点静静直截了当,但我的程序很快就会展开,因此它可以处理一个大型数据库,这就是为什么我要动态地做到这一点。基本上这是我卡在那一刻,我想简单地禁用正确的按钮。
下面是我到目前为止接口:
这是我的代码,如果任何帮助:
public Form1()
{
InitializeComponent();
}
Button[] btn = new Button[2];
ComboBox[] cmb = new ComboBox[1];
private void Form1_Load(object sender, EventArgs e)
{
placeRows();
}
public void createColumns(int s)
{
for (int i = 0; i < btn.Length; ++i)
{
btn[i] = new Button();
btn[i].SetBounds(40 * i, s, 35, 35);
btn[i].Text = Convert.ToString(i);
panel1.Controls.Add(btn[i]);
}
for (int i = 0; i < cmb.Length; ++i)
{
cmb[i] = new ComboBox();
cmb[i].SelectedIndexChanged += new EventHandler(cmb_SelectedIndexChanged);
cmb[i].Text = "Disable";
cmb[i].Items.Add("Monday");
cmb[i].Items.Add("Tuesday");
cmb[i].SetBounds(40 * i, s, 70, 70);
panel2.Controls.Add(cmb[i]);
}
}
void cmb_SelectedIndexChanged(object sender, EventArgs e)
{
ComboBox senderCmb = (ComboBox)sender;
if (senderCmb.SelectedIndex == 1)
{
//MessageBox.Show("Tuesday");
btn[1].Enabled = false;
}
}
public void placeRows()
{
for (int i = 0; i < 80; i = i + 40)
{
createColumns(i);
}
}
}
一个完整的工作示例中,我会尝试这一点,但之前,我尝试将我需要改变我创造我的按钮的方式吗? – Tacit
@Tacit:不是。如果您使用方案1,只需添加'btn [i] .Tag =“星期一”(等等......您需要知道每个列在哪个列中)。首先选择方案1。如果它太慢,请尝试替代方案2. –
好吧谢谢队友我会给它以前希望我会成功 – Tacit