1

我有这个类验证器,我在其中验证我的 WinForms 项目中的所有文本框。我不知道该怎么做:“我无法更改无法验证的文本框的边框颜色”。所以我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;

4

1 回答 1

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;
}
于 2013-05-27T13:36:34.877 回答