Добавление picturebox во время выполнения и изменение их свойств (из другого метода)

Я добавляю PictureBox в форму во время выполнения в C#, и это работает (я думаю). Единственная проблема заключается в том, что я не могу изменить свойства PictureBox ни снаружи, ни изнутри метода, например. Я даже не могу изменить цвет спины.

Это моя попытка:

private void Form1_Load(object sender, EventArgs e)
{
  PictureBox canvas = new PictureBox();
  canvas.Dock = DockStyle.Fill;
  canvas.BackColor = Color.Red;
}

Теперь PictureBox должен заполнить всю форму и иметь красный фон, но он не работает.

Кроме того, как я могу добавить PictureBox «публично», чтобы я мог изменить свойства из другого метода?

Я попробовал это, как это:

PictureBox canvas = new PictureBox
{
  Dock = DockStyle.Fill,
  BackColor = Color.Red
};

private void button1_Click(object sender, EventArgs e)
{
  canvas.BackColor = Color.Red;
} // Now I can use "canvas" in other methods without any errors but still nothing happens
Метки

1 ответ

  1. Это хорошее начало:

    PictureBox canvas = new PictureBox
    {
      Dock = DockStyle.Fill,
      BackColor = Color.Red
    };
    
    private void button1_Click(object sender, EventArgs e)
    {
      canvas.BackColor = Color.Red;
    } 
    

    Но вы должны добавить это поле в форму:

    private void Form1_Load(object sender, EventArgs e)
    {
      this.Controls.Add(canvas);
    }
    

    После того, как он работает, как ожидалось, вы должны вызвать canvasполе так: _canvasкак это личное поле этого класса (форма).