0

我想区分表单中的必填文本框字段。我通过使用每个表单调用的方法创建一个类来实现这一点。该方法的作用是接收一个文本框列表,并且对于每个文本框,它将背景色设置为另一个。

public static void Mostrar_campos_obligatorios(List<TextBox> lista_textbox)
{
    foreach (TextBox tbx in lista_textbox)
    {
        tbx.Paint += new PaintEventHandler(TextBoxRectangle);
    }
}

我现在更改了 GUI,我不喜欢更改背景色后的样子,然后我想绘制一个矩形,如下图所示:

在此处输入图像描述

把渐变的东西留给我,我只需要帮助绘制一个与每个 TextBox 高度相同的矩形并位于它的末尾。我也想使用该方法定义(我的意思是,接收文本框列表)。

请注意,这些方法是静态的..

我试过这样的事情:

public static void TextBoxRectangle(object sender, PaintEventArgs e)
{
    tbx = (TextBox)sender;
    Color c1 = Color.FromArgb(255, 113, 255, 0);
    Color c2 = Color.FromArgb(255, 2, 143, 17);

    LinearGradientBrush br = new LinearGradientBrush(e.CellBounds, c1, c2, 90, true);

    ColorBlend cb = new ColorBlend();
    cb.Positions = new[] { 0, (float)1 };
    cb.Colors = new[] { c1, c2 };

    br.InterpolationColors = cb;

    Rectangle rect = new Rectangle(tbx.Location.X + 4, tbx.Location.Y + 4, 13, 13);

    e.Graphics.FillRectangle(br, rect);
}

但不工作。它甚至不访问TextBoxRectangle(). 我觉得我做的很不对。。

4

2 回答 2

0
public static void Mostrar_campos_obligatorios(List<TextBox> lista_textbox, PaintEventHandler eventHandler)
{
    foreach (TextBox tbx in lista_textbox)
    {
        tbx.Paint += new PaintEventHandler(eventHandler);
    }
}

...

Mostrar_campos_obligatorios(lista_textbox, new PaintEventHandler(TextBoxRectangle));
于 2013-01-17T12:23:53.093 回答
0

我的建议是:不要用复杂的逻辑来画一个矩形。您不能只是简单地在文本框中放置一个看起来像您在问题中显示的矩形的背景图像吗?. 无需绘制矩形和东西。

图像可以是任何渐变/非渐变。

于 2013-01-17T12:29:16.527 回答