Aracılığıyla paylaş


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 button1bir 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 SetCursorPosgibi 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.