获得datagridview选中的对象名称

文档:获得datagridview选中的对象名称.note
链接:http://note.youdao.com/noteshare?id=6ea2590fc806dcc9f3e8f72517ff2462&sub=3C9E67AF71964C22ACE38F923B7831F7


获取选中的项的文本,有2种方式

1 正向复制 从上向下复制黑3角最终在下方,

2 反向复制 从下往上复制 黑3角最终在上方,

这两种复制的最终结果的顺序是不一样的,1是反的,2才是正的,我希望正向复制的结果是从上往下排列的


clipboard

i总是从0开始的 ,假设选中了5个项 则 i的索引为 0 1 2 3 4

结果刚好反掉了(从1到5 这样选中的 注意黑三角在5的左边)

dgv1.SelectedRows[0].Cells["单词"].Value=what

dgv1.SelectedRows[1].Cells["单词"].Value=take sth.over

dgv1.SelectedRows[2].Cells["单词"].Value=back down

dgv1.SelectedRows[3].Cells["单词"].Value=as

dgv1.SelectedRows[4].Cells["单词"].Value=article

clipboard

反过来选 先选5再选1 结果才是正确的(注意黑三角在1的左边)

dgv1.SelectedRows[0].Cells["单词"].Value=article

dgv1.SelectedRows[1].Cells["单词"].Value=as

dgv1.SelectedRows[2].Cells["单词"].Value=back down

dgv1.SelectedRows[3].Cells["单词"].Value=take sth.over

dgv1.SelectedRows[4].Cells["单词"].Value=what

代码


private void button2_Click(object sender,EventArgs e) {
    int selCount = dgv1.SelectedRows.Count;
    string[] arr = new string[selCount];
    for (int i = 0; i < dgv1.SelectedRows.Count; i++) {
        arr[i] = $"  dgv1.SelectedRows[{i}].Cells[\"单词\"].Value=" + dgv1.SelectedRows[i].Cells["单词"].Value.ToString();
    }
    MessageBox.Show(string.Join("\n",arr));
}

我希望从上往下选的结果是 反过来选的结果

这样只用把.SelectedRows[i] 的索引倒过来变成 4 3 2 1 0

注意黑三角在5的左边

clipboard

dgv1.SelectedRows[4].Cells["单词"].Value=article

dgv1.SelectedRows[3].Cells["单词"].Value=as

dgv1.SelectedRows[2].Cells["单词"].Value=back down

dgv1.SelectedRows[1].Cells["单词"].Value=take sth.over

dgv1.SelectedRows[0].Cells["单词"].Value=what

private void button2_Click(object sender,EventArgs e) {
    int selCount = dgv1.SelectedRows.Count;
    string[] arr = new string[selCount];
      for (int i = selCount - 1; i > -1; i--) {
        int x = selCount - 1 - i;
        arr[i] = $"  dgv1.SelectedRows[{x}].Cells[\"单词\"].Value=" + dgv1.SelectedRows[x].Cells["单词"].Value.ToString();
    }
    MessageBox.Show(string.Join("\n",arr));
}


2020年12月31日 15:58:55

下面是发现

clipboard

注意结果:从上往下选的 三角形是4 说明是从1开始选的 4结束的,

得到的结果刚好反了

clipboard

string s = ""; foreach (DataGridViewRow item in dgv1.SelectedRows) { s += item.Cells["单词"].Value.ToString() + "\n"; }

clipboard

倒着选 从4开始 1结束 这样结果是正确的

posted @ 2020-12-31 16:07  XE2011  阅读(382)  评论(0编辑  收藏  举报