我正在尝试更改空文本框的颜色,我在此表单上有多个文本框,我希望在用户单击提交时突出显示空文本框。在检查所有文本框是否都有值之后,我写了下面的循环,它位于我的btnSubmit函数中。任何人都可以帮我完成这个循环??
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;
答案 0 :(得分:2)
当您的字符串为空时,更改ForeColor
将不执行任何操作,因为您没有要以红色显示的文本。考虑使用BackColor
,并记住在输入文本时将事件切换回适当的BackColor
。
答案 1 :(得分: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.");
}
}
答案 2 :(得分:0)
您可以应用您想要的任何CSS:
TBox.Attributes.Add("style", "color: red; border: solid 1px #FC3000")
我会用它而不是:
TBox.ForeColor = Color.Red;
答案 3 :(得分: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;