翻译|其它|编辑:郝浩|2007-10-17 14:53:46.000|阅读 969 次
概述:
# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>
在使用 listbox,checklistbox 时,取出的值总想要自己定义的任意对象,同时可以方便的操作
listbox,checklistbox,所以写了这个辅助类 HlListView
使用方法
1.设置 listbox,checklistb 值
ArrayList list =new ArrayList();
testData tmp1 = new testData("测试数据类1", 10);
testData tmp2 = new testData("测试数据类2", 2);
testData tmp3 = new testData("测试数据类3", 5);
list.Add(tmp1);
list.Add(tmp2);
list.Add(tmp3);
HlListView.setValue(this.listBox2,list,"Name","Age");
HlListView.setValue(this.checkedListBox2, list, "Name","Age");
2.获得 listbox,checklistbox 值
//获得 listbox 值
Object value = HlListView.getSelectValue(this.listBox2);
if ( value != null)...{
Console.WriteLine("name ="+ ((testData) value).Name );
}
//获得 checklistbox 值
Object[] values = HlListView.getCheckedValues(this.checkedListBox2);
if (values != null) ...{
for (int i = 0; i < values.Length; i++) ...{
Console.WriteLine("checkselect="+i+",name =" + ((testData)values[i]).Name);
}
}
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
using System.Collections;
namespace hllib.com.huanglin.ui
...{
/**//// <summary>
/// 列表控件数据操作辅助类
/// </summary>
public class HlListView
...{
/**//// <summary>
/// 给列表增加数据
/// </summary>
public static void setValue(ListBox listbox, ArrayList list, String viewfield, String keyfield)
...{
int count = list.Count;
if (count > 0)
...{
ListData[] datalist = new ListData[count];
for (int i = 0; i < count; i++)
...{
ListData data = new ListData();
data.Viewfield = viewfield;
data.Keyfield = keyfield;
data.Value = list[i];
datalist[i] = data;
}
listbox.DataSource = datalist;
}
}
/**//// <summary>
/// 给列表增加数据
/// </summary>
public static void setValue(CheckedListBox listbox, ArrayList list, String viewfield,String
keyfield)
...{
int count = list.Count;
if (count > 0)
...{
ListData[] datalist = new ListData[count];
for (int i = 0; i < count; i++)
...{
ListData data = new ListData();
data.Viewfield = viewfield;
data.Keyfield = keyfield;
data.Value = list[i];
datalist[i] = data;
}
listbox.Items.AddRange(datalist);
}
}
/**//// <summary>
/// 获得选中的对象值
/// </summary>
public static Object getSelectValue(ListBox listbox)
...{
Object rtn = null;
if (listbox.SelectedItem != null)
...{
rtn = ((ListData)listbox.SelectedItem).Value;
}
return rtn;
}
/**//// <summary>
/// 取得选中的变量值
/// </summary>
public static Object getSelectValue(CheckedListBox listbox)
...{
Object rtn = null;
if (listbox.SelectedItem != null)
...{
rtn = ((ListData)listbox.SelectedItem).Value;
}
return rtn;
}
/**//// <summary>
/// 取得选中的变量值数组
/// </summary>
public static Object[] getSelectValues(ListBox listbox)
...{
Object[] rtn = null;
int count = listbox.SelectedItems.Count;
if (count > 0)
...{
rtn = new Object[count];
for (int i = 0; i < count; i++)
...{
rtn[i] = ((ListData)listbox.SelectedItems[i]).Value;
}
}
return rtn;
}
/**//// <summary>
/// 取得选中的变量值数组
/// </summary>
public static Object[] getSelectValues(CheckedListBox listbox)
...{
Object[] rtn = null;
int count =listbox.SelectedItems.Count ;
if (count> 0)
...{
rtn = new Object[count];
for (int i = 0; i < count; i++)
...{
rtn[i] = ((ListData)listbox.SelectedItems[i]).Value;
}
}
return rtn;
}
/**//// <summary>
/// 取得复选框选中的变量值数组
/// </summary>
public static Object[] getCheckedValues(CheckedListBox listbox)
...{
Object[] rtn = null;
int count = listbox.CheckedItems.Count;
if (count > 0)
...{
rtn = new Object[count];
for (int i = 0; i < count; i++)
...{
rtn[i] = ((ListData)listbox.CheckedItems[i]).Value;
}
}
return rtn;
}
/**//// <summary>
/// 按对象值设置复选框选中值
/// </summary>
public static void setCheckedValues(CheckedListBox listbox, Object[] values) ...{
int count = listbox.Items.Count;
if (values.Length > 0)
...{
for (int k = 0; k < count; k++)
listbox.SetItemChecked(k, false);
for (int i = 0; i < values.Length; i++)
...{
for (int j = 0; j < count; j++) ...{
if (((ListData)listbox.Items[j]).Equals(values[i]))
listbox.SetItemChecked(j, true);
}
}
}
}
/**//// <summary>
/// 按关键字值设置复选框选中值
/// </summary>
public static void setCheckedKeyValues(CheckedListBox listbox, Object[] keyvalues)
...{
int count = listbox.Items.Count;
if (keyvalues.Length > 0)
...{
for (int k = 0; k < count; k++)
listbox.SetItemChecked(k, false);
for (int i = 0; i < keyvalues.Length; i++)
...{
for (int j = 0; j < count; j++)
...{
if (((ListData)listbox.Items[j]).getKeyValue().Equals(keyvalues[i]))
listbox.SetItemChecked(j, true);
}
}
}
}
}
}
using System;
using System.Collections.Generic;
using System.Text;
using hllib.com.huanglin.utils;
namespace hllib.com.huanglin.ui
...{
/**//// <summary>
/// 列表数据模型
/// </summary>
/// <remarks>主要用于列表的数据的加工,便于列表显示数据,并能取得对应的对象</remarks>
class ListData
...{
/**//// <summary>
/// 显示值域名
/// </summary>
private String viewfield;
/**//// <summary>
/// 关键字值域名
/// </summary>
private String keyfield;
/**//// <summary>
/// 关键字值域名
/// </summary>
public String Keyfield
...{
get ...{ return keyfield; }
set ...{ keyfield = value; }
}
/**//// <summary>
/// 显示值域名
/// </summary>
public String Viewfield
...{
get ...{ return viewfield; }
set ...{ viewfield = value; }
}
/**//// <summary>
/// 值对象
/// </summary>
private Object value;
/**//// <summary>
/// 值对象
/// </summary>
public Object Value
...{
get ...{ return this.value; }
set ...{ this.value = value; }
}
/**//// <summary>
/// 取得关键字值
/// </summary>
public Object getKeyValue() ...{
Object rtn = null;
try
...{
if (value != null)
rtn = ClassUtils.getFieldValue(value, keyfield);
}
catch (Exception)
...{
}
return rtn;
}
/**//// <summary>
/// 取得显示值
/// </summary>
public Object getViewValue()
...{
Object rtn = null;
try
...{
if (value != null)
rtn = ClassUtils.getFieldValue(value, viewfield);
}
catch (Exception)
...{
}
return rtn;
}
/**//// <summary>
/// 用于列表显示
/// </summary>
public override string ToString()
...{
String rtn ="";
try
...{
if (value != null)
rtn = ClassUtils.getFieldValue(value, viewfield).ToString();
}
catch (Exception)
...{
}
return rtn;
}
}
}
using System;
using System.Collections.Generic;
using System.Text;
using System.Reflection;
namespace hllib.com.huanglin.utils
...{
/**//// <summary>
/// 类操作工具
/// </summary>
public class ClassUtils
...{
/**//// <summary>
/// 判断当前对象是否是类
/// </summary>
public static Boolean isClass(String classname, Object obj)
...{
Boolean rtn = false;
if (obj == null) return rtn;
if (classname == null) return rtn;
Type type = obj.GetType().GetInterface(classname);
if (obj.GetType().FullName.Equals(classname))
rtn = true;
return rtn;
}
/**//// <summary>
/// 判断当前对象是否是类
/// </summary>
public static Boolean isClass(Type type, Object obj) ...{
Boolean rtn = false;
if (type == null) return rtn;
if (obj == null) return rtn;
if (type.Equals(obj.GetType()))
rtn = true;
return rtn;
}
/**//// <summary>
/// 判断当前对象是否有接口
/// </summary>
public static Boolean isInterface(String interfacename, Object obj)
...{
Boolean rtn = false;
if (obj == null) return rtn;
if (interfacename == null) return rtn;
Type type = obj.GetType().GetInterface(interfacename);
if (type != null)
rtn = true;
return rtn;
}
/**//// <summary>
/// 获得对象指定属性的值
/// </summary>
public static Object getFieldValue(Object obj, String fieldname)
...{
Object rtn = null;
try
...{
rtn = obj.GetType().InvokeMember(fieldname, BindingFlags.GetProperty, null, obj, null);
}
catch (Exception)
...{
}
return rtn;
}
/**//// <summary>
/// 获得对象属性类型名
/// </summary>
public static String getPropertyTypeName(Object obj,String fieldname) ...{
return obj.GetType().GetProperty(fieldname).PropertyType.FullName;
}
/**//// <summary>
/// 获得对象属性类型
/// </summary>
public static Type getPropertyType(Object obj, String fieldname)
...{
return obj.GetType().GetProperty(fieldname).PropertyType;
}
/**//// <summary>
/// 设置对象指定属性的值
/// </summary>
public static void setFieldValue(Object obj,String fieldname,Object value) ...{
try
...{
obj.GetType().InvokeMember(fieldname, BindingFlags.SetProperty, null, obj, new
Object[] ...{ value });
}
catch (Exception)
...{
}
}
/**//// <summary>
/// 调用没有返回值得方法
/// </summary>
public static void callNoReturnProcedure(Object obj ,String procedure,Object[] vars) ...{
try
...{
obj.GetType().InvokeMember(procedure, BindingFlags.InvokeMethod |
BindingFlags.Public | BindingFlags.Instance, null, obj, null);
}
catch (Exception)
...{
}
}
/**//// <summary>
/// 获得 String 类型
/// </summary>
public static Type getTypeString()
...{
return Type.GetType("System.String");
}
/**//// <summary>
/// 获得 Int16类型
/// </summary>
public static Type getTypeInt16()
...{
return Type.GetType("System.Int16");
}
/**//// <summary>
/// 获得 Int32类型
/// </summary>
public static Type getTypeInt32()
...{
return Type.GetType("System.Int32");
}
/**//// <summary>
/// 获得 Int64类型
/// </summary>
public static Type getTypeInt64()
...{
return Type.GetType("System.Int64");
}
/**//// <summary>
/// 获得 Double 类型
/// </summary>
public static Type getTypeDouble()
...{
return Type.GetType("System.Double");
}
/**//// <summary>
/// 获得 DateTime 类型
/// </summary>
public static Type getTypeDateTime() ...{
return Type.GetType("System.DateTime");
}
/**//// <summary>
/// 获得 Boolean 类型
/// </summary>
public static Type getTypeBoolean() ...{
return Type.GetType("System.Boolean");
}
/**//// <summary>
/// 获得 Decimal 类型
/// </summary>
public static Type getTypeDecimal()...{
return Type.GetType("System.Decimal");
}
}
}
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com
文章转载自:csdn