嗨,我有一個小的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