C#WinForm 显示选中的行是第几行,datagridview控件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#WinForm 显示选中的行是第几行,datagridview控件相关的知识,希望对你有一定的参考价值。

1 UI

技术分享

 

 

2 keyCode

 1         private void button3_Click_1(object sender, EventArgs e)
 2         {
 3             //不加1的话,选取第一行的时候提示0,第二行提示1,所以我加了一个1,方便看
 4             //为什么要加索引0,因为我有可能选取多行,这个时候该如何显示我选取的是第几行呢?
 5             //答案是按照你选取的顺序,输出你最后一个选中的是 第几行
 6             //例如我,选中 1 2 3行,3行是我最后一个选中的,所以输出3
 7             //        选中 10 2 1行,1行是我最后一个选中的,所以输出1
 8 
 9             //在没有选择行的时候点这个按钮,会抛异常,有待解决
10             MessageBox.Show((dataGridView1.SelectedRows[0].Index + 1).ToString());
11         }

 

 

 

3 code

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Threading.Tasks;
 6 
 7 namespace WindowsFormsApplication3
 8 {
 9     /// <summary>
10     /// xml文件内容匹配类
11     /// </summary>
12     public class User
13     {
14         private string _shengHao;
15         private string _password;
16 
17         public string Password
18         {
19             get
20             {
21                 return _password;
22             }
23 
24             set
25             {
26                 _password = value;
27             }
28         }
29 
30         public string ShengHao
31         {
32             get
33             {
34                 return _shengHao;
35             }
36 
37             set
38             {
39                 _shengHao = value;
40             }
41         }
42     }
43 }

 

  1 using System;
  2 using System.Collections.Generic;
  3 using System.ComponentModel;
  4 using System.Data;
  5 using System.Drawing;
  6 using System.Linq;
  7 using System.Text;
  8 using System.Threading.Tasks;
  9 using System.Windows.Forms;
 10 using System.Xml.Linq;
 11 
 12 namespace WindowsFormsApplication3
 13 {
 14     public partial class Form1 : Form
 15     {
 16         public Form1()
 17         {
 18             InitializeComponent();
 19         }
 20 
 21         private void Form1_Load(object sender, EventArgs e)
 22         {
 23             ShowXmlFile();
 24         }
 25 
 26         private void ShowXmlFile()
 27         {
 28             List<User> datas = new List<User>();
 29             //form 窗体在加载的时候,读取xml文件
 30             XDocument xmlFile = XDocument.Load("1.xml");
 31             XElement root = xmlFile.Root;
 32 
 33             foreach (var item in root.Elements())
 34             {
 35                 datas.Add(new User() { ShengHao = item.Element("ShengHao").Value, Password = item.Element("Password").Value });
 36             }
 37 
 38             //将list数据与datagridview绑定
 39             dataGridView1.DataSource = datas;
 40 
 41             //这行代码一开始是放在formload中的,但发现,每次增加新的数据之后,第一行都会被选中,所以
 42             //把这行代码加入到showxmlfile中
 43             dataGridView1.SelectedRows[0].Selected = false;
 44 
 45         }
 46 
 47         private void btnBook_Click(object sender, EventArgs e)
 48         {
 49 
 50             User newUser = new User() { ShengHao = textNewShengHao.Text, Password = textNewPassword.Text };
 51 
 52             XDocument xmlFile = XDocument.Load("1.xml");
 53             XElement root = xmlFile.Root;
 54 
 55             //在根节点下新建一个子节点,名字叫“XianJia”
 56             XElement newXianJia = new XElement("XianJia");
 57             newXianJia.SetElementValue("ShengHao", newUser.ShengHao);
 58             newXianJia.SetElementValue("Password", newUser.Password);
 59             root.Add(newXianJia);
 60 
 61             //保存
 62             xmlFile.Save("1.xml");
 63 
 64             //为何防止用户,双击啥的,出现一堆重复的数据,所以在这里出现一个messagebox
 65             //我还发现,没有这个messagebox,虽然数据已经增加到了xml文件中,
 66             //但是那个datagridview控件却不显示新的,但是在重新运行这个程序的时候会显示
 67             //所以,一个messagebox贴心又省心
 68             MessageBox.Show("欢迎回家");
 69 
 70             //让datagirdview控件显示新的xml文件中的内容
 71             ShowXmlFile();
 72         }
 73 
 74         private void deleteMenuStrip_Click(object sender, EventArgs e)
 75         {
 76 
 77         }
 78 
 79         /// <summary>
 80         /// 点击这个按钮出现一个对话框,显示有多少行
 81         /// </summary>
 82         /// <param name="sender"></param>
 83         /// <param name="e"></param>
 84         private void button1_Click(object sender, EventArgs e)
 85         {
 86             //这个数字不包括列标题的那一行
 87             MessageBox.Show(dataGridView1.RowCount.ToString());
 88         }
 89 
 90 
 91         /// <summary>
 92         /// 点击这个按钮出现一个对话框,显示有多少行
 93         /// </summary>
 94         /// <param name="sender"></param>
 95         /// <param name="e"></param>
 96         private void button2_Click(object sender, EventArgs e)
 97         {
 98             //不包含行标题的那一列
 99             MessageBox.Show(dataGridView1.ColumnCount.ToString());
100         }
101 
102 
103         private void button3_Click_1(object sender, EventArgs e)
104         {
105             //不加1的话,选取第一行的时候提示0,第二行提示1,所以我加了一个1,方便看
106             //为什么要加索引0,因为我有可能选取多行,这个时候该如何显示我选取的是第几行呢?
107             //答案是按照你选取的顺序,输出你最后一个选中的是 第几行
108             //例如我,选中 1 2 3行,3行是我最后一个选中的,所以输出3
109             //        选中 10 2 1行,1行是我最后一个选中的,所以输出1
110 
111             //在没有选择行的时候点这个按钮,会抛异常,有待解决
112             MessageBox.Show((dataGridView1.SelectedRows[0].Index + 1).ToString());
113         }
114     }
115 }

 

 

 

4 show

技术分享

 

以上是关于C#WinForm 显示选中的行是第几行,datagridview控件的主要内容,如果未能解决你的问题,请参考以下文章

WPF 点击ListViewItem中的Button,如何获取选中的是第几行?

DELPHI dbgrid 选中的是第几行 怎么判断?

c#从dataTable中取出行,不知道是第几行,只知道行中数据!

awk中 NR 和 NF到底是啥意思? 能举例说明吗?

VBA中如何获取一个表格的行数和列数

我如何知道DataTable当前是第几行