我正在使用WPF和c#开发一个应用程序。在一个窗口上,我有许多文本框排列在一个网格的5列和行,尽可能多的用户需要。它的工作原理是这样的:最初5个textBox的第一行是可见的,用户输入适当的值,一旦他在该行的第5个textBox中点击ENTER
,就会为新条目生成一个新的类似的textBox行。这种情况不断发生。每个文本框使用RegisterName
方法和循环有一个唯一的名称。
现在我的问题是,假设我已经在窗口上创建了5行大约25个文本框。我把重点放在第三行的一个文本框上,并键入一些触发适当的KeyDown事件的东西。在这个keydown事件中,我需要Name的所有文本框,导致这个事件。我该怎么做呢?
这样做,还将帮助我访问该行的所有其他文本框,因为我知道它们使用的命名法。请帮助。
您可以尝试这样做:
注意我们还设置了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"
};
请将此事件用于文本框
TextBox_PreviewKeyDown(object sender, KeyEventArgs e)
和获取文本框的id使用sender参数与标签的组合。
i.e. TextBox textbox = (TextBox)sender;