Aracılığıyla paylaş


Klavye olayları

Klavye etkinlikleri ve odak

Hem donanım hem de dokunmatik klavyeler için aşağıdaki klavye olayları oluşabilir.

Event Description
KeyDown Bir tuşa basıldığında gerçekleşir.
KeyUp Bir anahtar serbest bırakıldığında gerçekleşir.

Önemli

Bazı XAML denetimleri giriş olaylarını dahili olarak işler. Bu gibi durumlarda, olay dinleyiciniz ilişkili işleyiciyi çağırmadığından bir giriş olayının gerçekleşmediği görünebilir. Genellikle bu tuş alt kümesi, temel klavye erişilebilirliği için yerleşik destek sağlamak üzere sınıf işleyicisi tarafından işlenir. Örneğin, Button sınıfı hem Space tuşu hem de Enter tuşu (hem de OnPointerPressed) için OnKeyDown olaylarını geçersiz kılar ve bunları denetimin Click olayına yönlendirir. Bir tuşa basma denetimi sınıfı tarafından işlendiğinde , KeyDown ve KeyUp olayları tetiklenmez.
Bu, düğmeye parmakla dokunmaya veya fareyle tıklamaya benzer şekilde, düğmeyi çağırmak için yerleşik bir klavye eşdeğeri sağlar. Boşluk veya Enter dışındaki tuşlar KeyDown ve KeyUp olaylarını tetikler . Olayların sınıf tabanlı işlenmesinin nasıl çalıştığı hakkında daha fazla bilgi için (özellikle "Denetimlerdeki giriş olay işleyicileri" bölümü), bkz Olaylara ve yönlendirilen olaylara genel bakış.

Kullanıcı arabiriminizdeki denetimler yalnızca giriş odağı olduğunda klavye olayları oluşturur. Kullanıcı doğrudan düzendeki denetime tıkladığında veya dokunduğunda veya içerik alanında bir sekme dizisine geçmek için Sekme tuşunu kullandığında tek bir denetim odak kazanır.

Odağı zorlamak için denetimin Odak yöntemini de çağırabilirsiniz. Kullanıcı arabiriminiz yüklendiğinde klavye odağı varsayılan olarak ayarlanmadığından, kısayol tuşlarını uygularken bu gereklidir. Daha fazla bilgi için bu konunun devamında yer alan Kısayol tuşları örneğine bakın.

Denetimin giriş odağını alması için etkin, görünür ve IsTabStop ve HitTestVisible özellik değerleri true olmalıdır. Bu, çoğu denetim için varsayılan durumdur. Bir denetim giriş odağına sahip olduğunda, bu konunun ilerleyen bölümlerinde açıklandığı gibi klavye girişi olaylarını tetikleyebilir ve yanıtlayabilir. Ayrıca, GotFocus ve LostFocus olaylarını işleyerek odağı alan veya kaybeden bir denetime yanıt verebilirsiniz.

Varsayılan olarak, denetimlerin sekme dizisi, Genişletilebilir Uygulama Biçimlendirme Dili'nde (XAML) göründükleri sıradır. Ancak, TabIndex özelliğini kullanarak bu sırayı değiştirebilirsiniz. Daha fazla bilgi için bkz. Klavye erişilebilirliğini uygulama.

Klavye olay işleyicileri

Giriş olay işleyicisi, aşağıdaki bilgileri sağlayan bir temsilci uygular:

  • Olayın göndereni. Gönderen, olay işleyicisinin eklendiği nesneyi bildirir.
  • Olay verileri. Klavye olayları için bu veriler bir KeyRoutedEventArgs örneği olacaktır. İşleyicilerin temsilcisi KeyEventHandler'dır. Çoğu işleyici senaryosu için KeyRoutedEventArgs'in en ilgili özellikleri Key ve muhtemelen KeyStatus'dur.
  • ÖzgünKaynak. Klavye olayları yönlendirilen olaylar olduğundan, olay verileri OriginalSource sağlar. Olayların bir nesne ağacı üzerinden yukarı doğru ilerlemesine kasıtlı olarak izin verirseniz, OriginalSource bazen gönderici yerine endişe edilen nesne olabilir. Ancak bu, tasarımınıza bağlıdır. Gönderen yerine OriginalSource'un nasıl kullanılacağı hakkında daha fazla bilgi için, bu konunun "Klavyeyle Yönlendirilen Olaylar" bölümüne veya Olaylara ve yönlendirilen olaylara genel bakış bölümüne bakın.

Klavye olay işleyicisi ekleme

Olayı üye olarak içeren herhangi bir nesne için klavye olay işleyicisi işlevleri ekleyebilirsiniz. Buna uielement türetilmiş tüm sınıflar dahildir. Aşağıdaki XAML örneği, bir Grid için KeyUp olayına yönelik işleyicilerin nasıl ekleneceğini göstermektedir.

<Grid KeyUp="Grid_KeyUp">
  ...
</Grid>

Koda bir olay işleyicisi de ekleyebilirsiniz. Daha fazla bilgi için bkz. Olaylara ve yönlendirilen olaylara genel bakış.

Klavye olay işleyicisi tanımlama

Aşağıdaki örnekte, önceki örnekte eklenmiş olan KeyUp olay işleyicisi için tamamlanmamış olay işleyicisi tanımı gösterilmektedir.

void Grid_KeyUp(object sender, KeyRoutedEventArgs e)
{
    //handling code here
}
Private Sub Grid_KeyUp(ByVal sender As Object, ByVal e As KeyRoutedEventArgs)
    ' handling code here
End Sub
void MyProject::MainPage::Grid_KeyUp(
  Platform::Object^ sender,
  Windows::UI::Xaml::Input::KeyRoutedEventArgs^ e)
  {
      //handling code here
  }

KeyRoutedEventArgs'i Kullanma

Tüm klavye olayları olay verileri için KeyRoutedEventArgs kullanır ve KeyRoutedEventArgs aşağıdaki özellikleri içerir:

Sanal anahtarlar

Bir tuşa basıldığında KeyDown olayı oluşturulur. Benzer şekilde, bir tuş serbest bırakıldığında KeyUp tetiklenir. Genellikle belirli bir anahtar değerini işlemek için olayları dinlersiniz. Hangi tuşa basıldığını veya serbest bırakıldığını belirlemek için olay verilerindeki Anahtar değerini denetleyin. Anahtar bir VirtualKey değeri döndürür. VirtualKey numaralandırması desteklenen tüm anahtarları içerir.

Değiştirici tuşlar

Değiştirici tuşlar, kullanıcıların genellikle diğer tuşlarla birlikte bastığı Ctrl veya Shift gibi tuşlardır. Uygulamanız, uygulama komutlarını çağırmak için özel klavye kısayolları olarak bu bileşimleri kullanabilir.

Uyarı

Yerleşik klavye kısayolları için bkz. Erişim tuşları ve Klavye hızlandırıcıları.

KeyDown ve KeyUp olay işleyicilerinde kısayol tuş bileşimlerini algılayabilirsiniz. Değiştirici olmayan bir tuş için klavye olayı gerçekleştiğinde, değiştirici tuşun basılı durumda olup olmadığını de kontrol edebilirsiniz.

Alternatif olarak, CoreWindow'unGetKeyState() işlevi (CoreWindow.GetForCurrentThread() aracılığıyla elde edilir), değiştirici olmayan bir tuşa basıldığında değiştirici durumunu denetlemek için de kullanılabilir.

Aşağıdaki örnekler bu ikinci yöntemi uygularken, ilk uygulama için taslak kodunu da içerir.

Uyarı

Alt tuşu VirtualKey.Menu değeriyle gösterilir.

Kısayol tuşları örneği

Aşağıdaki örnekte özel kısayol tuşları kümesinin nasıl uygulandığı gösterilmektedir. Bu örnekte kullanıcılar Yürüt, Duraklat ve Durdur düğmelerini veya Ctrl+P, Ctrl+A ve Ctrl+S klavye kısayollarını kullanarak medya kayıttan yürütmeyi denetleyebiliyor. Düğme XAML'i, düğme etiketlerindeki araç ipuçlarını ve AutomationProperties özelliklerini kullanarak kısayolları gösterir. Bu öz belgelerleme, uygulamanızın kullanılabilirliğini ve erişilebilirliğini artırmak için önemlidir. Daha fazla bilgi için bkz. Klavye erişilebilirliği.

Ayrıca, sayfa yüklendiğinde giriş odağını kendisine ayarlar. Bu adım olmadan, hiçbir denetimin ilk giriş odağı olmaz ve kullanıcı giriş odağını el ile ayarlayana kadar (örneğin, bir denetime sekmeyle tıklayarak) uygulama giriş olaylarını tetiklemez.

<Grid KeyDown="Grid_KeyDown">

  <Grid.RowDefinitions>
    <RowDefinition Height="Auto" />
    <RowDefinition Height="Auto" />
  </Grid.RowDefinitions>

  <MediaElement x:Name="DemoMovie" Source="xbox.wmv"
    Width="500" Height="500" Margin="20" HorizontalAlignment="Center" />

  <StackPanel Grid.Row="1" Margin="10"
    Orientation="Horizontal" HorizontalAlignment="Center">

    <Button x:Name="PlayButton" Click="MediaButton_Click"
      ToolTipService.ToolTip="Shortcut key: Ctrl+P"
      AutomationProperties.AcceleratorKey="Control P">
      <TextBlock>Play</TextBlock>
    </Button>

    <Button x:Name="PauseButton" Click="MediaButton_Click"
      ToolTipService.ToolTip="Shortcut key: Ctrl+A"
      AutomationProperties.AcceleratorKey="Control A">
      <TextBlock>Pause</TextBlock>
    </Button>

    <Button x:Name="StopButton" Click="MediaButton_Click"
      ToolTipService.ToolTip="Shortcut key: Ctrl+S"
      AutomationProperties.AcceleratorKey="Control S">
      <TextBlock>Stop</TextBlock>
    </Button>

  </StackPanel>

</Grid>
//showing implementations but not header definitions
void MainPage::OnNavigatedTo(NavigationEventArgs^ e)
{
    (void) e;    // Unused parameter
    this->Loaded+=ref new RoutedEventHandler(this,&amp;MainPage::ProgrammaticFocus);
}
void MainPage::ProgrammaticFocus(Object^ sender, RoutedEventArgs^ e) 
{
    this->Focus(Windows::UI::Xaml::FocusState::Programmatic);
}

void KeyboardSupport::MainPage::MediaButton_Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
{
    FrameworkElement^ fe = safe_cast<FrameworkElement^>(sender);
    if (fe->Name == "PlayButton") {DemoMovie->Play();}
    if (fe->Name == "PauseButton") {DemoMovie->Pause();}
    if (fe->Name == "StopButton") {DemoMovie->Stop();}
}


bool KeyboardSupport::MainPage::IsCtrlKeyPressed()
{
    auto ctrlState = CoreWindow::GetForCurrentThread()->GetKeyState(VirtualKey::Control);
    return (ctrlState & CoreVirtualKeyStates::Down) == CoreVirtualKeyStates::Down;
}

void KeyboardSupport::MainPage::Grid_KeyDown(Platform::Object^ sender, Windows::UI::Xaml::Input::KeyRoutedEventArgs^ e)
{
    if (e->Key == VirtualKey::Control) isCtrlKeyPressed = true;
}


void KeyboardSupport::MainPage::Grid_KeyUp(Platform::Object^ sender, Windows::UI::Xaml::Input::KeyRoutedEventArgs^ e)
{
    if (IsCtrlKeyPressed()) 
    {
        if (e->Key==VirtualKey::P) { DemoMovie->Play(); }
        if (e->Key==VirtualKey::A) { DemoMovie->Pause(); }
        if (e->Key==VirtualKey::S) { DemoMovie->Stop(); }
    }
}
protected override void OnNavigatedTo(NavigationEventArgs e)
{
    // Set the input focus to ensure that keyboard events are raised.
    this.Loaded += delegate { this.Focus(FocusState.Programmatic); };
}

private void MediaButton_Click(object sender, RoutedEventArgs e)
{
    switch ((sender as Button).Name)
    {
        case "PlayButton": DemoMovie.Play(); break;
        case "PauseButton": DemoMovie.Pause(); break;
        case "StopButton": DemoMovie.Stop(); break;
    }
}

private static bool IsCtrlKeyPressed()
{
    var ctrlState = CoreWindow.GetForCurrentThread().GetKeyState(VirtualKey.Control);
    return (ctrlState & CoreVirtualKeyStates.Down) == CoreVirtualKeyStates.Down;
}

private void Grid_KeyDown(object sender, KeyRoutedEventArgs e)
{
    if (IsCtrlKeyPressed())
    {
        switch (e.Key)
        {
            case VirtualKey.P: DemoMovie.Play(); break;
            case VirtualKey.A: DemoMovie.Pause(); break;
            case VirtualKey.S: DemoMovie.Stop(); break;
        }
    }
}
Private isCtrlKeyPressed As Boolean
Protected Overrides Sub OnNavigatedTo(e As Navigation.NavigationEventArgs)

End Sub

Private Function IsCtrlKeyPressed As Boolean
    Dim ctrlState As CoreVirtualKeyStates = CoreWindow.GetForCurrentThread().GetKeyState(VirtualKey.Control);
    Return (ctrlState & CoreVirtualKeyStates.Down) == CoreVirtualKeyStates.Down;
End Function

Private Sub Grid_KeyDown(sender As Object, e As KeyRoutedEventArgs)
    If IsCtrlKeyPressed() Then
        Select Case e.Key
            Case Windows.System.VirtualKey.P
                DemoMovie.Play()
            Case Windows.System.VirtualKey.A
                DemoMovie.Pause()
            Case Windows.System.VirtualKey.S
                DemoMovie.Stop()
        End Select
    End If
End Sub

Private Sub MediaButton_Click(sender As Object, e As RoutedEventArgs)
    Dim fe As FrameworkElement = CType(sender, FrameworkElement)
    Select Case fe.Name
        Case "PlayButton"
            DemoMovie.Play()
        Case "PauseButton"
            DemoMovie.Pause()
        Case "StopButton"
            DemoMovie.Stop()
    End Select
End Sub

Uyarı

XAML'de AutomationProperties.AcceleratorKey veya AutomationProperties.AccessKey ayarı, söz konusu eylemi çağırmak için kısayol tuşunu belgeleyen dize bilgileri sağlar. Bilgiler Microsoft Narrator gibi UI Automation istemcileri tarafından yakalanır ve genellikle doğrudan kullanıcıya sağlanır.

AutomationProperties.AcceleratorKey veya AutomationProperties.AccessKey ayarının kendi başına herhangi bir eylemi yoktur. Uygulamanızda klavye kısayolu davranışını gerçekten uygulamak için KeyDown veya KeyUp olaylarının işleyicilerini eklemeniz gerekir. Ayrıca, erişim anahtarı için alt çizgi metin dekorasyonu otomatik olarak sağlanmaz. Kullanıcı arabiriminde altı çizili metin göstermek istiyorsanız, anımsatıcınızdaki belirli bir anahtarın metninin altını satır içi Alt Çizgi biçimlendirmesi olarak açıkça çizmeniz gerekir.

 

Klavyeyle yönlendirilen olaylar

Bazı olaylar KeyDown ve KeyUp dahil olmak üzere yönlendirilmiş olaylardır. Yönlendirilen olaylar kabarcık yönlendirme stratejisini kullanır. Kabarcık yönlendirme stratejisi, bir olayın alt nesneden kaynaklandığı ve ardından nesne ağacındaki ardışık üst nesnelere yönlendirilmesi anlamına gelir. Bu, aynı olayı işlemek ve aynı olay verileriyle etkileşime geçmek için başka bir fırsat sunar.

Bir Tuval ve iki Button nesnesi için KeyUp olaylarını işleyen aşağıdaki XAML örneğini göz önünde bulundurun. Bu durumda, odak Button nesnelerinden biri tarafından tutulurken bir anahtarı serbest bırakırsanız KeyUp olayı tetikler. Daha sonra olay üst Tuvale iletilir.

<StackPanel KeyUp="StackPanel_KeyUp">
  <Button Name="ButtonA" Content="Button A"/>
  <Button Name="ButtonB" Content="Button B"/>
  <TextBlock Name="statusTextBlock"/>
</StackPanel>

Aşağıdaki örnekte, önceki örnekte karşılık gelen XAML içeriği için KeyUp olay işleyicisinin nasıl uygulandığı gösterilmektedir.

void StackPanel_KeyUp(object sender, KeyRoutedEventArgs e)
{
    statusTextBlock.Text = String.Format(
        "The key {0} was pressed while focus was on {1}",
        e.Key.ToString(), (e.OriginalSource as FrameworkElement).Name);
}

Önceki işleyicide OriginalSource özelliğinin kullanımına dikkat edin. Burada , OriginalSource olayı tetikleyen nesneyi raporlar. Nesne StackPanel olamaz çünkü StackPanel bir denetim değildir ve odağı olamaz. StackPanel'daki iki düğmeden yalnızca biri olayı tetiklemiş olabilir, ancak hangisi? Olayı üst nesne üzerinde işliiyorsanız, asıl olay kaynağı nesnesini ayırt etmek için OriginalSource kullanırsınız.

Olay verilerinde Handled özelliği

Olay işleme stratejinize bağlı olarak, yalnızca bir olay işleyicisinin baloncuk olayına tepki vermesini isteyebilirsiniz. Örneğin, Düğme denetimlerinden birine bağlı belirli bir KeyUp işleyiciniz varsa, bu olayı işlemek için ilk fırsata sahip olur. Bu durumda, üst panelin olayı da işlemesini istemeyebilirsiniz. Bu senaryo için olay verilerinde Handled özelliğini kullanabilirsiniz.

Yönlendirilmiş bir olay veri sınıfındaki Handled özelliğinin amacı, daha önce olay yolunda kaydettiğiniz başka bir işleyicinin zaten işlem gerçekleştirdiğini bildirmektir. Bu, yönlendirilen olay sisteminin davranışını etkiler. Bir olay işleyicisinde İşlenendeğerini true olarak ayarladığınızda, bu olay yönlendirmeyi durdurur ve ardışık üst öğelere gönderilmez.

AddHandler ve önceden işlenmiş klavye olayları

İşlenmiş olarak işaretlediğiniz olaylar üzerinde işlem yapabilecek işleyicileri eklemek için özel bir teknik kullanabilirsiniz. Bu teknik, C# dilinde += gibi işleyicileri eklemek için XAML özniteliklerini veya dile özgü söz dizimini kullanmak yerine bir işleyiciyi kaydetmek için AddHandler yöntemini kullanır.

Bu tekniğin genel sınırlamalarından biri , AddHandler API'sinin söz konusu yönlendirilen olayı tanımlayan RoutedEvent türünde bir parametre almasıdır. Yönlendirilen tüm olaylar bir RoutedEvent tanımlayıcısı sağlamaz ve bu nedenle bu önemli nokta, İşlenen durumunda hangi yönlendirilmiş olayların hala işlenebileceğini etkiler. KeyDown ve KeyUp olayları UIElement üzerinde yönlendirilmiş olay tanımlayıcılarına (KeyDownEvent ve KeyUpEvent) sahiptir. Ancak, TextBox.TextChanged gibi diğer olayların yönlendirilmiş olay tanımlayıcıları yoktur ve bu nedenle AddHandler tekniğiyle kullanılamaz.

Klavye olaylarını ve davranışını geçersiz kılma

Klavye ve oyun yüzeyi gibi çeşitli giriş cihazları için tutarlı odak gezintisi sağlamak amacıyla, belirli denetimler (örneğin, GridView) için anahtar olayları geçersiz kılabilirsiniz.

Aşağıdaki örnekte, herhangi bir ok tuşuna basıldığında odağı GridView içeriğine taşımak için denetimi alt sınıflandıracak ve KeyDown davranışını geçersiz kılacağız.

  public class CustomGridView : GridView
  {
    protected override void OnKeyDown(KeyRoutedEventArgs e)
    {
      // Override arrow key behaviors.
      if (e.Key != Windows.System.VirtualKey.Left && e.Key !=
        Windows.System.VirtualKey.Right && e.Key !=
          Windows.System.VirtualKey.Down && e.Key !=
            Windows.System.VirtualKey.Up)
              base.OnKeyDown(e);
      else
        FocusManager.TryMoveFocus(FocusNavigationDirection.Down);
    }
  }

Uyarı

Yalnızca düzen için GridView kullanıyorsanız ItemsWrapGrid ile ItemsControl gibi diğer denetimleri kullanmayı göz önünde bulundurun.

Komut

Az sayıda kullanıcı arabirimi öğesi komut için yerleşik destek sağlar. Komut, temel alınan uygulamasında girişle ilgili yönlendirilmiş olayları kullanır. Tek bir komut işleyicisi çağırarak belirli bir işaretçi eylemi veya belirli bir hızlandırıcı anahtarı gibi ilgili ui girişinin işlenmesini sağlar.

Kullanıcı arabirimi öğesi için komut kullanılabiliyorsa, herhangi bir ayrı giriş olayı yerine komut API'lerini kullanmayı göz önünde bulundurun. Daha fazla bilgi için bkz. ButtonBase.Command.

Ayrıca, sıradan olay işleyicilerinden çağırdığınız komut işlevselliğini kapsüllemek için ICommand uygulayabilirsiniz. Bu, kullanılabilir Command özelliği olmasa bile komutu kullanmanıza olanak tanır.

Metin girişi ve denetimleri

Bazı denetimler klavye olaylarına kendi yöntemleriyle tepki gösterir. Örneğin , TextBox , klavye kullanılarak girilen metni yakalamak ve görsel olarak göstermek için tasarlanmış bir denetimdir. Tuş vuruşlarını yakalamak için kendi mantığında KeyUp ve KeyDown kullanır, ardından metin gerçekten değiştiyse kendi TextChanged olayını da oluşturur.

Genellikle, TextBox gibi metin girişini işlemeye yönelik herhangi bir denetime KeyUp ve KeyDown işleyicileri ekleyebilirsiniz. Ancak, amaçlanan tasarımının bir parçası olarak, bir denetim anahtar olaylar aracılığıyla ona yönlendirilen tüm anahtar değerlere yanıt vermeyebilir. Davranış her denetime özgüdür.

Örnek olarak, ButtonBase ( Button için temel sınıf), Ara Çubuğu veya Enter tuşunu denetleyebilmesi için KeyUp'ı işler. ButtonBase, Click olayının oluşturulması amacıyla KeyUp'ı farenin sol düğmesiyle eşdeğer kabul eder. ButtonBase, OnKeyUp sanal yöntemini geçersiz kıldığında olayın bu işlemesi gerçekleştirilir. Uygulamasında Handled değerini true olarak ayarlar. Sonuç olarak, bir anahtar olayı dinleyen bir düğmenin üst öğesi ( Ara Çubuğu söz konusu olduğunda) kendi işleyicileri için zaten işlenen olayı almaz.

Başka bir örnek de TextBox'tır. Ok tuşları gibi bazı tuşlar TextBox tarafından metin olarak kabul edilmez ve bunun yerine denetim kullanıcı arabirimi davranışına özgü olarak kabul edilir. TextBox bu olay durumlarını işlenmiş olarak işaretler.

Özel denetimler , OnKeyDown / OnKeyUp'ı geçersiz kılarak önemli olaylar için kendi benzer geçersiz kılma davranışlarını uygulayabilir. Özel denetiminiz belirli hızlandırıcı anahtarlarını işliyorsa veya TextBox için açıklanan senaryoya benzer bir denetim veya odak davranışına sahipse, bu mantığı kendi OnKeyDown / OnKeyUp geçersiz kılmalarınıza yerleştirmeniz gerekir.

Dokunmatik klavye

Metin girişi denetimleri, dokunmatik klavye için otomatik destek sağlar. Kullanıcı, dokunmatik girişi kullanarak giriş odağını bir metin denetimine ayarladığında, dokunmatik klavye otomatik olarak görünür. Giriş odağı bir metin denetiminde olmadığında dokunmatik klavye gizlenir.

Dokunmatik klavye göründüğünde, odaklanmış öğenin görünür kalmasını sağlamak için kullanıcı arabiriminizi otomatik olarak yeniden konumlandırır. Bu, kullanıcı arabiriminizin diğer önemli alanlarının ekrandan taşınmasına neden olabilir. Ancak, dokunmatik klavye göründüğünde varsayılan davranışı devre dışı bırakabilir ve kendi kullanıcı arabirimi ayarlamalarınızı yapabilirsiniz. Daha fazla bilgi için Dokunmatik klavye örneğine bakın.

Metin girişi gerektiren, ancak standart bir metin girişi denetiminden türetilmeyen özel bir denetim oluşturursanız, doğru UI Otomasyonu denetim desenlerini uygulayarak dokunmatik klavye desteği ekleyebilirsiniz. Daha fazla bilgi için Dokunmatik klavye örneğine bakın.

Dokunmatik klavyedeki tuşa basmalar, donanım klavyelerindeki tuş basları gibi KeyDown ve KeyUp olaylarını yükseltir. Ancak, dokunmatik klavye giriş denetiminde metin işleme için ayrılmış olan Ctrl+A, Ctrl+Z, Ctrl+X, Ctrl+C ve Ctrl+V için giriş olaylarını tetiklemeyecektir.

Metin denetiminin giriş kapsamını kullanıcının girmesini beklediğiniz veri türüyle eşleşecek şekilde ayarlayarak kullanıcıların uygulamanıza veri girmesini çok daha hızlı ve daha kolay hale getirebilirsiniz. Giriş kapsamı, sistemin giriş türü için özelleştirilmiş bir dokunmatik klavye düzeni sağlayabilmesi için denetim tarafından beklenen metin girişi türüne ilişkin bir ipucu sağlar. Örneğin, metin kutusu yalnızca 4 basamaklı PIN girmek için kullanılıyorsa InputScope özelliğini Sayı olarak ayarlayın. Bu, sisteme sayısal tuş takımı düzenini göstermesini söyler ve bu da kullanıcının PIN'i girmesini kolaylaştırır. Daha fazla ayrıntı için bkz. Dokunmatik klavyeyi değiştirmek için giriş kapsamını kullanma.

Developers

Tasarımcı

Samples

Arşiv Örnekleri