SORU
12 Ocak 2009, PAZARTESİ


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
13 Ocak 2009, Salı


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;
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • TechnoBuffalo

    TechnoBuffal

    8 HAZİRAN 2007
  • Tome Rodrigo

    Tome Rodrigo

    9 Temmuz 2006
  • TVNorge

    TVNorge

    5 EKİM 2006