0

ここに私のコードがあります:

public partial class Form1 : Form
{
    Graphics g;
    bool mouseUP = false;
    double dimensions = 4.0;
    SolidBrush brush;

    public Form1()
    {
        InitializeComponent();
        g = this.CreateGraphics();
        brush = new SolidBrush(Color.Black);
    }

    private void Form1_MouseDown(object sender, MouseEventArgs e)
    {
        mouseUP = false;
        backgroundWorker1.RunWorkerAsync(e);
    }

    private bool mouseIsUP()
    {
        return mouseUP;
    }

    private void Form1_MouseUp(object sender, MouseEventArgs e)
    {
        mouseUP = true;
        MessageBox.Show("UP");
    }

    private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
    {
        backgroundWorker1.ReportProgress(0,e.Argument);  
    }

    private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
    {
        while (!mouseIsUP())
        {
            g.FillEllipse(brush, ((MouseEventArgs)e.UserState).X - (int)dimensions / 2, ((MouseEventArgs)e.UserState).Y - (int)dimensions / 2, (int)dimensions, (int)dimensions);
            dimensions += 0.2;
            Thread.Sleep(10);
        }
    }
}

イベント mouseUP が発生しないのはなぜですか??? MessageBox「UP」が表示されている間に削除すると...

マウスを押している間、楕円を大きくしようとしています。マウス ボタンを放しても、楕円はそれ以上大きくなりません。

前もって感謝します!

4

2 に答える 2

1

イベントハンドラーをイベントにバインドしていないためです (そのコードを見逃していないと仮定して)。

たとえば、Form1 のコンストラクター内で、次のように追加できます。

MouseUp += Form1_MouseUp;
MouseDown += Form1_MouseDown;
于 2013-10-14T12:31:33.403 に答える