0

到目前为止,我在按钮单击事件上有以下代码:

        string AccRef = Microsoft.VisualBasic.Interaction.InputBox("New Customer", "Customer Reference:", "", 0, 0);

        if (AccRef != "")
        {
            DataRow dr = dSSystem.Customers.NewRow();
            dr["AccRef"] = AccRef;
            dSSystem.Customers.Rows.Add(dr);


            frmCustomer frmCust = new frmCustomer();
            frmCust.ShowDialog();

            this.customersTableAdapter.Fill(this.dSSystem.Customers);
        }

正如我在对话框后面看到的那样,这成功地创建了一个新行,但是,我有一个问题 - 显示的对话框是另一个显示所有客户信息的表单,这是通过文本框处理的,该文本框具有数据绑定到其中的适当字段数据库,因此它们自然会在数据库中显示有关所选记录的信息,但目前它显示的是先前选择的记录的信息,而不是移动到使用上面的代码创建的记录。

如何让系统创建一个新行,然后在打开新表单进行编辑之前关注新行?

先感谢您。

4

1 回答 1

1

本质上,您可以将信息传递给对话框表单,该表单可以使用该对话框导航到正确的记录。

最简单的方法是为接受参数的第二种形式创建一个构造函数。

public frmCustomer(int newID)
{
    InitializeComponent(); 
    // use newID (if present) to navigate
    // to the correct row
}

frmCustomer frmCust = new frmCustomer(theNewID);
frmCust.ShowDialog();

我不知道您绑定的详细信息,因此无法建议您如何导航到记录。

这里列出了许多其他方法。

一种简单的方法可能是在下一个新记录处打开对话框表单并导航回一行,但同样,我不知道您的设置足以为此提供代码。如果你有一个BindingSource,你可以使用它的方法MoveLast()MovePrevious().

如果您使用第一种方法并且使用传递的 id 打开第二种形式,那么您可以使用 的Find方法BindingSource,然后使用Position属性移动到找到的记录。请参阅MSDN上的示例。

于 2013-07-27T22:04:00.637 回答