怎样让c# ListView实现以下功能

作者&投稿:闻郎 (若有异议请与网页底部的电邮联系)
用C# listview实现以下功能~

private void BindListView()
{
listView1.Columns.Add("书编号", 100, HorizontalAlignment.Left);
listView1.Columns.Add("书名称", 140, HorizontalAlignment.Left);
List bookList = //读取的记录放到集合里即可
foreach (Book item in bookList)
{
ListViewItem listItem = new ListViewItem(item.Code);
listItem.SubItems.Add(item.Name);
listView1.Items.Add(listItem);
}
}

你是只加图片吗?
把图片放到ImageList里面,
添加项的时候,
listviewitem li =new listviewitem();
li.text="zhangsan";
li.image=0;
li.subitem.add(.......);
listview.items.add(li);

其中imagelist和listview关联起来就可以了.

1.先说书吧,两本我都看过,全是APRESS出版社的,感觉APRESS的书比O'REILLY结构更清晰,作者可全是微软MPV啊,

第二本绝对是winfoms的经典,在Amazon中很受好评,MATTHEW MACDONALD也是我的偶像,呵呵,这本书214页详细介绍ListView。还有推荐你看此书前学一学SQL,因为在Data Binding那几章频繁用到SQL语句。

第一本其实也不错,但不太适合新手,还有这本书有些地方不太合理,比如介绍Appdomain和MSIL,MSDN也不过几页,而他却大篇幅介绍,也些没必要。还有在在讲到多线程,没有提到NET 2中很有用的一个类:BackgroundWorker,总之。不适合新手,属于reference。

2.以下是控件代码,复制到你工程的namespace里,可直接在VS左侧Toolbox中拖放至窗体,取名Xshow。
class Xshow : ListView
{
public event EventHandler<DragEventArgs> XDragDrop;
public Xshow()
: base()
{
base.AllowDrop = true;
base.View = View.Details;
base.FullRowSelect = true;

base.ColumnClick += new ColumnClickEventHandler(Xshow_ColumnClick);
base.DragEnter += new DragEventHandler(Xshow_DragEnter);
base.DragDrop += new DragEventHandler(Xshow_DragDrop);

Columns.Add("Path",500);
}
class SortType : IComparer
{
int _subcolIdx;
bool _descending;
public int SubcolIdx
{
get { return _subcolIdx; }
set { _subcolIdx = value; }
}
public bool Descending
{
get { return _descending; }
set { _descending = value; }
}

public SortType(int subcolIdx)
{
_subcolIdx = subcolIdx;
_descending = false;
}

public int Compare(object a, object b)
{
ListViewItem x, y;
if (_descending) { x = (ListViewItem)b; y = (ListViewItem)a; }
else { x = (ListViewItem)a; y = (ListViewItem)b; }

//SubItems[0] == item in first row, SubItems[1]=first subitem
return String.Compare(x.SubItems[_subcolIdx].Text, y.SubItems[_subcolIdx].Text);
}
}

void Xshow_DragDrop(object sender, DragEventArgs e)
{
string[] ss = (string[])e.Data.GetData(DataFormats.FileDrop);
BeginUpdate();
foreach (string s in ss)
{
Items.Add(s);
}
EndUpdate();

//add your own Event Handler
XDragDrop(this, e);
}

void Xshow_DragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.FileDrop)) e.Effect = DragDropEffects.Copy;
else e.Effect = DragDropEffects.None;
}
void Xshow_ColumnClick(object sender, ColumnClickEventArgs e)
{
if (Items.Count <= 1) return;
SortType st = ListViewItemSorter as SortType;
if (st == null) ListViewItemSorter = new SortType(e.Column);
else
{
st.Descending = !st.Descending; st.SubcolIdx = e.Column;
}
Sort();
}
}

1) 首先listview.View = View.Details
listview排序事件是ColumnClick事件,添加该事件。
可以给这个Form申明一个bool型变量flg=true,ColumnClick每次处理后都将bool取反。
// 假设你存储数据的容器是个DataTable,也是最常见的
private void listView1_ColumnClick(object sender, ColumnClickEventArgs e){
listView1.Items.Clear();
for(int i =0 ;i < dataTable.Rows.Count)
{
int m = i;
if(flg)
{
int m = dataTable.Rows.Count - i - 1;
}
String field1 = dataTable.Rows[m]["field1"].ToString();
String field2 = dataTable.Rows[m]["field2"].ToString();
String field3 = dataTable.Rows[m]["field3"].ToString();
listView1.Items.Add(new ListViewItem(new String[] { field1 , field2 , field3 }));
}
flg = !flg;
}

第一个问题:
1。把view属性设为detail;
2.把headerStye属性设为clickable;
3.在columnclik事件中做排序处理
(做一个DataTable,再里面处理。倒着排序时,在DataTabl中取值的顺序可以最大INDE开始取。)
------------------------------------------
第四个问题:没有过看过,但是
现在的技术书籍大都商业性太强,实用性很差,

1.鼠标点击column,实现排序,再点,就倒着排序,这个大家都知道吧,很常见把!
(1).把view属性设为detail;
(2).把headerStye属性设为clickable;
(3).在columnclik事件中做排序处理:

private bool _listViewSort = false;

// 列单击
private void listView1_ColumnClick(object sender, ColumnClickEventArgs e)
{
_listViewSort = !_listViewSort;
Sort(listView1, e.Column, _listViewSort);
}

// 排序
private void Sort(ListView listView, int col, bool sortType)
{
IEnumerator iE = listView.Items.GetEnumerator();
int count = 0;
iE.Reset();
while (iE.MoveNext())
{
count++;
}

ListViewItem[] lVIs = new ListViewItem[count];
iE.Reset();
for (int i = 0; iE.MoveNext(); i++)
{
lVIs[i] = (ListViewItem)iE.Current;
}

int sortValue = 0;
if (sortType == true)
{
sortValue = 1;
}
else
{
sortValue = -1;
}

if (col == 0)
{
for (int i = lVIs.Length; i > 0; i--)
{
for (int j = 0; j < i - 1; j++)
{
if (lVIs[j].Text.CompareTo(lVIs[j + 1].Text) == sortValue)
{
ListViewItem lVI = lVIs[j];
lVIs[j] = lVIs[j + 1];
lVIs[j + 1] = lVI;
}
}
}
}
else
{
for (int i = lVIs.Length; i > 0; i--)
{
for (int j = 0; j < i - 1; j++)
{
if (lVIs[j].SubItems[col].Text.CompareTo(lVIs[j + 1].SubItems[col].Text) == sortValue)
{
ListViewItem lVI = lVIs[j];
lVIs[j] = lVIs[j + 1];
lVIs[j + 1] = lVI;
}
}
}
}

listView.Items.Clear();
foreach (ListViewItem lVI in lVIs)
{
listView.Items.Add(lVI);
}
}

2.从资源管理器里支持拖放文件和文件夹,并表明他的类型。
private void MainForm_DragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.FileDrop))
{
e.Effect = DragDropEffects.Link;
}
else
{
e.Effect = DragDropEffects.None;
}
}

private void MainForm_DragDrop(object sender, DragEventArgs e)
{
Array arrayFileName = (Array)e.Data.GetData(DataFormats.FileDrop);

List<string> fileList = new List<string>();
for (int i = 0; i < arrayFileName.Length; i++)
{
string strFileName = arrayFileName.GetValue(i).ToString();

if (Directory.Exists(strFileName))
{
GetFileNames(strFileName, fileList);
}
else if (File.Exists(strFileName))
{
fileList.Add(strFileName);
}
}

string[] files = new string[fileList.Count];
for (int i = 0; i < files.Length; i++)
{
files[i] = fileList[i];
}
AddFiles(files);
}

3.最好写成一个控件。
自己写

4.谁看过Pro C# 2005 and the .NET 2.0 Platform和Net 2.0 Windows Forms And Custom Controls In C#这两本书,怎么样?
没看过,不好评论

1,2没有明白的话,可以发消息问我,

http://cache.baidu.com/c?m=9f65cb4a8c8507ed4fece763104c8c711923d030678197027fa3c215cc79031a1b33a6ec7c745719839b21321cf40f0bb5ed6573315725e4caccdc4dd9b9c3782c832c657318871715d40eafbc1c639e7e841fb4ef4fe8e4ab73d5ea89849a050e94145a26c1adcb1c5754&p=8639c64ad7af13f708e29779130e&user=baidu


怎么样可以让C语言从头再来执行
可以用while,也可以用goto和loop

怎么样让一个简单的C程序有界面
C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,...

怎么样才能让写出来的C语言运行
下载一个C语言开发环境,比如Microsoft Visual Studio 6.0。在里头创建一个test.c文件,把这段代码输入进去,点“编译”,然后点“运行”正确的代码如下:include <stdio.h> void main(){ printf(〃你好,《电脑报》软件世界!\\n〃);}

C语言如何让一个函数返回多个值
01 全局变量传递 这种方式算是最不科学的规范,打破了软件开发需要的闭环策略,但在基本语法上是支持的,C语言里面最好少涉猎全局变量,使用出错的风险会提升很多,真要想使用建议还是用静态全局变量直接在变量的前面加上static修饰符。02 使用数组名或指针作为函数的形参 被调函数的行参是一...

怎么样让一个c语言中的一段函数,从头运行下来若到后来不满足条件又让...
方法太多了,随便写个,楼上的也可以,但是写的不太明白 while(1){ …… \/\/要执行的一段函数 if (条件满足) \/\/判断是重新执行还是跳出 break; \/\/跳出死循环 }

怎么样才能让奔驰C级更有力还省油
如果你早上出门,习惯发动引擎,让车子温个几分钟,千万别再这麼做,这样停车利用怠速来温车相当耗油,而且会让引擎夭寿短命。如果一天怠速温车五分钟,一年就要一小时八十多分钟,那得耗费很多油。怠速温车,时间一长,引擎室汽缸壁会产生水珠,水会使机油的润滑效果衰减,引擎反而容易损坏。

看图 怎么能让这个C 。。。
在int a,b;后另起一行 double c;或float c;就行了。但是用c=a\/b是得不到小数的,应该用c=(double)a\/b、c=(float)a\/b、c=1.0*a\/b或c=(a+0.0)\/b、c=a\/(b+0.0)等,把\/的两边之一提升为浮点型数据。

c语言如何让输出的结果为小数?
利用C语言使输出值为小数的编程方法和思想如下:1.首先需要定义一个变量作为后续需要输出的数。这里以定义一个变量a为例。需要注意的是,整型int是不支持转化的。2.然后使用scanf()函数接受从键盘输入的一个数,这样就为变量a成功赋值。3.接着使用printf语句来对数a进行小数化的处理。处理格式为:【%....

怎么样才能让街头篮球16级以下的女C厉害?
装备很关键,板裤 跳鞋 再带个角 中锋 卡位 和 直觉很重要 G 3出手,就要有球往哪弹的意识 瞬间向那个方向移动 找好落点 D 再就是和G 的 配合要到位 各种当差 都要略通一二 g 的一举一动 都要明白他的意图(垃圾G 不算啊)随时帮忙 ...

有这样2个类A和B,都不是接口,有一个类,如果想要让C能实现A和B的方法,C...
java不允许多重继承 可以考虑继承一个,传入一个 class C extends A{ private B b;public void bmethod(object o){ b=new B();b.bmethod(o);} }

临海市14775335193: C#怎么用代码实现Listview控件编辑列 -
盈闵补中: 你可以在空间的属性column里编辑(首先设置view属性为detais),直接添加就可以,或者在程序里添加代码listView1.Columns.Add(ColumnName);

临海市14775335193: 用C# listview实现以下功能 -
盈闵补中: private void BindListView() { listView1.Columns.Add("书编号", 100, HorizontalAlignment.Left); listView1.Columns.Add("书名称", 140, HorizontalAlignment.Left); List<Book> bookList = //读取的记录放到集合里即可 foreach (Book item in ...

临海市14775335193: 如何使用C#实现Listview显示图片与文字 -
盈闵补中: 把ListView的View设置成:LargeIcon 再添加一个ImageList.把ListView的LargeImageList绑定到这个ImageList上.动态添加方法:ListViewItem LV = new ListViewItem("内容"); IL.Images.Add(new Bitmap(GetImageStream("图片地址"))...

临海市14775335193: C#用ListView实现以下功能 -
盈闵补中: 你是只加图片吗?把图片放到ImageList里面,添加项的时候,listviewitem li =new listviewitem(); li.text="zhangsan"; li.image=0; li.subitem.add(.......); listview.items.add(li); 其中imagelist和listview关联起来就可以了.

临海市14775335193: c#的listview怎么实现只有在选中项上右键出菜单 -
盈闵补中: 展开1全部 可以使用ContextMenu或者ContextMenuStrip控件实现这个功能创建一个ContextMenu控件的实例,在里面添加好菜单项然后把ListView的ContextMenu属性设置为你创建的控件的名称各个菜单项的可以在MenuItem_Click事件里编写代码实现相应功能

临海市14775335193: c#的listview怎么实现只有在选中项上右键出菜单 -
盈闵补中: 可以使用ContextMenu或者ContextMenuStrip控件实现这个功能 创建一个ContextMenu控件的实例,在里面添加好菜单项 然后把ListView的ContextMenu属性设置为你创建的控件的名称 各个菜单项的可以在MenuItem_Click事件里编写代码实现相应功能

临海市14775335193: c#listView控件怎么实现这个功能?
盈闵补中: 上面的是个panel,下面的是个listview,右边的黑色三角有listview的属性... 这静态的没有什么用...

临海市14775335193: C# winfrom listview 怎么实现以下图的样式呢? -
盈闵补中: 不容易实现,listview中间肯定有空隙的,如果要是一行的话,倒是可以,用那个菜单工具,把背景设置成图片,效果弄好一点的话也可以.上面一排图标,中间就是放各个功能的显示,一般正常程序都是这个界面.

临海市14775335193: 怎么样C#实现打印ListView -
盈闵补中: ListViewItem ls = new ListViewItem(); for (int i = 0; i { ls.SubItems[0].Text = S[i].BH; ls.SubItems.Add(S[i].XM); 还可以添加ls.SubItems.Add(S[i].XB); } listView1.Items.Add(ls);

临海市14775335193: 如何实现listview里面的这种功能 c# -
盈闵补中: 好办啊!首先得到目录中图片名的集合,用数组或者list表示.然后 foreach(string file in listfiles) { if(listview.contains(file)=false) { listview.items.add(new listviewitem(file) } } foreach(listviewitem item in listview) { if (listfile.contains(listviewitem.text)=false) listview.items.remove(item ) }

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网