Win odaklı kontrol bulmak için tercih edilen yöntem, uygulama nedir?
Şu anda Win (klavye) alan kullanıcı giriş denetimi bulmak için tercih edilen/en kolay yolu nedir?
Şimdiye kadar aşağıdaki ile geldi:
public static Control FindFocusedControl(Control control)
{
var container = control as ContainerControl;
return (null != container
? FindFocusedControl(container.ActiveControl)
: control);
}
Bir formdan, bu sadece çağrılabilir gibi .NET 3.5 bu formdaki bir uzantısı yöntemi olarak tanımlanabilir bile) -
var focused = FindFocusedControl(this);
Bu uygun mudur?
Yerine kullanıyor olmam için bir yerleşik bir yöntem var mı?
ActiveControl tek bir çağrı hiyerarşileri kullanıldığında yeterli olduğunu unutmayın. Hayal:
Form
TableLayoutPanel
FlowLayoutPanel
TextBox (focused)
(formİnstance).ActiveControl TableLayoutPanel, TextBox ActiveControl sadece yaprak kontrol ararken kontrol ağacında anında aktif dönen çocuk gibi görünüyor, çünkü () referans döndürür.
CEVAP
Eğer zaten Windows API için başka telefonlar varsa, Peters çözüm kullanmanın bir sakıncası yok. Ama ben bu konuda endişelerini anlamak ve eğiliminde olacaktır seninkiyle benzer bir çözüm, sadece Çerçeve fonksiyonları kullanarak. Sonuçta performans farkı eğer bir tane varsa () önemli olmamalı.
Olmayan bir özyinelemeli yaklaşım kabul ederdim:
public static Control FindFocusedControl(Control control)
{
var container = control as IContainerControl;
while (container != null)
{
control = container.ActiveControl;
container = control as IContainerControl;
}
return control;
}
Ruby on Rails web uygulama grafik oluş...
PHP diziler depolamak için tercih edil...
Bu bir C döndürülen değeri işlemek içi...
Bir dict başlatma için tercih edilen s...
Yapı ve Bunun projeleri oluşturmak içi...