c#从一种形式读取数据视图到另一种形式

本文关键字:数据 读取 视图 另一种 一种 | 更新日期: 2023-09-27 17:50:51

我有两个表单,一个包含一个datagridview控件与数据源从MS Access。数据在datagridview上显示正常。首先在该数据网格视图中选择一个单元格,然后获得当前所选单元格的Row Index。我在访问器函数中使用该行索引(代码在主要形式中):

public String Name
{ 
    get 
    { 
        return dataGridView1.Rows[selrow].Cells[1].Value.ToString(); 
    } 
}

selrow包含当前选定单元格的行索引。接下来,我点击"编辑记录"按钮,它将我的第二个表单显示为模态表单。我想在文本框中显示上述访问器的值,所以代码是这样的(代码是第二种形式):

private void EditRecord_Load(object sender, EventArgs e)
{
    CashLoan main = new CashLoan();
    txtEName.Text = main.name;
}

但是当我尝试运行和调试时,我得到这个"索引超出范围"。必须非负且小于集合的大小。参数名称:index"指向我的访问器函数。我似乎找不到问题的根源。提前谢谢你。

c#从一种形式读取数据视图到另一种形式

如果我理解你想在Editrecord表单的文本框中显示主表单的值。

Load处理程序中创建主表单(CashLoan)的新实例。
并尝试从主要形式的空datagridview读取值(我假设你没有在构造器中填充数据datagridview)。

尝试将您的值传递给EditRecord形式作为构造器的参数:
在EditRecord表单:

private String _originalValue;
public EditRecord(String originalValue)
{
    _originalValue = originalValue;
}
//Then in Load handler
private void EditRecord_Load(object sender, EventArgs e)
{
    this.txtEName.Text = _originalValue;
}
//In main form
EditRecord frm = new EditRecord(this.name);
frm.ShowDialog();

Try

public String Name
{ 
    get 
    { 
        return dataGridView1.Rows[dataGridView1.CurrentCell.RowIndex].Cells[1].Value.ToString(); 
    } 
}

原因我猜你有一个问题与当前选定的行索引。此外,您的行可能只有一个单元格。在这种情况下,将1替换为0,因为索引从0开始(因此0 = 1,1 = 2等…)

dataGridView1.Rows[selrow].Cells[0].Value.ToString();