我知道這對你們大多數人來說可能很簡單,但我需要幫助。
在填寫 textbox1 之前,btnBuild 不應該是可點擊的,單選按鈕、復選框和組合框有一個被選中的專案。當點擊 btnReset 時,btnBuild 將回傳不可點擊,因為所有欄位都將被清除。我已經有了 btnReset 的代碼,只有 btnBuild 不可點擊是我的問題。
grpBx1 包含 4 個單選按鈕,grpBx2 包含 3 個單選按鈕,grpBx3 包含 4 個復選框,然后 2 個組合框不屬于任何組框
uj5u.com熱心網友回復:
我建議使用為每個必填欄位修改的事件并執行以下操作:
if (string.IsNullOrEmpty(textbox1.Text))
{
btnBuild.enable =false;
}
為什么使用事件“修改”?因為每次欄位內容發生變化時,您都希望確保其中仍有內容。然后如果它是空的,禁用 btnBuild。也可以使用錯誤提供程式。還要記住,textEdit 專案使用“.Text”屬性來檢查它是否有值,而 DateEdit 專案需要“.EditValue”,sp 為您使用的每個不同專案找到適當的屬性。發布 btnReset 代碼也很有幫助。
uj5u.com熱心網友回復:
只需將其添加到 btnReset 單擊事件的底部即可。
btnBuild.Enabled = false;
uj5u.com熱心網友回復:
這就是我將如何做到的。建立串列以保存您的 RadioButtons 和 CheckBoxes 的集合,以便您可以輕松確定是否選中了它們中的任何一個,以及使用這些相同的串列來重置它們。然后制作一個確定是否btnBuild應啟用的方法。CBs只需更改和中列出的控制元件RBs:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private List<CheckBox> CBs;
private List<RadioButton> RBs;
private void Form1_Load(object sender, EventArgs e)
{
btnBuild.Enabled = false;
CBs = new List<CheckBox> { checkBox1, checkBox2, checkBox3};
RBs = new List<RadioButton> { radioButton1, radioButton2, radioButton3 };
CBs.ForEach(cb =>
{
cb.CheckedChanged = (s2, e2) => updateBuildButton();
});
RBs.ForEach(rb =>
{
rb.CheckedChanged = (s2, e2) => updateBuildButton();
});
textBox1.TextChanged = (s2, e2) => updateBuildButton();
btnReset.PerformClick();
}
private void updateBuildButton()
{
bool cbChecked = CBs.Any(cb => cb.Checked);
bool rbSelected = RBs.Any(rb => rb.Checked);
bool tbPopulated = textBox1.Text.Trim().Length > 0;
btnBuild.Enabled = cbChecked && rbSelected && tbPopulated;
}
private void btnReset_Click(object sender, EventArgs e)
{
textBox1.Clear();
CBs.ForEach(cb => cb.Checked = false);
RBs.ForEach(rb => rb.Checked = false);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/430818.html
