【发布时间】:2026-01-30 21:40:01
【问题描述】:
例如,假设我在一个表单上有一个主屏幕,它有一个带有 PC 组件列表的 datagridview,以及用于从该 dgv 添加、删除或修改组件的按钮。我希望用户能够从 datagridview 中选择一行,然后单击修改按钮,该按钮将打开一个 ModifyComponent 表单,所选组件的详细信息将填充到各种文本框中。因此,我希望将所选行中的数据提取到 ModifyComponent 表单中。到目前为止,这就是我尝试过的方式。我在 MainScreen 表单中创建了这个方法(行索引与组件绑定列表中的 ComponentID 属性相同):
public int getData()
{
int component = ComponentsGridView.SelectedRows[0].Index);
return component;
}
然后在 ModifyComponent 表单中,我使用 Inventory 类中的 lookupComponent 方法,该方法获取组件 ID 并从组件列表中提取正确的组件:
Inventory.lookupComponent(MainScreen.getData());
然后我将编写代码将每个属性放入正确的文本框中,但我收到错误消息“非静态字段、方法或属性 MainScreen.getData 需要对象引用”。解决这个问题的好方向或解决这个问题的不同方法是什么?
【问题讨论】:
-
在两个表单之间共享一个数据源很容易。您需要停止认为数据“在”控件或行中 - 这就是您在 GRID 中向用户显示数据视图的方式
-
@WelcomeOverflow 我知道 dgv 只是显示列表中的数据。我实际上是在尝试传输有关当该人单击修改按钮时选择了哪一行的信息。尝试在修改表单中使用“ComponentsGridView.SelectedRows[0].Index”代码时也出现错误
-
如果所选行的索引是一个不好的方法。如果你有
List<T>提取项目并传递它。
标签: c# winforms datagridview