내 코드입니다 동안 mouseUp 이벤트를 잡아라 :잠시
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"을 볼 수 있습니다 ...
마우스를 누른 상태에서 더 큰 타원을 만들려고합니다. 마우스 버튼을 놓으면 타원이 더 커지지 않아야합니다.
미리 감사드립니다.
그리고 어떻게 해결할 수 있습니까? – Gasta87
이 코드를 form1 디자이너에 이미 입력했습니다. this.MouseUp + = new System.Windows.Forms.MouseEventHandler (this.Form1_MouseUp); this.MouseDown + = 새 System.Windows.Forms.MouseEventHandler (this.Form1_MouseDown); 그리고 전에 말했듯이, mouseUP 이벤트가 작동하는 동안 제거하면 이벤트가 우선 순위가 아닌 것으로 보입니다. – Gasta87
아, 그 경우에는 분명히 대답이 아닙니다. 나는 당신이 백그라운드 작업자를 사용하는 방법이라고 생각합니다. backgroundWorker1_ProgressChanged를 어떻게 평가하고 있습니까? –