通过使用箭头键导航DataGridView来更新文本框

时间:2016-09-20 21:16:08

标签: c# winforms datagridview textbox keydown

var myArrayOfObjects = [
                        { value: 'test1'},
                        { value: 'test2'}
                       ],
             myArray = [ 'test1', 'test5' ],
           something = [];

for (var obj of myArrayOfObjects) myArray.includes(obj.value) && something.push(obj);
console.log(something);

当我选择行时,第一部分会更新我的文本框。第二部分是对事件处理程序的尝试。我想通过键盘导航网格来更新文本框。因此,任何以蓝色突出显示的行都会自动填充文本框。

我尝试通过将其包含在dataGridViewCargo_CellContentClick中来调用事件处理程序,但是发送者和e不通过,我得到参数计数不匹配错误或者委托给实例方法不能为空'this'。我们的想法是通过按下按钮来调用CellContentClick事件。

任何帮助都会非常友好。

1 个答案:

答案 0 :(得分:2)

当您使用鼠标或箭头键在数据绑定的DataGridView行之间移动时,其数据源的位置会发生变化,并且绑定到同一数据源的所有控件都将显示新位置的值

此外,如果您不使用数据绑定,则会引发SelectionChanged DataGridView事件,并可用于更新控件。

因此,您可以使用以下任一选项来解决问题:

  • 将这些TextBox控件绑定到DataGridView使用的同一数据源。

  • 使用SelectionChanged的{​​{1}}事件。

如果您将DataGridView绑定到DataGridView,那么您也可以简单地为DataSource控件使用数据绑定。只需单击每一行,即可将这些TextBox控件绑定到要显示的数据源字段。您可以使用设计器或使用代码执行数据绑定:

TextBox

如果您不使用数据绑定,则可以使用var data = GetDataFromSomeShere(); dataGridViewCargo.DataSource = data; cargoDisplayMessageIdTextBox.DataBindings.Add("Text", data, "ID"); cargoDisplaySubjectTextBox.DataBindings.Add("Text", data, "Subject"); 的{​​{1}}事件并使用SelectionChanged的{​​{1}}属性来查找这些字段和更新您的DataGridView控件:

CurrentRow

首选使用数据绑定(第一个选项)。