首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

ListView控件有关问题()

2011-12-12 
ListView控件问题(在线等)Winform窗体上有一个ListView2个Buttons1个label//****************privatevoidb

ListView控件问题(在线等)
Winform   窗体上有一个ListView   2个Buttons   1个label  
//****************
private   void   button2_Click(object   sender,   System.EventArgs   e)
{
try
{
this.listView1   .Clear   ();
this.listView1.Columns   .Add   ( "名 ",50,HorizontalAlignment.Left);
this.listView1.Columns   .Add   ( "姓 ",50,HorizontalAlignment.Left);
this.listView1.Columns   .Add   ( "级 ",50,HorizontalAlignment.Left);
this.listView1.Columns   .Add   ( "tt ",50,HorizontalAlignment.Left);
for(int   i=0;i <5;i++)
{
string   []sub={ "ww "+i, "ee "+i, "rr "+i, "ss "+i};
this.listView1   .Items   .Insert   (this.listView1.Items   .Count   ,new   ListViewItem   (sub));
}
}
catch(Exception   Error)
{
this.label1   .Text   =Error.Message   ;
}
}
//***************
private   void   button1_Click(object   sender,   System.EventArgs   e)
{
try
{
this.listView1   .Clear   ();
this.listView1.Columns   .Add   ( "名称 ",50,HorizontalAlignment.Left);
this.listView1.Columns   .Add   ( "姓名 ",50,HorizontalAlignment.Left);
this.listView1.Columns   .Add   ( "级别 ",50,HorizontalAlignment.Left);
for(int   i=0;i <5;i++)
{
string   []sub={ "Ni "+i, "Wo "+i, "Ta "+i};
this.listView1   .Items   .Insert   (this.listView1.Items   .Count   ,new   ListViewItem   (sub));
}
}
catch(Exception   Error)
{
this.label1   .Text   =Error.Message   ;
}
}
//****************
private   int   CurrentColumn   =   -1;   //记录上次点击的列号
private   bool   b_Convert   =   false;   //记录正逆序信息
//****************
private   void   listView1_ColumnClick_1(object   sender,   System.Windows.Forms.ColumnClickEventArgs   e)
{
if(e.Column   ==   CurrentColumn)
{
b_Convert   =   !   b_Convert;

}
else
{
CurrentColumn   =   e.Column;
b_Convert   =   false;

}
this.listView1   .ListViewItemSorter   =   new   ListSortBySubItem(this.CurrentColumn   ,b_Convert);
}
//******************排序
public   class   ListSortBySubItem     :   IComparer
{
private   int   m_Column   =   0;
private   int   m_SortType   =   0;//排序类型
private   bool   m_asc   =   true;
public   ListSortBySubItem(int   Column,bool   bAsc)
{
m_Column   =   Column;
m_asc   =   bAsc;
}
public   ListSortBySubItem(int   Column,bool   bAsc,   int   SortType)
{
m_Column   =   Column;
m_SortType   =   SortType;
m_asc   =   bAsc;
}
int   IComparer.Compare(object   x,   object   y)
{
string   item1   =   ((ListViewItem)x).SubItems[m_Column].Text.Trim();
string   item2   =   ((ListViewItem)y).SubItems[m_Column].Text.Trim();
int   intSort   =   0;
if(!m_asc)//反序
{


string   temp   =   item1;
item1   =   item2;
item2   =   temp;
}

if(m_SortType   ==   0)       //字符排序
intSort   =   String.Compare(item1,item2);
else             //数值排序
{
double   str1   =   0;
double   str2   =   0;
if(item1   ==   " ")//为空设置为最小
return   1;
else   if(item2   ==   " ")
return   0;
try
{
str1   =   double.Parse(item1);
str2   =   double.Parse(item2);
}
catch
{
//转换出错
return   0;
}
if(str1   > =str2)
return   0;
else
return   1;
       
}
return   intSort;
}


}

//****************
问题   当我点击button2之后   Listview显示4列数据   我点击第四列进行排序(显示正常)然后我点击button1(我想显示另外3行数据),此时显示出错   *指定的参数已超出有效值的范围。\r\n参数名:   “3”不是“index”的有效值。*


//****************
大家救命啊!!!


[解决办法]
你这样做当然有问题啊..

Button2点击时创建了四列..

再点击Button1时虽然你调用了this.listView1 .Clear ();但是只能清除ListView中的项,不可能清除Column啊...

热点排行