PenInputPanel Örneği

Bu örnek, PenInputPanel nesnesini tümleştirerek Otomatik Talep Formu örneğini oluşturur. Örnek, AutoClaims klasöründeki C# PIPanel dizinindedir.

Not

Bu örnek, sisteminizin kalem cihazıyla donatılmış olmasını gerektirir. Yalnızca fare (veya başka bir insan dışı arabirim cihazı (HID) işaret cihazı) kullanıyorsanız, PenInputPanel görünmez durumda.

 

Otomatik Talep Formu örneği hakkında daha fazla bilgi için bkz. Otomatik Talep Formu Örneği. PenInputPanel nesnesi hakkında daha fazla bilgi için bkz. PenInputPanel SınıfKullanarak Giriş Panelini Programlama.

Örnekte, Otomatik TalepLer Formu, kullanıcının taleple ilgili bilgileri koymasının istendiği beş alan içerir: ilke numarası, sigortalı ad, otomobilin yılı, markası ve modeli. Kalemle değer girmek için kolay bir araç sağlamak üzere her giriş alanına bir PenInputPanel nesnesi eklenir.

Formunuzun giriş alanlarına bir PenInputPanel nesnesi eklemek için iki teknik vardır. İlk teknik, tasarım zamanında her giriş alanına nesnenin ayrı bir örneğini atamaktır. İkincisi, nesnenin tek bir örneğini oluşturmak ve ardından çalışma zamanında bu nesne örneğini odak aldığında bir alana eklemektir. Bu örnek her iki tekniği de gösterir.

Hangi tekniğin kullanılacağına karar verirken bazı dezavantajlar vardır. Her form alanı için nesnenin benzersiz bir örneğinin oluşturulması, form yüklendiğinde biraz daha fazla bellek gerektirir. Ancak, çalışma zamanında geçerli alana tek bir örnek ataması yapmayı, alanlar için odak olaylarını işlemeye gerek kalmadan sağlar.

PenInputPanel nesnesi yalnızca Tablet PC'de desteklendiğinden, örnek özel durum işleme bloğu içinde PenInputPanel nesnelerini oluşturur.

Alan Başına Bir Nesne

Örnek, ilke numarası (inkEdPolicyNumber) ve sigortalı ad (inkEdName) için giriş alanlarını PenInputPanel nesnesinin benzersiz bir örneğini atayarak ilk tekniği (alan başına PenInputPanel nesnesi) gösterir. PenInputPanel nesnesi için aşırı yüklenmiş bir oluşturucu, giriş denetiminin adını bağımsız değişken olarak alabilir ve böylece denetimleri ilişkilendirebilir. Formun Load olay işleyicisinden aşağıdaki satırlar şunu gösterir:

pipPolicyNumber = new PenInputPanel(inkEdPolicyNumber);
pipName = new PenInputPanel(inkEdName);

Form Başına Bir Nesne

İkinci teknik de örnekte gösterilmiştir: PenInputPanel nesnesinin pipSharedtek bir örneği Year, Make ve Model giriş alanları arasında paylaşılır. Paylaşılan nesne, varsayılan oluşturucu kullanılarak oluşturulur.

pipShared = new PenInputPanel();

Bu tekniği kullanmak, formunuzun PenInputPanel nesnesinin yalnızca tek bir örneğine sahip olmasını gerektirir. Bu işlem bellek tasarrufu sağlar, ancak giriş alanı odağı aldığında olayı işlemek için kod eklemeniz gerekir. Bir PenInputPanel nesnesinin paylaşılan örneğini kullanan bir denetim odağa geçtiğinde, PenInputPanel nesnesinin AttachedEditControl özelliğini o denetim olarak ayarlayın. Aşağıdaki kodda Year, Make ve Model alanlarının Enter olayları için bir olay işleyicisi gösterilmektedir.

private void inkEdYear_Enter(object sender, System.EventArgs e)
{
    // Attach the shared PenInputPanel to the Year field
    pipShared.AttachedEditControl = inkEdYear;

    // set the NUMBER factoid to bias recognition for numbers
    pipShared.Factoid = "NUMBER";

    // Enable correction UI on the inkEdYear field
    pipShared.EnableTsf(true);
}

private void inkEdMake_Enter(object sender, System.EventArgs e)
{
    // Attach the shared PenInputPanel to the Make field
    pipShared.AttachedEditControl = inkEdMake;

    // reset the factoid to bias recognition for general text
    pipShared.Factoid = "DEFAULT";

    // Enable correction UI on the inkEdMake field
    pipShared.EnableTsf(true);
}
private void inkEdModel_Enter(object sender, System.EventArgs e)
{
    // Attach the shared PenInputPanel to the Model field
    pipShared.AttachedEditControl = inkEdModel;

    // reset the factoid to bias recognition for general text
    pipShared.Factoid = "DEFAULT";

    // Enable correction UI on the inkEdModel field
    pipShared.EnableTsf(true);
}

Odak yeni bir denetime değiştiğinde ayarlanması gereken özellikleri ayarladığınızdan emin olun. Örneğin, önceki olay işleyicilerinde Factoid özelliği uygun şekilde ayarlanmıştır.

Kullanılabilirlik Konuları

Uygulamanızda PenInputPanel nesnesini kullanırken aşağıdaki kullanılabilirlik konularını göz önünde bulundurun.

PenInputPanel'i konumlandırma

Alanlar bu örnekteki forma dikey olarak yerleştirildiğinden, her giriş denetimi için PenInputPanel kullanıcı arabirimi, kullanımı kolaylaştırmak için giriş denetiminin sağında biraz konumlandırılır. Bu, PenInputPanel'in bir sonraki düzenleme kutusunu kaplamasını önleyerek sonraki düzenleme kutusunu hedeflemeyi kolaylaştırır.

pipShared.HorizontalOffset = 32;
pipPolicyNumber.HorizontalOffset = 32;
pipName.HorizontalOffset = 32;

Görüntülenecek Giriş Paneli'ni seçme

İlke numaraları genellikle sayı, harf ve diğer karakterlerin birleşimi olduğundan, tanıma hatalarına eğilimli olabilir. Bu nedenle örnek, PenInputPanel nesnesi tarafından görüntülenen varsayılan paneli ilke numarası alanına eklendiğinde klavye olarak ayarlar.

pipPolicyNumber.DefaultPanel = PanelType.Keyboard;

PenInputPanel nesnesinin varsayılan davranışı, kullanıcının en son seçtiği paneli kullanmaktır.

Metin Hizmetleri Sistemi Düzeltme Kullanıcı Arabirimi

Bu örnekte tüm giriş alanları InkEdit denetimleri'dir. InkEdit denetiminin Metin Hizmetleri Çerçevesi (TSF) için yerleşik desteği olduğundan ve bu nedenle PenInputPanel nesnesinden alınan girişler için yerinde düzeltme kullanıcı arabirimini destekleyebildiğinden bu önemlidir.

EnableTsf için varsayılan değer DOĞRU. Bu, PenInputPanel nesnesinin ekli denetimde Metin Hizmetleri Çerçevesi'ni (TSF) başlatmayı denemesine neden olur. Başarılı olursa, düzeltme kullanıcı arabirimi denetimde gösterilir ve tanıma alternatiflerine erişime izin verir. FALSE parametresiyle bu yöntemi çağırmak, ekli denetimde TSF'yi kapatmayı dener.

InkEdit denetimi zaten bir düzeltme kullanıcı arabirimi sağlar, ancak örnek EnableTsf, el yazısı tanıma sonuçlarını denetime göndermek için SendInput işlevi yerine TSF ekleme tanıyıcı bağlamını kullanmak üzere PenInputPanel etkinleştirmek için kullanılır. Sonuç olarak, alan artık odakta olmasa bile metin eklenebilir.

  pipName.EnableTsf(true);
  pipPolicyNumber.EnableTsf(true);

Formu Kapatma

Windows Form Tasarımcısı tarafından oluşturulan kodda, form başlatıldığında InkEdit ve InkPicture denetimleri formun bileşen listesine eklenir. Form kapatıldığında InkEdit ve InkPicture denetimleri ve aynı zamanda formun diğer bileşenleri, formun Dispose yöntemi tarafından serbest bırakılır. Formun Dispose yöntemi, form için oluşturulan Mürekkep nesnelerini de yok eder.