1

いくつかのカスタム コントロールを無効または有効にしてから、グラフィック オブジェクトを使用して線と四角形を描画する方法があります。

メソッドの要点:

void MyMethod()

{

//...

mycontrol.enabled = false;

mycontrol.visible = false;

mycontrol.Invalidate();

mycontrol.Update();

GraphicsObject.DrawLines();

//...

}

このメソッドが戻った直後の画面は見栄えがします。コントロールがあった場所に長方形と線があります。

ただし、クリック イベント ハンドラーが返された後 (上記のメソッドが呼び出されます)。非表示にする必要があるコントロールは、線と四角形の上に描画します (これらの領域は空白のままにして、背景フォームと同じ色にします)。

これを修正する方法はありますか?

ありがとう

4

1 に答える 1

1

コメントで述べたように、オブジェクトに描画している場合、OnPaintメソッドまたはPaint イベントを使用しない場合、カスタム描画は自動的に再描画されません。あなたが描いているものに応じて、次のようなことができます( Form に描いていると仮定しています)。

void MyMethod() 
{ 
    //... 
    mycontrol.enabled = false; 
    mycontrol.visible = false; 
    mycontrol.Invalidate(); 
    mycontrol.Update(); 
    this.Invalidate(); 
} 


private void Form1_Paint(object sender, PaintEventArgs e)
{
    //Conditional Logic to determine what you are drawing
    // myPoints is a Point array that you fill elsewhere in your program

    e.Graphics.DrawLines(new Pen(Brushes.Red), myPoints);

}
于 2012-10-05T03:10:12.677 に答える