0

ACシャープフォームにチェックボックスを動的に追加しました....
フォームが読み込まれると無効になります...
各チェックボックスはデフォルトで赤色になります...プログラムで黒に割り当てました...
しかし、フォームが読み込まれると赤い…どうしてこうなったのかわからない…

private void Form2_Load(object sender, EventArgs e)
{
    for (int i = 0; i < list.Count; i++)
    {
         CheckBox c = new CheckBox();
         c.Text = i.ToString();
         c.Width = 120;
         flowLayoutPanel1.Controls.Add(c);
         c.ForeColor = Color.Black;
    }
    flowLayoutPanel1.Enabled = false;
}

flowLayoutPanelを有効にした後にのみ黒色になります....
フォームがロードされてもチェックボックスを黒色にしたい...

4

2 に答える 2

2

これが1つの方法です。コードを次のように変更します。

for (int i = 0; i < list.Count; i++)
{
    CheckBox c = new CheckBox();
    c.Text = "";
    c.Tag = i.ToString();
    c.Width = 120;
    flowLayoutPanel1.Controls.Add(c);
    c.Paint += new PaintEventHandler(c_Paint);

}
    flowLayoutPanel1.Enabled = false;

c_Paint メソッドでは、コントロールのテキストを描画できます (Tag プロパティに保存されます)。

void c_Paint(object sender, PaintEventArgs e)
{
    Control c = sender as Control;
    if (c != null)
    {
        string text = c.Tag.ToString();
        e.Graphics.SmoothingMode = 
            System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
        RectangleF rect = new RectangleF(
            new PointF(19, 5), 
            e.Graphics.DrawString(text, this.Font, Brushes.Black, new PointF(19, 5));
    }
}
于 2012-05-09T10:55:47.780 に答える
0

それを行う関数を作成InitializeComponent();し、フォーム コンストラクターの後に呼び出す必要があります。最初にパネルも有効にする必要があります。

public partial class YourForm: Form
    {
        public YourForm()
        {
            InitializeComponent();
           // put your function here
        }
于 2012-05-09T10:13:03.967 に答える