Мой вопрос кажется немного длинным, но я знаю, что решение - это небольшие исправления в моем коде. Я реализую последовательность из трех событий мыши и событие рисования в моей форме 1
pictureBox1_MouseDown, pictureBox1_MouseMove, pictureBox1_Paint, pictureBox1_MouseUp.
код должен работать следующим образом: когда я щелкаю мышью, перетаскиваю ее и отпускаю кнопку в нужной точке, тогда должно появиться настраиваемое окно сообщения, которое принимает входные значения. поэтому я создал форму(form2), который появляется как окно сообщения.вот мой код формы 1, вы можете понять проблему после просмотра кода.
form1:
private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
// "e.X" and "e.Y" are used to get MousePositionX and MousePositionY
rect = new Rectangle(0, 0, e.X, e.Y);
pictureBox1.Invalidate();
}
private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
// This makes sure that the left mouse button is pressed.
if (e.Button == MouseButtons.Left)
{
// Draws the rectangle as the mouse moves
rect.Width = e.X;
rect.Height = e.Y;
}
pictureBox1.Invalidate();
}
private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
using (Pen pen = new Pen(Color.Red, 2))
{
e.Graphics.DrawRectangle(pen, rect);
}
}
private WindowsFormsApplication2.Form2 _form2 = new WindowsFormsApplication2.Form2();
private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
{
DialogResult dialogresult = _form2.ShowDialog(this);
if (dialogresult == DialogResult.OK)
{
try
{
for (int i = 0; i < 2; i++)
{
l[i] = e.X;
m[i] = e.Y;
}
}
catch (Exception ex)
{
}
}
}
проблемы здесь:
1) Согласнокод, когда мы перетаскиваем мышь, появляется прямоугольник и в месте, где мы оставляем кнопку мыши, появляется окно сообщения, теперь это окно сообщения (form2) не может прочитать входные значения, так как я не знаю, как соединить кнопки OK и CANCElиз form2 с form1.После ввода и нажатия OK прямоугольник должен исчезнуть, но здесь это не происходит.
2) Мне нужно только ввести вход только два раза, т.е. я выполняю предыдущую последовательность действий (все события мыши и событие рисования) только дважды, поэтому я написал цикл FOR соответственно. Но проблема в том,окно сообщения (form2) запускается каждый раз, когда я отпускаю кнопку мыши. Это вызывает серьезную проблему, поскольку мне нужно реализовать событие mousedoubleclick после ввода двух входных данных.
Любой, пожалуйста, скажите, пожалуйста, необходимые исправления, которые я должен сделать.заранее спасибо.