分享
 
 
 

有数据绑定、排序、查找功能的ListView(二):ListViewEx

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

using System;

using System.Data;

using System.Text;

using System.Globalization;

using System.Collections;

using System.Reflection;

using System.Drawing;

using System.Drawing.Drawing2D;

using System.Drawing.Design;

using System.Windows.Forms;

using System.Windows.Forms.Design;

using System.ComponentModel;

using System.ComponentModel.Design;

using System.ComponentModel.Design.Serialization;

using System.Runtime.InteropServices;

namespace CommonFrame.OCX

{

/// <summary>

/// 为ListView增加数据绑定、查找和排序功能

/// </summary>

///

#region 枚举

public enum SortType

{

String,

Number,

Date

}

#endregion

#region 继承实现ListView列表类

public class ListViewEx : System.Windows.Forms.ListView

{

#region 列表项目所需的WIndows32 API定义

[StructLayout(LayoutKind.Sequential)]

private struct HDITEM

{

public Int32 mask;

public Int32 cxy;

[MarshalAs(UnmanagedType.LPTStr)]

public String pszText;

public IntPtr hbm;

public Int32 cchTextMax;

public Int32 fmt;

public Int32 lParam;

public Int32 iImage;

public Int32 iOrder;

};

[StructLayout(LayoutKind.Sequential) ]

public struct LVFINDINFO

{

public LVFI_FLAGS flags;

public string psz;

public IntPtr lParam;

public Point pt;

public VirtualKey vkDirection ;

}

public enum LVFI_FLAGS

{

LVFI_PARAM = 0x1,

LVFI_PARTIAL = 0x8,

LVFI_STRING = 0x2,

LVFI_WRAP = 0x20,

LVFI_NEARESTXY = 0x40,

}

public enum VirtualKey

{

VK_LEFT = 0x25,

VK_RIGHT = 0x27,

VK_UP = 0x26,

VK_DOWN = 0x28,

VK_HOME = 0x24,

VK_END = 0x23,

VK_PRIOR = 0x21,

VK_NEXT = 0x22

}

[DllImport("user32")]

static extern IntPtr SendMessage(IntPtr Handle, Int32 msg, IntPtr wParam, IntPtr lParam);

[DllImport("user32", EntryPoint="SendMessage")]

static extern IntPtr SendMessageH(IntPtr Handle, Int32 msg, IntPtr wParam, ref HDITEM lParam);

[DllImport("user32.dll", EntryPoint="SendMessage", CharSet=CharSet.Auto)]

static extern int SendMessageL(System.IntPtr hWnd, Int32 msg, int wParam, ref LVFINDINFO lparam);

const Int32 HDI_WIDTH = 0x0001;

const Int32 HDI_HEIGHT = HDI_WIDTH;

const Int32 HDI_TEXT = 0x0002;

const Int32 HDI_FORMAT = 0x0004;

const Int32 HDI_LPARAM = 0x0008;

const Int32 HDI_BITMAP = 0x0010;

const Int32 HDI_IMAGE = 0x0020;

const Int32 HDI_DI_SETITEM = 0x0040;

const Int32 HDI_ORDER = 0x0080;

const Int32 HDI_FILTER = 0x0100; // 0x0500

const Int32 HDF_LEFT = 0x0000;

const Int32 HDF_RIGHT = 0x0001;

const Int32 HDF_CENTER = 0x0002;

const Int32 HDF_JUSTIFYMASK = 0x0003;

const Int32 HDF_RTLREADING = 0x0004;

const Int32 HDF_OWNERDRAW = 0x8000;

const Int32 HDF_STRING = 0x4000;

const Int32 HDF_BITMAP = 0x2000;

const Int32 HDF_BITMAP_ON_RIGHT = 0x1000;

const Int32 HDF_IMAGE = 0x0800;

const Int32 HDF_SORTUP = 0x0400; // 0x0501

const Int32 HDF_SORTDOWN = 0x0200; // 0x0501

const Int32 LVM_FIRST = 0x1000; // List 消息

const Int32 LVM_FINDITEMA = LVM_FIRST + 13;

const Int32 LVM_FINDITEMW = LVM_FIRST + 83;

const Int32 LVM_GETHEADER = LVM_FIRST + 31;

const Int32 HDM_FIRST = 0x1200; // Header 消息

const Int32 HDM_SETIMAGELIST = HDM_FIRST + 8;

const Int32 HDM_GETIMAGELIST = HDM_FIRST + 9;

const Int32 HDM_GETITEM = HDM_FIRST + 11;

const Int32 HDM_SETITEM = HDM_FIRST + 12;

#endregion

private string m_strDataFilter = "";

private int m_intSortColumn = -1;

private string m_strDataMember = "";

private CurrencyManager m_objDataManager = null;

private DataSet m_objData = null;

private DataView m_objView = null;

internal bool m_blnModifiedItem = true;

private CommonFrame.OCX.ListViewItemsCollection m_objItems ;

private CommonFrame.OCX.ColumnHeaderMappingCollection m_objMappings ;

public ListViewEx()

{

m_objItems = new CommonFrame.OCX.ListViewItemsCollection(this);

m_objMappings = new CommonFrame.OCX.ColumnHeaderMappingCollection();

}

#region 属性

[

CategoryAttribute("Data"),

BrowsableAttribute(true),

DescriptionAttribute("设置的数据成员"),

DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Visible),

DefaultValueAttribute("")

]

public string DataMember

{

get

{

return m_strDataMember;

}

set

{

m_strDataMember = value;

//this.SetDataMember();

}

}

[

CategoryAttribute("Data"),

BrowsableAttribute(true),

DescriptionAttribute("设置数据源"),

DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Visible),

DefaultValueAttribute(null)

]

public DataSet DataSource

{

get

{

return m_objData;

}

set

{

m_objData = value;

this.SetDataSource();

}

}

[

BrowsableAttribute(false),

DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Hidden)

]

public string DataFilter

{

get

{

return m_strDataFilter;

}

set

{

if (this.m_objData != null)

{

m_strDataFilter = value;

this.SetDataFilter();

}

else

{

m_strDataFilter = "";

}

}

}

[

CategoryAttribute("杂项"),

BrowsableAttribute(true),

DescriptionAttribute("列表项集合"),

DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Content),

DefaultValueAttribute(null)

]

public CommonFrame.OCX.ListViewItemsCollection Items

{

get

{

return m_objItems;

}

}

[

CategoryAttribute("杂项"),

BrowsableAttribute(true),

DescriptionAttribute("列表标头与数据成员映射集合"),

DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Content),

DefaultValueAttribute(null)

]

public CommonFrame.OCX.ColumnHeaderMappingCollection ColumnHeaderMappings

{

get

{

return m_objMappings;

}

set

{

m_objMappings = value;

}

}

public bool MultiSelect

{

get

{

return base.MultiSelect;

}

set

{

base.MultiSelect = value;

if ((this.DataSource != null) && (base.MultiSelect == true))

{

base.MultiSelect = false;

throw new Exception("已经设置了数据源DataSource,不能多选");

}

}

}

#endregion

#region 方法

// 填充数据

private void FillListViewItems()

{

ListViewItem item = null;

int intRowCount = this.m_objDataManager.Count ;

this.BeginUpdate();

//允许修改列表项目

this.m_blnModifiedItem = true;

//清除已经有的列表项目

if(this.Items.Count>0)

{

this.Items.Clear();

}

for(int i=0;i<intRowCount;i++)

{

item = new ListViewItem(m_objView[i][this.m_objMappings[0].MappingField].ToString());

for(int j=1;j<this.m_objMappings.Count;j++)

{

item.SubItems.Add(m_objView[i][this.m_objMappings[j].MappingField].ToString());

}

this.Items.Add(item);

}

this.EndUpdate();

this.m_blnModifiedItem = false;

}

private void SetDataSource()

{

if (m_objData != null)

{

this.m_blnModifiedItem = true;

//清空列表项目

this.Items.Clear();

//设置多选属性为单选

this.MultiSelect = false;

this.m_blnModifiedItem = false;

}

}

private void SetDataMember()

{

if ((m_objData == null) || (m_strDataMember == null) ||(m_strDataMember == ""))

{

this.Columns.Clear();

this.ColumnHeaderMappings.Clear();

return;

}

DataColumnCollection objDC = m_objData.Tables[m_strDataMember].Columns;

if (objDC != null)

{

this.m_blnModifiedItem = true;

this.Columns.Clear();

for( int i=0;i<objDC.Count;i++)

{

ColumnHeader ch = this.Columns.Add(objDC[i].ColumnName.Trim(),60,HorizontalAlignment.Left);

this.m_objMappings.Add(ch,objDC[i].ColumnName.Trim());

}

this.m_blnModifiedItem = false;

}

}

private void SetDataFilter()

{

if ( this.DataFilter != m_objView.RowFilter)

{

m_objView.RowFilter = this.DataFilter;

}

}

//查找项目

public ListViewItem FindItem(ListView listView,string itemText,bool includeSubItemsInSearch)

{

if (listView.Items.Count == 0)

{

return null;

}

if (includeSubItemsInSearch == false)

{

for(int i=0;i<listView.Items.Count;i++)

{

if (listView.Items[i].Text == itemText)

{

listView.Items[i].Selected = true;

listView.Items[i].EnsureVisible();

return listView.Items[i];

}

}

}

else

{

int intItemIndex = 0;

int intSubItemIndex = 0;

while (intItemIndex < listView.Items.Count)

{

intSubItemIndex = 0;

ListViewItem objItem = listView.Items[intItemIndex];

while (intSubItemIndex < objItem.SubItems.Count)

{

if (itemText == objItem.SubItems[intSubItemIndex].Text)

{

objItem.Selected = true;

objItem.EnsureVisible();

return objItem;

}

intSubItemIndex += 1;

}

intItemIndex += 1;

}

}

return null;

}

#endregion

#region 事件

//在选择列表项后,同步其他数据绑定的控件

protected override void OnSelectedIndexChanged(EventArgs e)

{

base.OnSelectedIndexChanged (e);

if ((this.FocusedItem != null) && (m_objDataManager != null))

{

m_objDataManager.Position = (int)this.FocusedItem.Index ;

}

}

//获取CurrencyManager,以实现同其他数据绑定控件的同步

protected override void OnBindingContextChanged(EventArgs e)

{

base.OnBindingContextChanged (e);

if ((this.Parent!= null) && (this.Parent.BindingContext != null) &&

(m_objData != null) && (m_strDataMember != null) && (m_objDataManager == null))

{

m_objDataManager = (CurrencyManager)this.Parent.BindingContext[m_objData,m_strDataMember];

if (m_objDataManager != null)

{

this.m_objView = (DataView)m_objDataManager.List;

m_objDataManager.PositionChanged += new EventHandler(DataSource_PositionChanged);

m_objDataManager.ItemChanged += new ItemChangedEventHandler(DataSource_ItemChanged);

}

}

}

//排序

protected override void OnColumnClick(ColumnClickEventArgs e)

{

base.OnColumnClick (e);

if(e.Column == m_intSortColumn)

{

if (this.Sorting == SortOrder.Ascending)

{

this.Sorting = SortOrder.Descending;

}

else

{

this.Sorting = SortOrder.Ascending;

}

}

else

{

m_intSortColumn = e.Column;

this.Sorting = SortOrder.Ascending;

}

//对于没有进行数据绑定时,使用ListView本身的排序功能

if (m_objDataManager == null)

{

this.ListViewItemSorter = new ListViewItemComparer(m_intSortColumn,this.Sorting,this.m_objMappings[m_intSortColumn].SortType);

this.Sort();

}

//对于进行数据绑定时的排序,使用DataView的排序功能

else

{

string strOrder = "";

if ( this.Sorting == SortOrder.Ascending)

{

strOrder = "Asc";

}

else if (this.Sorting == SortOrder.Descending)

{

strOrder = "Desc";

}

m_objView.Sort = this.m_objMappings[m_intSortColumn].MappingField + " " + strOrder;

}

}

//当其他的数据绑定控件修改当前选项时,ListView同步

private void DataSource_PositionChanged(object sender,EventArgs e)

{

if (this.Items.Count > 0 )

{

this.Items[m_objDataManager.Position].Selected = true;

this.Items[m_objDataManager.Position].EnsureVisible();

}

}

//当数据源DataSet有内容时,自动填充ListView

private void DataSource_ItemChanged(object sender ,ItemChangedEventArgs e)

{

if (this.DesignMode == false)

{

FillListViewItems();

}

}

#endregion

}

#endregion

#region 排序管理类

public class ListViewItemComparer : System.Collections.IComparer

{

private int m_intColumn = 0;

private SortType m_enmSortType = SortType.String;

private SortOrder m_enmSortOrder = SortOrder.Ascending ;

public ListViewItemComparer (int columnIndex,SortOrder sortOrder)

{

m_intColumn = columnIndex;

m_enmSortOrder = sortOrder;

}

public ListViewItemComparer (int columnIndex,SortOrder sortOrder,SortType sortType)

{

m_intColumn = columnIndex;

m_enmSortType = sortType;

m_enmSortOrder = sortOrder;

}

int IComparer.Compare(object x, object y)

{

int intSort = 0;

if(m_enmSortType == SortType.String) //字符排序

{

intSort = String.Compare(((ListViewItem)x).SubItems[m_intColumn].Text.Trim(),

((ListViewItem)y).SubItems[m_intColumn].Text.Trim()

);

}

else if (m_enmSortType == SortType.Number) //数值排序

{

try

{

System.Double firstNumber =

Double.Parse(((ListViewItem)x).SubItems[m_intColumn].Text);

System.Double secondNumber =

Double.Parse(((ListViewItem)y).SubItems[m_intColumn].Text);

if (firstNumber > secondNumber)

{

intSort = 1;

}

else if (firstNumber < secondNumber)

{

intSort = -1;

}

else

{

intSort = 0;

}

}

catch

{

intSort = String.Compare(((ListViewItem)x).SubItems[m_intColumn].Text,

((ListViewItem)y).SubItems[m_intColumn].Text);

}

}

else if (m_enmSortType == SortType.Date) //日期排序

{

try

{

System.DateTime firstDate =

DateTime.Parse(((ListViewItem)x).SubItems[m_intColumn].Text);

System.DateTime secondDate =

DateTime.Parse(((ListViewItem)y).SubItems[m_intColumn].Text);

intSort = DateTime.Compare(firstDate, secondDate);

}

catch

{

intSort = String.Compare(((ListViewItem)x).SubItems[m_intColumn].Text,

((ListViewItem)y).SubItems[m_intColumn].Text);

}

}

if(m_enmSortOrder == SortOrder.Descending)

{

return intSort*= -1;

}

else

{

return intSort;

}

}

}

#endregion

#region 继承列表项目集合类。当设定DataSource属性时,不允许增加、插入、删除列表项目

public class ListViewItemsCollection : ListView.ListViewItemCollection

{

private CommonFrame.OCX.ListViewEx m_lvwBase = null;

public ListViewItemsCollection(CommonFrame.OCX.ListViewEx listView):base(listView)

{

m_lvwBase = listView;

}

public int Count

{

get

{

return base.Count;

}

}

public ListViewItem this[int index]

{

get

{

return base[index];

}

}

public int IndexOf(ListViewItem item)

{

return base.IndexOf(item);

}

public void Remove(System.Windows.Forms.ListViewItem item)

{

if ((m_lvwBase.DataSource != null) && (m_lvwBase.m_blnModifiedItem == false))

{

throw new Exception("已经设置了DataSource,不允许删除项目");

}

else

{

base.Remove(item);

}

}

public void RemoveAt(int index)

{

if ((m_lvwBase.DataSource != null) && (m_lvwBase.m_blnModifiedItem == false))

{

throw new Exception("已经设置了DataSource,不允许删除项目");

}

else

{

base.RemoveAt(index);

}

}

public System.Windows.Forms.ListViewItem Add(string text)

{

if ((m_lvwBase.DataSource != null) && (m_lvwBase.m_blnModifiedItem == false))

{

throw new Exception("已经设置了DataSource,不允许添加项目");

}

else

{

return base.Add(text);

}

}

public System.Windows.Forms.ListViewItem Add(string text,int imageIndex)

{

if ((m_lvwBase.DataSource != null) && (m_lvwBase.m_blnModifiedItem == false))

{

throw new Exception("已经设置了DataSource,不允许添加项目");

}

else

{

return base.Add(text,imageIndex);

}

}

public void Insert(int index,System.Windows.Forms.ListViewItem item)

{

if ((m_lvwBase.DataSource != null) && (m_lvwBase.m_blnModifiedItem == false))

{

throw new Exception("已经设置了DataSource,不允许添加项目");

}

else

{

base.Insert(index,item);

}

}

public void Insert(int index,string text)

{

if ((m_lvwBase.DataSource != null) && (m_lvwBase.m_blnModifiedItem == false))

{

throw new Exception("已经设置了DataSource,不允许添加项目");

}

else

{

base.Insert(index,text);

}

}

public void Insert(int index,string text,int imageIndex)

{

if ((m_lvwBase.DataSource != null) && (m_lvwBase.m_blnModifiedItem == false))

{

throw new Exception("已经设置了DataSource,不允许添加项目");

}

else

{

base.Insert(index,text,imageIndex);

}

}

public void AddRange(System.Windows.Forms.ListViewItem[] values)

{

if ((m_lvwBase.DataSource != null) && (m_lvwBase.m_blnModifiedItem == false))

{

throw new Exception("已经设置了DataSource,不允许添加项目");

}

else

{

base.AddRange(values);

}

}

public void Clear()

{

if ((m_lvwBase.DataSource != null) && (m_lvwBase.m_blnModifiedItem == false))

{

throw new Exception("已经设置了DataSource,不允许清空项目");

}

else

{

base.Clear();

}

}

}

#endregion

#region 列标头映射集合类,实现IList接口,对ColumnHeaderMapping类进行管理

public class ColumnHeaderMappingCollection : System.Collections.IList

{

private ArrayList m_arrColumnHearderMapping = new ArrayList(15);

public ColumnHeaderMappingCollection()

{

}

#region 实现IList接口

int IList.Add(object value)

{

return m_arrColumnHearderMapping.Add(value);

}

void IList.Clear()

{

m_arrColumnHearderMapping.Clear();

}

bool IList.Contains(object item)

{

return m_arrColumnHearderMapping.Contains(item);

}

int IList.IndexOf(object value)

{

return m_arrColumnHearderMapping.IndexOf(value);

}

void IList.Insert(int index,object value)

{

m_arrColumnHearderMapping.Insert(index,value);

}

bool IList.IsFixedSize

{

get

{

return m_arrColumnHearderMapping.IsFixedSize;

}

}

bool IList.IsReadOnly

{

get

{

return m_arrColumnHearderMapping.IsReadOnly;

}

}

void IList.Remove(object obj)

{

m_arrColumnHearderMapping.Remove(obj);

}

void IList.RemoveAt(int index)

{

m_arrColumnHearderMapping.RemoveAt(index);

}

object IList.this[int index]

{

get

{

return m_arrColumnHearderMapping[index];

}

set

{

}

}

bool System.Collections.ICollection.IsSynchronized

{

get

{

return m_arrColumnHearderMapping.IsSynchronized;

}

}

object System.Collections.ICollection.SyncRoot

{

get

{

return m_arrColumnHearderMapping.SyncRoot;

}

}

void System.Collections.ICollection.CopyTo(System.Array array,int arrayIndex)

{

m_arrColumnHearderMapping.CopyTo(array,arrayIndex);

}

#endregion

public int Count

{

get

{

return m_arrColumnHearderMapping.Count;

}

}

public ColumnHeaderMapping this[int index]

{

get

{

return (ColumnHeaderMapping)m_arrColumnHearderMapping[index];

}

}

public void Add(ColumnHeader columnHeader,string mappingField)

{

m_arrColumnHearderMapping.Add(new ColumnHeaderMapping(columnHeader,mappingField));

}

public void Add(ColumnHeaderMapping ColumnHeaderMapping)

{

m_arrColumnHearderMapping.Add(ColumnHeaderMapping);

}

public void AddRange(ColumnHeaderMapping[] columnHeadMappings)

{

m_arrColumnHearderMapping.AddRange(columnHeadMappings);

}

public void AddRange(ColumnHeader[] columnHeaders,string[] mappingFields)

{

if (columnHeaders.Length != mappingFields.Length)

{

return;

}

for(int i=0;i<mappingFields.Length;i++)

{

m_arrColumnHearderMapping.Add(new ColumnHeaderMapping(columnHeaders[i],mappingFields[i]));

}

}

public void Remove(ColumnHeaderMapping ColumnHeaderMapping)

{

m_arrColumnHearderMapping.Remove(ColumnHeaderMapping);

}

public void Clear()

{

m_arrColumnHearderMapping.Clear();

}

public int IndexOf(ColumnHeaderMapping columnHeaderMapping)

{

return m_arrColumnHearderMapping.IndexOf(columnHeaderMapping);

}

public void Insert(int index,ColumnHeaderMapping columnHeaderMapping)

{

m_arrColumnHearderMapping.Insert(index,columnHeaderMapping);

}

public void InsertRange(int index,ColumnHeaderMapping[] columnHeaderMappings)

{

m_arrColumnHearderMapping.InsertRange(index,columnHeaderMappings);

}

public bool Contains(ColumnHeaderMapping columnHeader)

{

return m_arrColumnHearderMapping.Contains(columnHeader);

}

public System.Collections.IEnumerator GetEnumerator()

{

return m_arrColumnHearderMapping.GetEnumerator();

}

}

#endregion

#region 列表标头映射类,实现列表标头同数据库表字段的映射,定义列表标头在排序时使用的数据类型

[TypeConverterAttribute(typeof(ColumnHeaderMappingConvert))]

public class ColumnHeaderMapping

{

private ColumnHeader m_objColumnHeader;

private string m_strMappingField;

private SortType m_enmSortType;

public ColumnHeaderMapping()

{

m_objColumnHeader = new ColumnHeader();

m_strMappingField = "";

}

public ColumnHeaderMapping(ColumnHeader columnHeader,string mappingField)

{

m_objColumnHeader = columnHeader;

m_strMappingField = mappingField;

}

[

CategoryAttribute("杂项"),

BrowsableAttribute(true),

DescriptionAttribute("列表标头"),

DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Content),

DefaultValueAttribute(null)

]

public ColumnHeader ColumnHeader

{

get

{

return m_objColumnHeader;

}

set

{

m_objColumnHeader = value;

}

}

[

CategoryAttribute("杂项"),

BrowsableAttribute(true),

DescriptionAttribute("映射字段"),

DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Visible),

DefaultValueAttribute("")

]

public string MappingField

{

get

{

return m_strMappingField;

}

set

{

m_strMappingField = value;

}

}

[

CategoryAttribute("杂项"),

BrowsableAttribute(true),

DescriptionAttribute("列表标头类型"),

DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Visible),

DefaultValueAttribute(SortType.String)

]

public SortType SortType

{

get

{

return m_enmSortType;

}

set

{

m_enmSortType = value;

}

}

}

#endregion

#region 对ColumnHeaderMapping进行转换,实现ColumnHeaderMapping类在IDE中的序列化

public class ColumnHeaderMappingConvert : TypeConverter

{

public ColumnHeaderMappingConvert()

{

}

public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType)

{

if (destinationType == typeof(InstanceDescriptor))

{

return true;

}

return base.CanConvertTo(context, destinationType);

}

public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType)

{

if (value is ColumnHeaderMapping)

{

if (destinationType == typeof(InstanceDescriptor))

{

object[] properites = new object[2];

Type[] types = new Type[2];

ColumnHeaderMapping chm = (ColumnHeaderMapping)value;

types[0] = typeof(ColumnHeader);

properites[0] = chm.ColumnHeader ;

types[1] = typeof(string);

properites[1] = chm.MappingField ;

ConstructorInfo ci = typeof(ColumnHeaderMapping).GetConstructor(types);

return new InstanceDescriptor(ci,properites);

}

}

return base.ConvertTo(context, culture, value, destinationType);

}

}

#endregion

#region 继承列表标头集合类(由于继承列表标头集合类后,新增的列表标头不能显示在列表中,所以已经注释,暂时没有使用)

// public class ColumnHeaderCollection : ListView.ColumnHeaderCollection

// {

// private ListView m_lvwBase = null;

//

// public ColumnHeaderCollection(CommonFrame.OCX.ListView listView) : base(listView)

// {

// m_lvwBase = listView;

// }

//

// public void Remove(ColumnHeader item)

// {

// if ((m_lvwBase.DataSource != null) && (m_lvwBase.m_blnModifiedItem == false))

// {

// throw new Exception("已经设置了DataSource,不允许删除项目");

// }

// else

// {

// base.Remove(item);

// }

// }

//

// public void RemoveAt(int index)

// {

// if ((m_lvwBase.DataSource != null) && (m_lvwBase.m_blnModifiedItem == false))

// {

// throw new Exception("已经设置了DataSource,不允许删除项目");

// }

// else

// {

// base.RemoveAt(index);

//

// }

// }

//

// public int Add(ColumnHeader value)

// {

// if ((m_lvwBase.DataSource != null) && (m_lvwBase.m_blnModifiedItem == false))

// {

// throw new Exception("已经设置了DataSource,不允许添加项目");

// }

// else

// {

// return base.Add(value);

// }

// }

//

// public ColumnHeader Add(string text,int width,HorizontalAlignment textAlign)

// {

// if ((m_lvwBase.DataSource != null) && (m_lvwBase.m_blnModifiedItem == false))

// {

// throw new Exception("已经设置了DataSource,不允许添加项目");

// }

// else

// {

// return base.Add(text,width,textAlign);

// }

// }

//

// public void Insert(int index,ColumnHeader item)

// {

// if ((m_lvwBase.DataSource != null) && (m_lvwBase.m_blnModifiedItem == false))

// {

// throw new Exception("已经设置了DataSource,不允许添加项目");

// }

// else

// {

// base.Insert(index,item);

// }

// }

//

// public void Insert(int index,string text,int width,HorizontalAlignment textAlign)

// {

// if ((m_lvwBase.DataSource != null) && (m_lvwBase.m_blnModifiedItem == false))

// {

// throw new Exception("已经设置了DataSource,不允许添加项目");

// }

// else

// {

// base.Insert(index,text,width,textAlign);

// }

// }

//

// public void AddRange(ColumnHeader[] values)

// {

// if ((m_lvwBase.DataSource != null) && (m_lvwBase.m_blnModifiedItem == false))

// {

// throw new Exception("已经设置了DataSource,不允许添加项目");

// }

// else

// {

// base.AddRange(values);

// }

// }

//

// public void Clear()

// {

// if ((m_lvwBase.DataSource != null) && (m_lvwBase.m_blnModifiedItem == false))

// {

// throw new Exception("已经设置了DataSource,不允许清空项目");

// }

// else

// {

// base.Clear();

// }

// }

//

// public ColumnHeader this[int index]

// {

// get

// {

// return base[index];

// }

// }

// }

#endregion

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有