listview如何添加行和列,以及各列宽度自适应问题

zhuhuanlai 2017-01-27 02:13:46
过年好,我这个问题已经发过三次帖子了,都未能解决问题。大过年的,只要回复我都给分。。。。

我想补充一下我的需求:我在下面的代码中运行要么是结果不对,要么是出错,请大神帮我指点我希望的是您能告诉我的代码的问题在哪里,并在我的代码基础上给出对的代码!

不需要一句话带过的,大过年的我不给分也不好,但是我的分也快用完了,请您谅解一下!

listView1.View = View.Details;
listView1.View = View.Tile;
listView1.GridLines = true;
listView1.FullRowSelect = true;
listView1.Scrollable = true;
listView1.MultiSelect = true;
listView1.FullRowSelect = true;

ListViewItem item1 = new ListViewItem("item1", 0);
item1.SubItems.Clear();
item1.SubItems[0].Text = textBox6.Text + textBox6.Text; //其中textBox6.Text 等于“平均气温21.99摄氏度”
// item1.SubItems[1].Text = textBox6.Text+ textBox6.Tex;
listView1.Columns.Add("Column1",-1);
listView1.Items.Add(item1);

ListViewItem item2 = new ListViewItem("item2", 1);
item2.SubItems.Clear();
item2.SubItems[0].Text = textBox6.Text + textBox6.Text;
// item2.SubItems[1].Text = textBox6.Text+ textBox6.Tex;
listView1.Items.Add(item2);

运行结果如下,似乎并没有起到自适应的效果。



另外,我希望在两行中分别输出,但是输出结果总是在第一行,很是纳闷。
如果我把上述代码中
// item1.SubItems[1].Text = textBox6.Text+ textBox6.Tex;
// item2.SubItems[1].Text = textBox6.Text+ textBox6.Tex;
两行的注释去掉,运行时则出现以下错误,还请您指点迷津:



程序的目的的是能两行两列输出,且每个单元格的宽度是自适应的。


我希望的是您能告诉我的代码的问题在哪里,并在我的代码基础上给出对的代码![/color]



...全文
695 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Trustport 2019-06-04
  • 打赏
  • 举报
回复
http://www.liangshunet.com/ca/201309/586362553.htm
zhuhuanlai 2017-01-29
  • 打赏
  • 举报
回复
引用 6 楼 stherix 的回复:
[quote=引用 5 楼 zhuhuanlai 的回复:]
[quote=引用 3 楼 stherix 的回复:]
为listView新增数据是可以不使用到行号列号的,只有修改的时候需要

引用
如果我把上述代码中
// item1.SubItems[1].Text = textBox6.Text+ textBox6.Tex;
// item2.SubItems[1].Text = textBox6.Text+ textBox6.Tex;
两行的注释去掉,运行时则出现以下错误


SubItems必须先Add才可以修改,Add之前,SubItems[1]是不存在的,所以会出现参数越界错误

如果你使用了我上面的代码,因为我已经Add了2个SubItem
那么
item1.SubItems[1].Text = textBox6.Text+ textBox6.Text;就不会报错了



大神好,我成功再现了您的程序!再次感谢!
但是还有一个问题请教,在我电脑上运行后出现窗体显示变得很窄的情况,需要用鼠标拉动才行,您那边有类似的情况吗?
没有设置列宽前是没有问题的。
[/quote]

应该不会出现这种情况

你看下是否其他地方修改了Width/this.Width
或者是是否在设计器里改变了窗体的宽度[/quote]

引用 6 楼 stherix 的回复:
[quote=引用 5 楼 zhuhuanlai 的回复:]
[quote=引用 3 楼 stherix 的回复:]
为listView新增数据是可以不使用到行号列号的,只有修改的时候需要

引用
如果我把上述代码中
// item1.SubItems[1].Text = textBox6.Text+ textBox6.Tex;
// item2.SubItems[1].Text = textBox6.Text+ textBox6.Tex;
两行的注释去掉,运行时则出现以下错误


SubItems必须先Add才可以修改,Add之前,SubItems[1]是不存在的,所以会出现参数越界错误

如果你使用了我上面的代码,因为我已经Add了2个SubItem
那么
item1.SubItems[1].Text = textBox6.Text+ textBox6.Text;就不会报错了



大神好,我成功再现了您的程序!再次感谢!
但是还有一个问题请教,在我电脑上运行后出现窗体显示变得很窄的情况,需要用鼠标拉动才行,您那边有类似的情况吗?
没有设置列宽前是没有问题的。
[/quote]

应该不会出现这种情况

你看下是否其他地方修改了Width/this.Width
或者是是否在设计器里改变了窗体的宽度[/quote]


引用 6 楼 stherix 的回复:
[quote=引用 5 楼 zhuhuanlai 的回复:]
[quote=引用 3 楼 stherix 的回复:]
为listView新增数据是可以不使用到行号列号的,只有修改的时候需要

引用
如果我把上述代码中
// item1.SubItems[1].Text = textBox6.Text+ textBox6.Tex;
// item2.SubItems[1].Text = textBox6.Text+ textBox6.Tex;
两行的注释去掉,运行时则出现以下错误


SubItems必须先Add才可以修改,Add之前,SubItems[1]是不存在的,所以会出现参数越界错误

如果你使用了我上面的代码,因为我已经Add了2个SubItem
那么
item1.SubItems[1].Text = textBox6.Text+ textBox6.Text;就不会报错了



大神好,我成功再现了您的程序!再次感谢!
但是还有一个问题请教,在我电脑上运行后出现窗体显示变得很窄的情况,需要用鼠标拉动才行,您那边有类似的情况吗?
没有设置列宽前是没有问题的。
[/quote]

应该不会出现这种情况

你看下是否其他地方修改了Width/this.Width
或者是是否在设计器里改变了窗体的宽度[/quote]



引用 6 楼 stherix 的回复:
[quote=引用 5 楼 zhuhuanlai 的回复:]
[quote=引用 3 楼 stherix 的回复:]
为listView新增数据是可以不使用到行号列号的,只有修改的时候需要

引用
如果我把上述代码中
// item1.SubItems[1].Text = textBox6.Text+ textBox6.Tex;
// item2.SubItems[1].Text = textBox6.Text+ textBox6.Tex;
两行的注释去掉,运行时则出现以下错误


SubItems必须先Add才可以修改,Add之前,SubItems[1]是不存在的,所以会出现参数越界错误

如果你使用了我上面的代码,因为我已经Add了2个SubItem
那么
item1.SubItems[1].Text = textBox6.Text+ textBox6.Text;就不会报错了



大神好,我成功再现了您的程序!再次感谢!
但是还有一个问题请教,在我电脑上运行后出现窗体显示变得很窄的情况,需要用鼠标拉动才行,您那边有类似的情况吗?
没有设置列宽前是没有问题的。
[/quote]

应该不会出现这种情况

你看下是否其他地方修改了Width/this.Width
或者是是否在设计器里改变了窗体的宽度

我窗体宽度为780,高度为434,应该没有改变的。

stherix 2017-01-29
  • 打赏
  • 举报
回复
引用 5 楼 zhuhuanlai 的回复:
[quote=引用 3 楼 stherix 的回复:] 为listView新增数据是可以不使用到行号列号的,只有修改的时候需要
引用
如果我把上述代码中 // item1.SubItems[1].Text = textBox6.Text+ textBox6.Tex; // item2.SubItems[1].Text = textBox6.Text+ textBox6.Tex; 两行的注释去掉,运行时则出现以下错误
SubItems必须先Add才可以修改,Add之前,SubItems[1]是不存在的,所以会出现参数越界错误 如果你使用了我上面的代码,因为我已经Add了2个SubItem 那么 item1.SubItems[1].Text = textBox6.Text+ textBox6.Text;就不会报错了
大神好,我成功再现了您的程序!再次感谢! 但是还有一个问题请教,在我电脑上运行后出现窗体显示变得很窄的情况,需要用鼠标拉动才行,您那边有类似的情况吗? 没有设置列宽前是没有问题的。 [/quote] 应该不会出现这种情况 你看下是否其他地方修改了Width/this.Width 或者是是否在设计器里改变了窗体的宽度
zhuhuanlai 2017-01-29
  • 打赏
  • 举报
回复
引用 3 楼 stherix 的回复:
为listView新增数据是可以不使用到行号列号的,只有修改的时候需要

引用
如果我把上述代码中
// item1.SubItems[1].Text = textBox6.Text+ textBox6.Tex;
// item2.SubItems[1].Text = textBox6.Text+ textBox6.Tex;
两行的注释去掉,运行时则出现以下错误


SubItems必须先Add才可以修改,Add之前,SubItems[1]是不存在的,所以会出现参数越界错误

如果你使用了我上面的代码,因为我已经Add了2个SubItem
那么
item1.SubItems[1].Text = textBox6.Text+ textBox6.Text;就不会报错了



大神好,我成功再现了您的程序!再次感谢!
但是还有一个问题请教,在我电脑上运行后出现窗体显示变得很窄的情况,需要用鼠标拉动才行,您那边有类似的情况吗?
没有设置列宽前是没有问题的。
zhuhuanlai 2017-01-27
  • 打赏
  • 举报
回复
引用 3 楼 stherix 的回复:
为listView新增数据是可以不使用到行号列号的,只有修改的时候需要
引用
如果我把上述代码中 // item1.SubItems[1].Text = textBox6.Text+ textBox6.Tex; // item2.SubItems[1].Text = textBox6.Text+ textBox6.Tex; 两行的注释去掉,运行时则出现以下错误
SubItems必须先Add才可以修改,Add之前,SubItems[1]是不存在的,所以会出现参数越界错误 如果你使用了我上面的代码,因为我已经Add了2个SubItem 那么 item1.SubItems[1].Text = textBox6.Text+ textBox6.Text;就不会报错了
拜谢大神的及时回复,受教了,祝您新春快乐!
stherix 2017-01-27
  • 打赏
  • 举报
回复
为listView新增数据是可以不使用到行号列号的,只有修改的时候需要
引用
如果我把上述代码中 // item1.SubItems[1].Text = textBox6.Text+ textBox6.Tex; // item2.SubItems[1].Text = textBox6.Text+ textBox6.Tex; 两行的注释去掉,运行时则出现以下错误
SubItems必须先Add才可以修改,Add之前,SubItems[1]是不存在的,所以会出现参数越界错误 如果你使用了我上面的代码,因为我已经Add了2个SubItem 那么 item1.SubItems[1].Text = textBox6.Text+ textBox6.Text;就不会报错了
stherix 2017-01-27
  • 打赏
  • 举报
回复
首先必须
listView1.View = View.Details;

然后 你要显示多少列数据,就必须添加多少列,这里是添加三列
listView1.Columns.Add("Column1", -1);
listView1.Columns.Add("Column2", -1);
listView1.Columns.Add("Column3", -1);

然后你要显示多少行数据,就要添加多少行,当然也可以使用循环来实现

var item1= listView1.Items.Add("平均气温21.99摄氏度");//这里是添加一个子项,也就是新的一行,里边的文本就是这一行的首列文本
item1.SubItems.Add("3253464");//为这个子项加入后续文本,也就是第二列和第三列的文本
item1.SubItems.Add("87654326768765");

var item2 = listView1.Items.Add("平均气温25.12摄氏度");//第二行的数据
item2.SubItems.Add("111");
item2.SubItems.Add("wfregrhntgfd");

这里是运行结果

zhuhuanlai 2017-01-27
  • 打赏
  • 举报
回复
再补充一句,我想用的是用行和列的索引号来给对应的单元赋值,不希望用到行名和列名!

111,096

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧