WinForms ile, ekrana göre kontrol değiştiren bir konuma uyarı verilmesinin bir yolu var mı?Bir Kontrolün ekran konumu değiştiğinde nasıl izlenecek?
Üzerinde bir düğme bulunan bir Formunuz olduğunu ve düğmenin ekrandaki mevcut piksel konumundan ne zaman taşındığını bilmek istediğinizi varsayalım. Düğme, ana Formunda farklı bir konuma taşınırsa, LocationChanged olayını açıkça kullanabilirsiniz, ancak Form kullanıcı tarafından taşındıysa, düğmenin görsel olarak taşındığını nasıl anlarsınız?
Bu basitleştirilmiş durumda, hızlı yanıt Formun LocationChanged ve SizeChanged olaylarını izlemek içindir, ancak rasgele bir sayıda yuvalama düzeyi olabilir, bu nedenle her üst öğe için zincirdeki ana form için bu olayları izlemek mümkün değildir. Konumun değişip değişmediğini kontrol etmek için bir zamanlayıcı kullanmak da hile gibi görünüyor (kötü bir şekilde).
Kısa versiyon: sadece keyfi bir denetim nesnesi göz önüne alındığında, ekranda zaman o denetimin konumu değişiklikleri bilmek için bir yol denetimin üst hiyerarşi bilgisi olmadan var mı?
isteği ile bir illüstrasyon, Bu "iğneleme" kavramı varolan yetenektir ancak şu anda ana formu ve nasıl çocuk kontrol boğulan bir bilgi gerektirdiğini
Not; Bu çözmeye çalıştığım sorun değil. Bu kontrol izleme mantığını, formları "sabitleştirebilen" formların kalıtsal bir formunda kapsüllemek istiyorum. Karmaşık ebeveyn takibiyle uğraşmak zorunda kalmadan ekranda bir kontrolün ne zaman hareket ettiğini bilmek için girebileceğim bazı mesaj pompa sihirbazı var mı?
Neden tüm veliler izlenmesi değil tüm yol mümkün değildir üst pencereye? –
Tümü, Doldur'a yerleştirilmiş 20 yuvalama seviyeniz olduğunu varsayalım. Ana biçimi, kenarlığı sürükleyerek yeniden boyutlandırdığınızda, SizeChanged olayı, sürükleme sırasında birçok kez her bir düzeyde tetiklenecektir. Bu bir ton gereksiz olay. İkinci olarak, bu kontroller bir yerden diğerine geçebilir (tamamen farklı yuvalanmış hiyerarşileri), bu nedenle her ebeveyn için ParentChanged'i bağlasanız bile, değişiklik yaptıktan sonra, tüm ebeveyn kontrolünü saklamadan eski ebeveynlerden SizeChanged/LocationChanged'i kaldıramazsınız geçiş yaparken bilgi. Her şey çok kirli görünüyor. – roken
Bu, soruyu gerektirenlerden biri gibi görünüyor: "Ne yapmaya çalışıyorsunuz?" –