我的問題似乎有點漫長,但我知道解決辦法是輕微的修正,我code.I我在我的表格1調用鼠標事件並給消息框提供輸入的問題!
pictureBox1_MouseDown, pictureBox1_MouseMove, pictureBox1_Paint實施的3個鼠標事件序列和油漆事件, pictureBox1_MouseUp。
代碼應該以這種方式工作:當我點擊鼠標並拖動它,並釋放按鈕在所需的位置,那麼應該出現一個自定義消息框,它將輸入values.so我構造了一個窗體(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)無法讀取輸入值,因爲我不知道如何將form2的OK和CANCEl按鈕與form1連接起來。輸入輸入後,按下OK,矩形會消失,但這裏沒有發生。
2)我只需要給輸入只有兩次,即我執行前面的動作序列(所有的鼠標事件和繪圖事件)只有兩次,所以我寫FOR循環相應。但問題是消息box(form2)每次被觸發,我釋放鼠標按鈕。這是一個嚴重的問題,因爲我必須在給出兩個輸入後執行mousedoubleclick事件。
任何請給我說必要的更正,我必須作出。 在此先感謝。
很難猜測這段代碼試圖做什麼。什麼是l []和m []?爲什麼在對話框顯示之前將它們分配到鼠標所在的位置?我懷疑你想用* rect *做些什麼。 –
我想將鼠標指針的座標轉換爲l []和m [],並且不確定它們的聲明是否正確。我必須給兩次輸入,所以我的FOR循環運行了兩次,所以這些鼠標指針值將被存儲在這些數組中,以便進一步計算我必須做的! – raghu