2014-04-15 73 views
0

我在我的WPF/C#应用程序中有一个简单的XAML表单,其中包含几个文本框。当按下TAB或ENTER键时,我需要知道控件的名称 - 但我不知道如何操作。返回控件的名称

我有一个侦听输入/ tab键的功能,但在那之后 - 我很为难:

public viewSearch() 
{ 
    InitializeComponent(); 
    PreviewKeyDown += new KeyEventHandler(HandleEsc); 
} 

private void HandleEsc(object sender, KeyEventArgs e) 
{ 
    if (e.Key == Key.Escape) Close(); 
    if (e.Key == Key.Enter) SearchAndDisplay(); 
    if (e.Key == Key.Tab) SearchAndDisplay(); 
} 

private void SearchAndDisplay() 
{ 
    MessageBox.Show("THE NAME OF THE CONTROL"); 
} 

谢谢。

+0

Tab或Enter键在'textbox'里面按? –

回答

3

如果您正在查找触发事件的控件,可以尝试如下操作: (伪代码,因为我目前无法访问Visual Studio,并且无法直接检查它是否全部有效WPF):

private void HandleEsc(object sender, KeyEventArgs e) 
{ 
    if (e.Key == Key.Escape) Close(); 
    if (e.Key == Key.Enter || 
     e.Key == Key.Tab) SearchAndDisplay(e.OriginalSource) 
} 

private void SearchAndDisplay(object sender) 
{ 
    if(sender is Control) 
    { 
     MessageBox.Show(((Control)sender).Name); 
    } 
} 
+0

谢谢你这么快回到我身边。可悲的是,它返回控件的“”。我查过了,他们有一个名字 - 所以我不知道下一步该怎么做。 – AndyDB

+1

实际上,sender是处理程序设置的对象。在这种情况下viewSearch。它应该是e.OriginalSource。 – Dmitry

+0

@Didier应该按你的方式工作!调整我的答案。 – Recipe

相关问题