c# - 如何在文本框MVP c#中显示选定的行
问题描述
我有 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'。
谢谢...
解决方案
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);
基本上你得到它的错误是因为:
- 您正在尝试创建演示者中不存在的事件。
- 将 Objet 作为一行传递。
- 将字符串作为整数传递
希望这是有道理的,干杯。
推荐阅读
- python - 更改在 kivy GUI 中显示的 matplotlib 3d 散点图的方向
- c# - 如何通过 RelayCommand (mvvmlight) 获取 ViewModel 中按钮的内容
- graph - 如何使用 graph_from_place() 函数
- python-3.x - 如何使用 for-in 语法在 for 循环中进行两次迭代
- python - 使用 Resnet 的图像生成器
- c - 如何使用 yacc 从 char 数组中解析?
- wordpress - 在 NGINX 上的 Laravel 应用程序中的子文件夹上运行 Wordpress
- java - 如何在 Android 中多次播放可绘制动画?
- bash - Bash:通过分组命令和布尔运算符没有 IF 的条件语句
- sql-server - SQL Server 中日期的默认格式是什么?