2

我正在使用 WPF 和 C# 开发应用程序。在一个窗口上,我有许多文本框排列在 5 列和 5 行的网格中,与用户需要的数量一样多。它的工作原理如下:最初,5 个文本框的第一行是可见的,用户输入适当的值,一旦他点击ENTER该行的第 5 个文本框,就会为较新的条目生成一个新的类似的文本框行。这种情况不断发生。每个文本框都有一个使用RegisterName方法和循环的唯一名称。

现在我的问题是假设我已经在窗口上创建了 5 行大约 25 个文本框。我专注于第三行的文本框之一,并键入一些触发它的相应 KeyDown 事件。在此 keydown 事件中,我需要导致此事件的所有文本框的名称。我怎样才能做到这一点?

完成后,这也将帮助我访问该行的所有其他文本框,因为我知道它们使用的命名法。请帮忙。

4

2 回答 2

2

您可以尝试以下方法:

请注意,我们还将Name属性与FrameworkContentElement.RegisterName函数一起设置。

var box = new TextBox();
var itemName = "Unique Identifier";  // Change this to your unique name per box
this.RegisterName(itemName, box);
box.Name = itemName;
box.KeyDown += (sender, args) => {
  var textBox = sender as TextBox;
  if (textBox != null)
    MessageBox.Show(textBox.Name);  // Would show "Unique Identifier"
};
于 2013-04-21T10:47:34.423 回答
1

嗨,请将此事件用于文本框

TextBox_PreviewKeyDown(object sender, KeyEventArgs e)

并获取文本框的 id,使用 sender 参数与标签组合。

 i.e.     TextBox textbox = (TextBox)sender;
于 2013-04-21T05:43:10.217 回答