[winform]dataGridView记录column的长度

最近项目上碰到这样一个问题,客户在看过dataGridView的格式之后,提出dataGridView的中列的长度在手动调整之后,窗体关闭和重新打开后又变回原来的长度。

如图所示

 

由于软件本身不存在用户登录问题,所以就打算把列的长度记录到ini文件中去,然后在加载数据的时候读入ini文中的信息。

首先是个C#操作ini的方法

View Code
 1 class iniuser
2 {
3
4 [DllImport("kernel32")]
5 private static extern long WritePrivateProfileString(string section, string key, string val, string filepath);
6
7 [DllImport("kernel32")]
8 private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retval, int size, string filepath);
9
10
11 //----------------------读写INI-------------------------------------------------------------------------
12
13 public void IniWriteValue(string Section, string Key, string Value, string filepath)//对ini文件进行写操作的函数
14 {
15 WritePrivateProfileString(Section, Key, Value, filepath);
16 }
17
18
19 public string IniReadValue(string Section, string Key, string filepath)//对ini文件进行读操作的函数
20 {
21 StringBuilder temp = new StringBuilder(255);
22 int i = GetPrivateProfileString(Section, Key, "", temp, 255, filepath);
23 return temp.ToString();
24 }
25
26 }

 

然后我是在窗体关闭的时候把所有列的width属性写入ini文件的,如下代码

由于读ini的时候只读一个value值,所以我把所有列的width先全部写到了一个string里去

View Code
  private void ACDC_OfflineControllers_FormClosed(object sender, FormClosedEventArgs e)
{
string Group = "ACDC";

StringBuilder Colunm_Width = new StringBuilder();

//对列循环取得每列的with,存入StringBuilder
for (int i = 0; i < dataGridView_OfflineControllers.ColumnCount - 1; i++)
{
Colunm_Width.Append(dataGridView_OfflineControllers.Columns[i].Width.ToString() + " ");
}

//写入ini文件
iniuser.IniWriteValue(Group, "ColumnWidth", Colunm_Width.ToString(), Application.StartupPath + "\\user.ini");
}

在数据加载的时候调用读取ini的方法,如下代码

View Code
 private void getColumnWidth()
{
//判断本地有没有ini文件
if (System.IO.File.Exists(Application.StartupPath + "\\user.ini"))
{
//读取ColumnWidth栏目的value
string ColumnWidth = iniuser.IniReadValue(Group, "ColumnWidth", Application.StartupPath + "\\user.ini");

//判断是否为空
if (ColumnWidth != null && ColumnWidth.Trim().Length != 0)
{
//根据空格转化为数组
string[] Column_Width = ColumnWidth.Split(new Char[] { ' ' });

//循环重置列宽
for (int i = 0; i < dataGridView_OfflineControllers.ColumnCount - 1; i++)
{
this.dataGridView_OfflineControllers.Columns[i].Width = int.Parse(Column_Width[i]);
}
}
}
}

最后附上对应的ini文件

 

 

转载于:https://www.cnblogs.com/xichen/archive/2012/03/05/2380596.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值