Windows Forms'ta Fare Olayları
Fare girişini işlerken, genellikle fare işaretçisinin konumunu ve fare düğmelerinin durumunu bilmek istersiniz. bu konu, fare olaylarından bu bilgilerin nasıl alınacağı hakkında ayrıntılar sağlar ve Windows Forms denetimlerinde fare tıklaması olaylarının nasıl oluşturulduğu sırasını açıklar. tüm fare olaylarının listesi ve açıklaması için bkz. fare girişinin Windows Forms nasıl çalıştığı. ayrıca bkz. olay işleyicilerine genel bakış (Windows Forms) ve olaylara genel bakış (Windows Forms).
Fare bilgileri
Bir MouseEventArgs fare düğmesine tıklanması ve fare hareketlerini izlemek için ilgili fare olaylarının işleyicilerine gönderilir. MouseEventArgs istemci koordinatlarındaki fare işaretçisinin konumu, fare düğmelerine basılan ve Fare tekerleğinin kaydırılışına dahil olmak üzere, farenin geçerli durumu hakkında bilgi sağlar. Yalnızca fare işaretçisi bir denetimin sınırları girildiğinde veya sol tarafta bilgilendirenler gibi birçok fare olayı, EventArgs daha fazla bilgi olmadan olay işleyicisine gönderin.
Fare düğmelerinin geçerli durumunu veya fare işaretçisinin konumunu biliyorsanız ve bir fare olayını işlemeyi önlemek istiyorsanız, MouseButtons sınıfının ve özelliklerini de kullanabilirsiniz MousePosition Control . MouseButtons Şu anda basılan fare düğmelerine ilişkin bilgileri döndürür. , MousePosition Fare işaretçisinin ekran koordinatlarını döndürür ve tarafından döndürülen değere eşdeğerdir Position .
Ekran ve Istemci koordinatları arasında dönüştürme
Bazı fare konum bilgileri istemci koordinatlarındaki ve bazıları ekran koordinatlarından olduğundan, bir noktayı bir koordinat sisteminden diğerine dönüştürmeniz gerekebilir. PointToClient PointToScreen Sınıfı üzerinde kullanılabilen ve yöntemlerini kullanarak bunu kolayca yapabilirsiniz Control .
Standart tıklama olayı davranışı
fare tıklaması olaylarını uygun sırada işlemek istiyorsanız, Windows Forms denetimlerinde tıklama olaylarının nasıl oluşturulduğu sırayı bilmeniz gerekir. tüm Windows Forms denetimleri, bir fare düğmesine basıldığında ve serbest bırakıldığında (hangi fare düğmesinden bağımsız olarak), her bir denetim için aşağıdaki listede belirtilenler dışında, tıklama olaylarını aynı sırada yükseltir. Aşağıdaki listede, tek bir fare düğmesine tıklama için oluşturulan olayların sırası gösterilmektedir:
MouseDown olay.
Click olay.
MouseClick olay.
MouseUp olay.
Bir çift fare düğmesi için oluşturulan olayların sırası aşağıda verilmiştir:
MouseDown olay.
Click olay.
MouseClick olay.
MouseUp olay.
MouseDown olay.
DoubleClick olay. (Bu, söz konusu denetimin StandardDoubleClick Stil biti olarak ayarlanmış olmasına bağlı olarak farklılık gösterebilir
true. Bit ayarlama hakkında daha fazla bilgi için ControlStyles SetStyle yöntemine bakın.)MouseDoubleClick olay.
MouseUp olay.
fare tıklama olaylarının sırasını gösteren bir kod örneği için bkz. nasıl yapılır: Windows Forms denetimlerinde kullanıcı giriş olaylarını işleme.
Bireysel denetimler
Aşağıdaki denetimler standart fare tıklaması olay davranışına uymuyor:
-
Not
Denetim için ComboBox , Kullanıcı düzenleme alanına, düğmeye veya listedeki bir öğeye tıkladığında daha sonra ayrıntılı olay davranışı oluşur.
Sol tıklama: Click , MouseClick
Sağ tıklama: hiçbir tıklama olayı tetiklendi
Sol çift tıklama: Click , MouseClick ; Click , MouseClick
Sağ çift tıklama: hiçbir tıklama olayı tetiklendi
TextBox, RichTextBox , ListBox , MaskedTextBox ve CheckedListBox denetimleri
Not
Daha sonra ayrıntılı olay davranışı Kullanıcı bu denetimlerin içinde herhangi bir yere tıkladığında oluşur.
Sol tıklama: Click , MouseClick
Sağ tıklama: hiçbir tıklama olayı tetiklendi
Sol çift tıklama: Click , MouseClick , DoubleClick , MouseDoubleClick
Sağ çift tıklama: hiçbir tıklama olayı tetiklendi
ListView denetimle
Not
Daha sonra ayrıntılı olay davranışı yalnızca Kullanıcı denetimdeki öğelere tıkladığı zaman gerçekleşir ListView . Denetimde başka herhangi bir yere tıklama için hiçbir olay oluşturulmaz. Daha sonra açıklanan olaylara ek olarak, BeforeLabelEdit AfterLabelEdit denetimi ile doğrulama kullanmak istiyorsanız, sizi ilgilendirebilecek ve olayları vardır ListView .
Sol tıklama: Click , MouseClick
Sağ tıklayın: Click , MouseClick
Sol çift tıklama: Click , MouseClick ; DoubleClick , MouseDoubleClick
Sağ çift tıklayın: Click , MouseClick ; DoubleClick , MouseDoubleClick
TreeView denetimle
Not
Daha sonra ayrıntılı olay davranışı yalnızca Kullanıcı öğelerin kendilerini tıkladığı veya denetimdeki öğelerin sağında oluşur TreeView . Denetimde başka herhangi bir yere tıklama için hiçbir olay oluşturulmaz. Daha sonra açıklananlara ek olarak, BeforeCheck BeforeSelect BeforeLabelEdit AfterSelect AfterCheck AfterLabelEdit denetimi ile doğrulama kullanmak istiyorsanız,,,, ve olayları ilginizi çekmiş olabilir TreeView .
Sol tıklama: Click , MouseClick
Sağ tıklayın: Click , MouseClick
Sol çift tıklama: Click , MouseClick ; DoubleClick , MouseDoubleClick
Sağ çift tıklayın: Click , MouseClick ; DoubleClick , MouseDoubleClick
İki durumlu denetimlerin boyama davranışı
Sınıfından türetilen denetimler gibi geçiş denetimleri ButtonBase , fare tıklama olayları ile birlikte aşağıdaki farklı boyama davranışına sahiptir:
Kullanıcı fare düğmesine basar.
Denetim, basılan durumu boyar.
MouseDownOlay tetiklenir.
Kullanıcı fare düğmesini serbest bırakır.
Denetim, oluşturulan durumu boyar.
ClickOlay tetiklenir.
MouseClickOlay tetiklenir.
MouseUpOlay tetiklenir.
Not
Fare düğmesi kapalıyken Kullanıcı işaretçiyi iki durumlu denetimin dışına taşımışsa (basıldığında fareyi denetimin dışına taşımak gibi Button ), geçiş denetimi, ortaya çıkan durumu boyar ve yalnızca MouseUp olay meydana gelir. ClickVeya MouseClick olayları bu durumda gerçekleşmeyecektir.