我有这个类Validators,我验证了WinForms项目中的所有文本框。我不知道该怎么做:“我无法更改无法验证的文本框的边框颜色”。所以我在同一个类“Validators”中使用了这个LoginForm_Paint
事件。我不知道如何使用它,也许它不应该在那里,也许我不知道如何使用它。有谁可以帮助我吗 ?
public void LoginForm_Paint(object sender, PaintEventArgs e)
{
Graphics graphics = e.Graphics;
Pen redPen = new Pen(Color.Red);
}
public bool ValidateTextBoxes(params TextBox[] textBoxes)
{
foreach (var textBox in textBoxes)
{
if (textBox.Text.Equals(""))
{
textBox.BackColor = Color.Red;
return false;
}
}
return true;
}
我想像这样使用它(就像在LoginForm中一样):
public void LoginForm_Paint(object sender, PaintEventArgs e)
{
Graphics graphics = e.Graphics;
Pen redPen = new Pen(Color.Red);
}
public bool ValidateTextBoxes(params TextBox[] textBoxes)
{
foreach (var textBox in textBoxes)
{
if (textBox.Text.Equals(""))
{
graphics.DrawRectangle(redPen, textBox.Location.X,
textBox.Location.Y, textBox.Width, textBox.Height);
return false;
}
}
return true;
}
但它不会那样工作。它无法识别我创建的实例Graphics graphics = e.Graphics;
。
答案 0 :(得分:1)
对象graphics
未被“识别”,因为它是在您使用它的方法之外定义的,即在LoginForm_Paint
中本地定义并在ValidateTextBoxes
中使用。
您应该使用您正在绘制的TextBox的图形对象:
public bool ValidateTextBoxes(params TextBox[] textBoxes)
{
foreach (var textBox in textBoxes)
{
if (textBox.Text.Equals(""))
{
Graphics graphics = textBox.CreateGraphics();
graphics.DrawRectangle(redPen, textBox.Location.X,
textBox.Location.Y, textBox.Width, textBox.Height);
return false;
}
}
return true;
}