Ожидание одного события для другого события
Итак... Пользователь должен нажать на кнопку, после того, как он щелкнет по ней, программа должна дождаться повторного нажатия на Panel и получить координаты этого нажатия. Но как только я нажимаю кнопку, все перестает отвечать на запросы. Я делаю что-то неправильно?
private void Surbutton_Click(object sender, EventArgs e)
{
panel1.Cursor = Cursors.Cross;
Cursor.Position = new Point(Left + panel1.Left + panel1.Width / 2, Top + panel1.Top + panel1.Height / 2);
ziskavanie_pozicie = true;
//Button ABCD = sender as Button;
string ABCD = ((Button)sender).Name;
switch (ABCD)
{
case "button_A":
//cakaj.WaitOne();
cakaj_manual.WaitOne();
suradnica_Ax.Text = x.ToString();
suradnica_Ay.Text = x.ToString();
break;
case "button_B":
suradnica_Bx.Text = x.ToString();
suradnica_By.Text = x.ToString();
break;
case "button_C":
suradnica_Cx.Text = x.ToString();
suradnica_Cy.Text = x.ToString();
break;
case "button_D":
suradnica_Dx.Text = x.ToString();
suradnica_Dy.Text = x.ToString();
break;
}
}
public void panel1_MouseClick(object sender, MouseEventArgs e)
{
MessageBox.Show("Hehe");
if (ziskavanie_pozicie == true)
{
x = e.X;
y = e.Y;
//panel1.PointToClient(Cursor.Position);
ziskavanie_pozicie = false;
panel1.Cursor = Cursors.Default;
//cakaj.Set();
cakaj_manual.Set();
}
}
2 ответа
Поэтому, когда пользователь нажимает кнопку, показанную курсором на изображении (или любую из кнопок со стрелкой), курсор перемещается в центр белой панели. В этот момент мне нужно, чтобы пользователь щелкнул где-то на панели и получил координаты этого клика. Когда у меня есть координаты, я назначаю их текстовым полям с левой стороны кнопок.
Если вы просто хотите узнать, по какой причине ваши программы зависли, это потому, что вы по какой-то причине используете
ManualResetEvent или AutoResetEvent
которые не должны использоваться в основном потоке, поскольку это не та причина, по которой они созданы. Если вы скажете, например, manualResetEvent.WaitOne();
в главном потоке все замерзнет. Они просто созданы для синхронизации потоков, как Mutex, Semphores, TPL->Await
так далее..