C# は比較的新しいものです。うまくいけば、単純なものを見落としているだけです。
'drawingArea' と呼ばれる画像ボックスといくつかのボタンを含む 'Exercise1' という名前のフォームがあります。Exercise1 のコンストラクターのコードは次のとおりです。
public Exercise1()
{
InitializeComponent();
paper = drawingArea.CreateGraphics();
balloon = new Balloon("redBalloon", Color.Red, drawingArea.Width / 2,
drawingArea.Height / 2, 30);
paper.Clear(Color.White);
balloon.Display(paper);
}
...
'paper' と 'balloon' は、フォームの他のメソッドで使用するために、コンストラクターの上にグローバルとして作成されます。「紙」と「風船」はどちらも、フォームで定義された他のメソッドのコンストラクターで初期化されたとおりに機能します。
何らかの理由で、コマンド
paper.Clear(Color.White);
と
balloon.Display(paper);
画像ボックスをクリアし、赤い楕円を表示する必要がありますが、実行しないでください (少なくとも目に見えて)。何を与える?
更新:
私はこのウェブサイトが好きになると思います.あなたたちは速いです!
@Nitesh: Exercise1 のコンストラクターが別のフォームから呼び出されます。コードは次のとおりです。
private void button1_Click(object sender, EventArgs e)
{
int exSelector = (int)numericUpDown1.Value;
switch (exSelector)
{
case 1:
Exercise1 form1 = new Exercise1();
form1.Show();
break;
...
@Sean Dunford: はい、そうです。
@RBarryYoung: 少し遊んでいましたが、うまくいきませんでした。演習 1 の Form_Load イベントをトリガーするコマンドは?
更新:この変更されたコードは期待どおりに機能します。
public Exercise1()
{
InitializeComponent();
paper = drawingArea.CreateGraphics();
drawingArea.BackColor = Color.White;
drawingArea.Paint += new PaintEventHandler(this.drawingArea_Paint);
balloon = new Balloon("redBalloon", Color.Red, drawingArea.Width / 2, drawingArea.Height / 2, 30);
}
private void drawingArea_Paint(object sender, PaintEventArgs e)
{
e.Graphics.Clear(Color.White);
balloon.Display(e.Graphics);
}
...
助けてくれてありがとう!