2012-11-14 48 views
0

我想改變一個空的文本框的顏色,我有這個窗體上的多個文本框,我希望在用戶點擊提交時突出顯示空的文本框。在檢查所有文本框是否有值之後,我已經寫了下面的循環,該循環在我的btnSubmit函數中。任何人都可以幫助完成這個循環嗎?c#如何更改特定文本框的顏色,如果它是空的?

foreach (Control txtbxs in this.Controls) 
{ 
    if (txtbxs is TextBox) 
    { 
     var TBox = (TextBox)txtbxs; 
     if (TBox.Text == string.Empty) 
     { 
      TBox.ForeColor = Color.Red; 
     } 
    } 

} 
lblTopError.Text = "Please fill in the missing billing information"; 
pnlTopError.Visible = true; 
+3

我在這裏看到的唯一的事情是你改變了文本一個空字符串的顏色,所以你沒有看到變化。您想做什麼? –

+0

@lc。我想將文本框的邊緣更改爲紅色,或者以某種方式突出顯示文本框,因爲用戶已將其留空......這只是爲了讓用戶明白此特定文本框是空的 –

+2

考慮查看['ErrorProvider '](http://msdn.microsoft.com/en-us/library/system.windows.forms.errorprovider.aspx),它將在文本框旁邊放置一個漂亮的紅色感嘆號圖標,並提供解釋錯誤的工具提示。 (假設你使用winforms) –

回答

0

好,因爲有沒有太大的文本框,在這種形式下,我去簡單的方法,它的工作,代碼波紋管:

List<TextBox> boxes = new List<TextBox>(); 
if (string.IsNullOrWhiteSpace(txtFname.Text)) 
{ 
    //highlightTextBox= txtFname; 
    boxes.Add(txtFname); 
} 
if (string.IsNullOrWhiteSpace(txtLname.Text)) 
{ 
    //highlightTextBox = txtLname; 
    boxes.Add(txtLname); 
} 
if (string.IsNullOrWhiteSpace(txtAddOne.Text)) 
{ 
    //highlightTextBox = txtAddOne; 
    boxes.Add(txtAddOne); 
} 
if (string.IsNullOrWhiteSpace(txtTown.Text)) 
{ 
    //highlightTextBox = txtTown; 
    boxes.Add(txtTown); 
} 
if (string.IsNullOrWhiteSpace(txtPostCode.Text)) 
{ 
    //highlightTextBox = txtPostCode; 
    boxes.Add(txtPostCode); 
} 

foreach (var item in boxes) 
{ 
    if (string.IsNullOrWhiteSpace(item.Text)) 
    { 
     item.BackColor = Color.Azure; 
    } 
} 
lblTopError.Text = "Please fill in the missing billing information highlighted below"; 
pnlTopError.Visible = true; 
2

當你的字符串是空的,改變ForeColor不會做任何事情,因爲你沒有文字以紅色顯示。考慮使用BackColor,並記得在輸入文本時將事件切換回合適的BackColor

0

你可以申請你想要任何像這樣的CSS:

TBox.Attributes.Add("style", "color: red; border: solid 1px #FC3000") 

我會用它來代替:

TBox.ForeColor = Color.Red; 
2

如果這是你正在嘗試做的,你有沒有使用考慮錯誤提供者?這可以幫助您發信號給用戶並提示他們輸入信息。

 errorProvider= new System.Windows.Forms.ErrorProvider(); 
     errorProvider.BlinkRate = 1000; 
     errorProvider.BlinkStyle = System.Windows.Forms.ErrorBlinkStyle.AlwaysBlink; 


private void TextValidated(object sender, System.EventArgs e) 
    { 
     var txtbox = Sender as TextBox; 

     if(IsTextValid(txt)) 
     { 
      // Clear the error, if any, in the error provider. 
      errorProvider.SetError(txtbox, String.Empty); 
     } 
     else 
     { 
      // Set the error if the name is not valid. 
      errorProvider.SetError(txtbox, "Please fill in the missing billing information."); 
     } 
    } 
相關問題