Fare olaylarının simülasyonunu oluşturma (Windows Forms .NET)
Windows Forms'da fare olaylarının benzetimi, klavye olaylarının benzetimi kadar basit değildir. Windows Forms, fareyi hareket ettirmek ve fare tıklama eylemlerini çağırmak için yardımcı bir sınıf sağlamaz. Fareyi denetlemenin tek seçeneği yerel Windows yöntemlerini kullanmaktır. Özel bir denetim veya formla çalışıyorsanız, fare olayının benzetimini yapabilirsiniz, ancak fareyi doğrudan denetleyemezsiniz.
Ekinlikler
Çoğu olay, bunları çağıran karşılık gelen bir yönteme sahiptir. Bu yöntem, örneğinOnMouseMove
, deseninde On
ve ardından EventName
şeklinde adlandırılır. Bu yöntemler korunduğundan ve denetim veya formun bağlamının dışından erişilemediğinden, bu seçenek yalnızca özel denetimler veya formlar içinde mümkündür. gibi OnMouseMove
bir yöntemi kullanmanın dezavantajı, fareyi gerçekten denetlememesi veya denetimle etkileşim kurmaması, yalnızca ilişkili olayı tetiklemesidir. Örneğin, içindeki bir öğenin ListBoxOnMouseMove
üzerine gelindiğinde benzetim yapmak istiyorsanız ve imlecin ListBox
altında vurgulanmış bir öğeyle görsel olarak tepki vermez.
Bu korumalı yöntemler fare olaylarının benzetimini yapmak için kullanılabilir.
OnMouseDown
OnMouseEnter
OnMouseHover
OnMouseLeave
OnMouseMove
OnMouseUp
OnMouseWheel
OnMouseClick
OnMouseDoubleClick
Bu olaylar hakkında daha fazla bilgi için bkz . Fare olaylarını kullanma (Windows Forms .NET)
Tıklama çağırma
Çoğu denetimin tıklandığında kullanıcı kodunu çağıran bir düğme gibi bir şey yaptığı veya onay kutusunun işaretli durumunu değiştireceği düşünüldüğünde, Windows Forms tıklamayı tetiklemenin kolay bir yolunu sağlar. Birleşik giriş kutusu gibi bazı denetimler tıklandığında özel bir şey yapmaz ve tıklama benzetiminin denetim üzerinde hiçbir etkisi yoktur.
PerformClick
Arabirim, System.Windows.Forms.IButtonControl denetime PerformClick bir tıklama benzetimi yapan yöntemi sağlar. System.Windows.Forms.Button Hem hem de System.Windows.Forms.LinkLabel denetimleri bu arabirimi uygular.
button1.PerformClick();
Button1.PerformClick()
InvokeClick
Bir form özel denetimiyle, fare tıklamasının InvokeOnClick benzetimini yapmak için yöntemini kullanın. Bu, yalnızca formun içinden veya türetilmiş bir özel denetimden çağrılabilen korumalı bir yöntemdir.
Örneğin, aşağıdaki kod içinden button1
bir onay kutusuna tıklar.
private void button1_Click(object sender, EventArgs e)
{
InvokeOnClick(checkBox1, EventArgs.Empty);
}
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
InvokeOnClick(CheckBox1, EventArgs.Empty)
End Sub
Yerel Windows yöntemlerini kullanma
Windows, fare hareketlerini ve ve User32.dll SetCursorPos
gibi User32.dll SendInput
tıklamaları simüle etmek için çağırabileceğiniz yöntemler sağlar. Aşağıdaki örnek, fare imlecini denetimin ortasına taşır:
[DllImport("user32.dll", EntryPoint = "SetCursorPos")]
[return: MarshalAs(UnmanagedType.Bool)]
private static extern bool SetCursorPos(int x, int y);
private void button1_Click(object sender, EventArgs e)
{
Point position = PointToScreen(checkBox1.Location) + new Size(checkBox1.Width / 2, checkBox1.Height / 2);
SetCursorPos(position.X, position.Y);
}
<Runtime.InteropServices.DllImport("USER32.DLL", EntryPoint:="SetCursorPos")>
Public Shared Function SetCursorPos(x As Integer, y As Integer) As Boolean : End Function
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim position As Point = PointToScreen(CheckBox1.Location) + New Size(CheckBox1.Width / 2, CheckBox1.Height / 2)
SetCursorPos(position.X, position.Y)
End Sub
Ayrıca bkz.
.NET Desktop feedback