フォーム内の必須の TextBox フィールドを区別したいと考えています。すべてのフォームから呼び出されるメソッドを持つクラスを作成することで、これを達成していました。そのメソッドが行うことは、テキストボックスのリストを受け取り、それぞれに対して背景色を別の色に設定することです。
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()
。私はそれを非常に間違っていると思います..