将矩形绘制为文本框边框

时间:2013-05-27 13:25:01

标签: c# winforms

我有这个类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;

1 个答案:

答案 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;
}