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

  • eyes4beautee

    eyes4beautee

    17 HAZİRAN 2011
  • Jonah Penna

    Jonah Penna

    11 EYLÜL 2005
  • Michael Zhang

    Michael Zhan

    8 EYLÜL 2012