1

パケットをルーティングするためのネットワークのトポロジを作成するフォームにパネルがあります。パネルにトポロジーを描くことができます。しかし、今度は、ボタンをクリックするだけで小さな正方形を1つのポイントから目的地に移動させたいと思います。パネルでこれを行うにはどうすればよいですか?ボタンをクリックしても何も起こりません。誰か助けていただければ幸いです。これは私のコードの一部です:

public Form1()
{            
     InitializeComponent();

     this.SetStyle(ControlStyles.UserPaint 
          | ControlStyles.AllPaintingInWmPaint
          | ControlStyles.DoubleBuffer, true);

    //Initialize the point to start in the top left corner
    this.SetStyle(ControlStyles.UserPaint
          | ControlStyles.AllPaintingInWmPaint
          | ControlStyles.DoubleBuffer, true);

    //Initialize the point to start in the top left corner
    mPoint = new Point(mRect.Location.X, mRect.Location.X);

    //Set up the function to call when the timer fires
    TimerCallback timercb = new TimerCallback(TimerCB);

    //Set up the timer to fire at the set animation rate
    mTimer = new System.Threading.Timer(timercb,
        null, ANIMATION_RATE, ANIMATION_RATE);    
}

private void panel2_Paint(object sender, PaintEventArgs e)
{
    if(sendbut) {
        Graphics dc = panel2.CreateGraphics();
        //Fill the background of the client area
        dc.FillRectangle(SystemBrushes.Control, this.ClientRectangle);

        //Draw the big rectangle track
        dc.DrawRectangle(Pens.Black, mRect);

        //Clone the point
        Point p = new Point(mPoint.X, mPoint.Y);

        //Offset it by half the width and height of the desired rectangle
        p.Offset(-(RECT_WIDTH / 2), -(RECT_HEIGHT / 2));

        //Draw the little moving rectangle
        dc.FillRectangle(Brushes.Black, 
            new Rectangle(p, new Size(RECT_WIDTH, RECT_HEIGHT)));
    }
}

protected void TimerCB(object o)
{
    //Move the rectangle
    MovePoint();

    //Redraw the form
    Invalidate();
}

private void button3_Click(object sender, EventArgs e)
{          
    sendbutt = true;
}
4

1 に答える 1

0

がイベントpanel2_Paintのハンドラーであると仮定すると、そのメソッドはペイントが発生した後に呼び出されます。代わりに、Panel から継承するカスタム コントロールを作成し、OnPaint メソッドをオーバーライドします。ここを参照してください。panel2.Paint

于 2012-05-05T05:46:46.463 に答える