在用戶界面中的這種形式是一個非常糟糕的主意。但Winforms確實使它成爲可能。您可以使用Cursor.Clip屬性來限制動作。它不能阻止用戶繼續使用鍵盤快捷方式訪問開始菜單,您需要使用Capture屬性來檢測您是否丟失了。
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
pictureBox1.MouseCaptureChanged += new EventHandler(pictureBox1_MouseCaptureChanged);
pictureBox1.MouseDown += new MouseEventHandler(pictureBox1_MouseDown);
button1.Click += new EventHandler(button1_Click);
}
private void button1_Click(object sender, EventArgs e) {
var rc = pictureBox1.RectangleToScreen(new Rectangle(Point.Empty, pictureBox1.ClientSize));
Cursor.Position = new Point(rc.Left + rc.Width/2, rc.Top + rc.Height/2);
Cursor.Clip = rc;
pictureBox1.Capture = true;
pictureBox1.Cursor = Cursors.Cross;
}
void pictureBox1_MouseDown(object sender, MouseEventArgs e) {
pictureBox1.Capture = false;
}
void pictureBox1_MouseCaptureChanged(object sender, EventArgs e) {
if (!pictureBox1.Capture) {
pictureBox1.Cursor = Cursors.Default;
Cursor.Clip = new Rectangle(0, 0, 0, 0);
}
}
protected override bool ProcessCmdKey(ref Message msg, Keys keyData) {
if (keyData == Keys.Escape) pictureBox1.Capture = false;
return base.ProcessCmdKey(ref msg, keyData);
}
}
這是可能的,但在獲得答案之前,以這種方式限制用戶被認爲是不好的做法和糟糕的設計!我會重新考慮您的實施,除非這是客戶的要求。 – 2011-03-22 23:14:03
在這種情況下,我會要求客戶重新考慮要求;) – Town 2011-03-22 23:15:50
嗯,你沒錯,但用戶點擊時怎麼樣添加一個音符按鈕,鼠標點擊只在picturebox組件內工作(IE用戶無法在程序中的其他地方點擊) – 2011-03-22 23:18:43