私の質問は少し長いようだが、私は解決策が私code.Iに若干の修正が私のフォーム1マウスイベントの呼び出しとメッセージボックスへの入力に関する問題
pictureBox1_MouseDown、 pictureBox1_MouseMove、 pictureBox1_Paintで3つのマウスイベントのシーケンスとペイントイベントを実施していますでしょう知っています、 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)コードによると、我々は長方形が表示され、マウス、我々はメッセージボックスが表示され、マウスのボタンを残す場所をドラッグすると、フォーム2のOKボタンとCANCElボタンをform1.Afterに入力してOKを押すと、この矩形が消えるはずですが、ここではそれは起こっていません。このメッセージボックス(form2)は入力値を読み取ることができません。
2)私は入力を2回だけ与える必要があります。すなわち、私は以前のアクションのシーケンス(すべてのマウスイベントとペイントイベント)を2回しか実行しないので、FORループを書きました。しかし、問題はメッセージですボックス(form2)は毎回起動され、マウスボタンを放します。これは、2つの入力を与えた後にmousedoubleclickイベントを実装する必要があるため、重大な問題を引き起こしています。
私には必要な修正が必要です。ありがとうございます。
このコードが何をしようとしているのか推測しにくいです。 l []とm []は何ですか?ダイアログが表示される前にマウスを持っていた位置にそれらを割り当てるのはなぜですか?あなたは* rect *で何かしたいと思っています。 –
私はマウスポインタの座標をl []とm []に取得しようとしていますが、その宣言が正しいかどうかはわかりません。私は入力を2回与えなければならないので、私のFORループは2回実行されています。これらのマウスポインタの値は、後で計算するためにこれらの配列に保存されます! – raghu