【问题标题】:how to display selected row in textbox MVP c#如何在文本框MVP c#中显示选定的行
【发布时间】:2020-12-09 16:49:11
【问题描述】:

我有 MVP 项目我试图将选定的行显示到 3 个文本框和 1 个复选框: 我知道我可以像这样从 CellClick 事件中做到这一点:

private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
    int index = e.RowIndex;// get the Row Index
    DataGridViewRow selectedRow = dataGridView1.Rows[index];
    textBox1.Text = selectedRow.Cells[0].Value.ToString();
    textBox2.Text = selectedRow.Cells[1].Value.ToString();
    textBox3.Text = selectedRow.Cells[2].Value.ToString();
    textBox4.Text = selectedRow.Cells[3].Value.ToString();
    checkBox1.Checked = Convert.ToBoolean(selectedRow.Cells[4].Value);
} 

但我想从其他名为 Presenter 的类中调用它,但我遇到错误:

1.当前上下文中不存在名称“e”。 2。 “object”不包含“Rows”的定义,并且找不到接受“object”类型的第一个参数的可访问扩展方法“Rows”(您是否缺少 using 指令或程序集引用?)。 3.不能将类型'string'隐式转换为'int'。

谢谢...

【问题讨论】:

  • 什么是“Presenter”类?调用方法dataGridView1_CellClick?你怎么称呼它的?你能提供更具体的信息吗?

标签: c# .net visual-studio design-patterns datagridview


【解决方案1】:

Salem,我可以在您的代码中看到,根据您的解释,您有一个事件点击,并且您想从演示者本身触发该事件,所以我认为这不是一个正确的方法,我会继续从单击中提取方法并从演示者调用新方法,我想您将需要一种从演示者获取索引并将其作为参数传递的方法。

private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
    int index = e.RowIndex;// get the Row Index
    CheckRowBoxByID(index);
}

void FillDataWithRowByID(int index){
    DataGridViewRow selectedRow = dataGridView1.Rows[index];
    textBox1.Text = selectedRow.Cells[0].Value.ToString();
    textBox2.Text = selectedRow.Cells[1].Value.ToString();
    textBox3.Text = selectedRow.Cells[2].Value.ToString();
    textBox4.Text = selectedRow.Cells[3].Value.ToString();
    checkBox1.Checked = Convert.ToBoolean(selectedRow.Cells[4].Value);
}

这是一个高度概述,可能不正确,但我会进行职责分离。并从演示者调用以下方法。

FillDataWithRowByID(withTheIntID);

基本上你得到它的错误是因为:

  1. 您正在尝试创建一个在 主持人。
  2. 将对象作为行传递。
  3. 将字符串作为整数传递

希望这是有道理的,干杯。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-03
    • 1970-01-01
    • 2015-04-18
    • 1970-01-01
    • 1970-01-01
    • 2018-03-14
    相关资源
    最近更新 更多