在winforms中跨多个窗体共享数据表

在winforms中跨多个窗体共享数据表,winforms,data-binding,compact-framework,datatable,Winforms,Data Binding,Compact Framework,Datatable,我正在尝试编写一个简单的紧凑框架winforms应用程序。主窗体将DataGrid绑定到DataTable(使用xml文件中的数据)。我想打开另一个表单,显示当前记录的详细信息。我有如下代码作为详细表单的构造函数 public DetailsForm(DataTable dtLandlords, int Index) //the constructor { InitializeComponent(); lLandlordCode.DataBindings.Add("Text", dtLa

我正在尝试编写一个简单的紧凑框架winforms应用程序。主窗体将DataGrid绑定到DataTable(使用xml文件中的数据)。我想打开另一个表单,显示当前记录的详细信息。我有如下代码作为详细表单的构造函数

public DetailsForm(DataTable dtLandlords, int Index) //the constructor
{
  InitializeComponent();
  lLandlordCode.DataBindings.Add("Text", dtLandlords, "LandlordID");
  .......
}
我用下面的代码调用构造函数

    Form frm = new LandlordDetailsForm(dtLandlords, dataGrid1.CurrentRowIndex);
    frm.Show();
如何让它显示当前记录(在索引中指定-当前未使用),而不仅仅是第一条记录。或者有更好的方法来执行此操作吗?

数据绑定“绑定”到提供的“视图”,当前您绑定到DataTable而不设置默认视图(因此它将默认为完整表)。例如:dtlandowns.DefaultView.RowFilter=“landordid=TheIdYouWant”

另一种方法是将DataGrid/GridView本身添加到DataBingings中,这将提供一个包含其当前选定项的默认视图

编辑:添加了绑定到DataGridView的示例

这方面的一个例子是: 首先创建一个带有文本框和DataGridView(默认名称)的表单。然后将此代码放入表单的构造函数中

DataTable dt = new DataTable();
dt.Columns.Add("Col1");
dt.Columns.Add("Col2");
DataRow dr;
dr = dt.NewRow();
dr[0] = "C1R1";
dr[1] = "C2R1";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = "C1R2";
dr[1] = "C2R2";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = "C1R3";
dr[1] = "C2R3";
dt.Rows.Add(dr);

this.dataGridView1.DataSource = dt;
this.textBox1.DataBindings.Add("Text", dataGridView1.DataSource, "Col1");

然后运行,并在GridView中选择项目,文本框应自动更新所选的详细信息。注意:我在这里使用了DataGridView,我认为它也适用于DataGrids(我认为您正在使用)

您的第一个建议有效,谢谢。但是,我想知道更多关于您关于将DataGrid添加到DataBinding的第二个建议。我用一个示例编辑了主要答案,说明了如何做到这一点。如果这是被接受的答案,你能这样标记吗?我相信,通过点击答案评级下的勾号,干杯。