你並不需要在你的「否則如果」,只是「別人」會做一個條件,因爲如果長度大於0,只有其他可能性爲0.也可以使用發件人而不是硬編碼控件名稱。
然後爲要禁用的文本框設置啓用屬性。您可以循環顯示錶單上的所有文本框,不包括要輸入的文本框,也可以手動列出它們。 SImpler將文本框放在一個組框中,然後如果禁用組框,它將禁用其中的控件。
private void textBox1_TextChanged(object sender, EventArgs e)
{
var senderTextBox = (TextBox)sender;
var textBoxesEnabled = senderTextBox.Text.Trim().Length == 0;
textBox2.Enabled = textBoxesEnabled;
textBox3.Enabled = textBoxesEnabled;
// OR
groupBox1.Enabled = textBoxesEnabled;
}
答覆編輯:您可以文本框的鏈,說他們的4,禁用最後一個3,然後:
void TextBox1TextChanged(object sender, System.EventArgs e)
{
var isTextEmpty = ((TextBox)sender).Text.Trim() == "";
textBox2.Enabled = !isTextEmpty;
}
void TextBox2TextChanged(object sender, System.EventArgs e)
{
var isTextEmpty = ((TextBox)sender).Text.Trim() == "";
textBox1.Enabled = isTextEmpty;
textBox3.Enabled = !isTextEmpty;
}
void TextBox3TextChanged(object sender, System.EventArgs e)
{
var isTextEmpty = ((TextBox)sender).Text.Trim() == "";
textBox2.Enabled = isTextEmpty;
textBox4.Enabled = !isTextEmpty;
}
void TextBox4TextChanged(object sender, System.EventArgs e)
{
var isTextEmpty = ((TextBox)sender).Text.Trim() == "";
textBox3.Enabled = isTextEmpty;
}
但對於大量文本框的的,另一種選擇是有多個文本框份額相同的TextChanged事件。您需要點擊每個TextBox控件,進入事件列表並手動選擇TextChanged的方法。這裏是方法:
private void TextBoxGroup_TextChanged(object sender, EventArgs e)
{
var groupOrder = new List<TextBox>() { textBox1, textBox2, textBox3, textBox4 };
var senderTextBox = (TextBox)sender;
var senderIndex = groupOrder.IndexOf(senderTextBox);
var isTextEmpty = senderTextBox.Text.Trim() == "";
if (senderIndex != 0) groupOrder[senderIndex - 1].Enabled = isTextEmpty;
if (senderIndex != groupOrder.Count - 1) groupOrder[senderIndex + 1].Enabled = !isTextEmpty;
}
順便說一句,這聽起來完全非常糟糕的用戶體驗。請不要這樣做。 – Aron 2014-11-01 15:32:53
你也不會注意到你使用的是什麼UI技術。如果您使用的是WPF,那麼如果您使用WinForm,並且您在WebForm或MVC中執行此操作,則實際上可以通過使用Javascript來實現。 – Aron 2014-11-01 15:34:36