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

  • DigitalRev TV

    DigitalRev T

    30 AĞUSTOS 2007
  • Erica Griffin

    Erica Griffi

    8 HAZİRAN 2009
  • Numberphile

    Numberphile

    15 EYLÜL 2011