ListBox 问题 windows Forms 我现在将ListBox设置为可多选的,那怎样获取所有多选中的每一项的SelectedValue呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 for(int i = 0;i < this.listBox1.SelectedItems.Count;i++){ System.Diagnostics.Debug.WriteLine(this.listBox1.SelectedItems[i].ToString());} YourType item = (YourType)this.listBox1.SelectedItems[i];item.SecondValue 这就是你要的selectvalue 你的listbox.datasource 是什么类型的 我用的是TreeView实现的这个功能。string fields = ""; foreach(TreeNode n in this.treeView1.Nodes) { if(n.Checked) { if(fields.Length>0) fields += ","+n.Text; else fields += n.Text; } } return fields; ListBox.SelectedIndexCollection indices = listBox1.SelectedIndices;int selected = indices.Count; //这是总共的选中数量if(indices.Count >0){ for(int n = selected -1;n >= 0;n--) { int index = indices[n];//这是遍历的下标 textBox1.Text += listBox1.SelectedItems[n].ToString(); //listBox1.Items.RemoveAt(index); //自行处理 }} ArrayList al = new ArrayList();for(int i=0;i<listBox1.SelectedItems.Count;i++){ al.Add(listBox1.SelectedIndices[i]);}ArrayList selValues = new ArrayList();listBox1.SelectionMode = SelectionMode.One;for(int i=0;i<listBox1.SelectedItems.Count;i++){ listBox1.SetSelected(Convert.ToInt32(al[i]),true); selValues.Add(listBox1.SelectedValue.ToString()); listBox1.SetSelected(Convert.ToInt32(al[i]),false);} 我这个应该可以把,我测试用得数据源是ArrayList,方法是一样得 你用一个listBox2显示出所有选中得ValuelistBox2.DataSource = selValues;结果就出来了^_^ this.listBox1.DataSource ;this.listBox1.DisplayMember ;this.listBox1.ValueMember;这三个属性你是怎么赋值的,DataSource是dataview,那你的ValueMember是什么呢,我做过的,我的方法可以的。我的MSN:[email protected] 好,谢谢大家,我总结出来的,测试成功!!using System;using System.Drawing;using System.Collections;using System.ComponentModel;using System.Windows.Forms;using System.Data;namespace ListBoxPra{ /// <summary> /// Form1 的摘要说明。 /// </summary> public class Form1 : System.Windows.Forms.Form { private System.Windows.Forms.ListBox listBox1; private System.Windows.Forms.Button button1; private System.Windows.Forms.Label Infor; /// <summary> /// 必需的设计器变量。 /// </summary> private System.ComponentModel.Container components = null; private DataTable dataTable; private DataView dataView; public Form1() { // // Windows 窗体设计器支持所必需的 // InitializeComponent(); // // TODO: 在 InitializeComponent 调用后添加任何构造函数代码 // } /// <summary> /// 清理所有正在使用的资源。 /// </summary> protected override void Dispose( bool disposing ) { if( disposing ) { if (components != null) { components.Dispose(); } } base.Dispose( disposing ); } #region Windows 窗体设计器生成的代码 /// <summary> /// 设计器支持所需的方法 - 不要使用代码编辑器修改 /// 此方法的内容。 /// </summary> private void InitializeComponent() { this.listBox1 = new System.Windows.Forms.ListBox(); this.button1 = new System.Windows.Forms.Button(); this.Infor = new System.Windows.Forms.Label(); this.SuspendLayout(); // // listBox1 // this.listBox1.Items.AddRange(new object[] { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10"}); this.listBox1.Location = new System.Drawing.Point(184, 48); this.listBox1.Name = "listBox1"; this.listBox1.SelectionMode = System.Windows.Forms.SelectionMode.MultiExtended; this.listBox1.Size = new System.Drawing.Size(160, 199); this.listBox1.TabIndex = 0; // // button1 // this.button1.Location = new System.Drawing.Point(224, 376); this.button1.Name = "button1"; this.button1.TabIndex = 1; this.button1.Text = "OK"; this.button1.Click += new System.EventHandler(this.button1_Click); // // Infor // this.Infor.Location = new System.Drawing.Point(24, 272); this.Infor.Name = "Infor"; this.Infor.Size = new System.Drawing.Size(472, 64); this.Infor.TabIndex = 2; // // Form1 // this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); this.ClientSize = new System.Drawing.Size(504, 446); this.Controls.Add(this.Infor); this.Controls.Add(this.button1); this.Controls.Add(this.listBox1); this.Name = "Form1"; this.Text = "Form1"; this.Load += new System.EventHandler(this.Form1_Load); this.ResumeLayout(false); } #endregion /// <summary> /// 应用程序的主入口点。 /// </summary> [STAThread] static void Main() { Application.Run(new Form1()); } private void button1_Click(object sender, System.EventArgs e) { ArrayList selectArrayList = new ArrayList(); foreach(int index in this.listBox1.SelectedIndices) { selectArrayList.Add(index); } this.listBox1.SelectionMode = SelectionMode.One; this.listBox1.ClearSelected(); int[] values = new int[10]; for(int i=0;i<selectArrayList.Count;i++) { this.listBox1.SetSelected((int)selectArrayList[i],true); values[i] = (int)this.listBox1.SelectedValue; this.listBox1.SetSelected((int)selectArrayList[i],false); } this.Infor.Text = "Begin: "; for(int i=0;i<values.Length;i++) { this.Infor.Text = this.Infor.Text + values[i].ToString() + ","; } this.listBox1.SelectionMode = SelectionMode.MultiExtended; this.listBox1.ClearSelected(); } private void Form1_Load(object sender, System.EventArgs e) { Init(); } private void Init() { this.InitDataTable(); this.InitData(); this.InitDataView(); this.BindData(); } private void InitDataTable() { dataTable = new DataTable(); DataColumn c1 = new DataColumn(); c1.DataType = System.Type.GetType("System.Int32"); c1.ColumnName = "id"; this.dataTable.Columns.Add(c1); DataColumn c2 = new DataColumn(); c2.DataType = System.Type.GetType("System.String"); c2.ColumnName = "name"; this.dataTable.Columns.Add(c2); } private void InitData() { for(int i=0;i<10;i++) { DataRow dataRow = this.dataTable.NewRow(); dataRow[0] = i; dataRow[1] = "行" + i.ToString(); this.dataTable.Rows.Add(dataRow); } } private void InitDataView() { this.dataView = new DataView(this.dataTable,"","",DataViewRowState.CurrentRows); } private void BindData() { this.listBox1.DisplayMember = "name"; this.listBox1.ValueMember = "id"; this.listBox1.DataSource = this.dataView; } }} 下面是核心代码:ArrayList selectArrayList = new ArrayList(); foreach(int index in this.listBox1.SelectedIndices) { selectArrayList.Add(index); } this.listBox1.SelectionMode = SelectionMode.One; this.listBox1.ClearSelected(); int[] values = new int[10]; for(int i=0;i<selectArrayList.Count;i++) { this.listBox1.SetSelected((int)selectArrayList[i],true); values[i] = (int)this.listBox1.SelectedValue; this.listBox1.SetSelected((int)selectArrayList[i],false); } this.Infor.Text = "Begin: "; for(int i=0;i<values.Length;i++) { this.Infor.Text = this.Infor.Text + values[i].ToString() + ","; } this.listBox1.SelectionMode = SelectionMode.MultiExtended; this.listBox1.ClearSelected(); 取出ListBox中的DataSource转成DataTable,应该就可以实现了 同意用kuya(无知) 的方法for (int m = 0; m < lst.SelectedItems.Count; m ++){ DataRowView drv = (DataRowView)lst.SelectedItems[m]; Name = drv["name"].ToString();//Text id = drv["id"].ToString();//你要的Value} 关于winform中button的连击问题? 菜单快捷键问题 C# 图象保存问题 高手帮忙!!! 如何实现播放器时间滚动条? 谁可以推荐一个c#的QQ群. 求教:在两个窗体间传递信息的问题! P2P UDP实现的打洞程序就可以实现国内外通信么???? 请教如何用c#实现一个功能,能让右键点击资源管理器某个文件时,出现菜单选项卡,类似于装了winrar后,右键某个文件时,出现"添加到压缩文件..." 初学VC#,有些地方不太明白。 c#中怎么在子窗口按下一个按钮然后可以删除主窗口的文本内容 打印时如何自适应打印机的纵向和横向设置 请问
{
System.Diagnostics.Debug.WriteLine(this.listBox1.SelectedItems[i].ToString());
}
item.SecondValue 这就是你要的selectvalue
string fields = "";
foreach(TreeNode n in this.treeView1.Nodes)
{
if(n.Checked)
{
if(fields.Length>0)
fields += ","+n.Text;
else
fields += n.Text;
}
}
return fields;
int selected = indices.Count; //这是总共的选中数量
if(indices.Count >0)
{
for(int n = selected -1;n >= 0;n--)
{
int index = indices[n];//这是遍历的下标
textBox1.Text += listBox1.SelectedItems[n].ToString();
//listBox1.Items.RemoveAt(index);
//自行处理
}
}
for(int i=0;i<listBox1.SelectedItems.Count;i++)
{
al.Add(listBox1.SelectedIndices[i]);
}
ArrayList selValues = new ArrayList();listBox1.SelectionMode = SelectionMode.One;
for(int i=0;i<listBox1.SelectedItems.Count;i++)
{
listBox1.SetSelected(Convert.ToInt32(al[i]),true);
selValues.Add(listBox1.SelectedValue.ToString());
listBox1.SetSelected(Convert.ToInt32(al[i]),false);
}
listBox2.DataSource = selValues;结果就出来了^_^
this.listBox1.DisplayMember ;
this.listBox1.ValueMember;
这三个属性你是怎么赋值的,DataSource是dataview,那你的ValueMember是什么呢,
我做过的,我的方法可以的。
我的MSN:[email protected]
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
namespace ListBoxPra
{
/// <summary>
/// Form1 的摘要说明。
/// </summary>
public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.ListBox listBox1;
private System.Windows.Forms.Button button1;
private System.Windows.Forms.Label Infor;
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.Container components = null; private DataTable dataTable;
private DataView dataView; public Form1()
{
//
// Windows 窗体设计器支持所必需的
//
InitializeComponent(); //
// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
//
} /// <summary>
/// 清理所有正在使用的资源。
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
} #region Windows 窗体设计器生成的代码
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.listBox1 = new System.Windows.Forms.ListBox();
this.button1 = new System.Windows.Forms.Button();
this.Infor = new System.Windows.Forms.Label();
this.SuspendLayout();
//
// listBox1
//
this.listBox1.Items.AddRange(new object[] {
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
"10"});
this.listBox1.Location = new System.Drawing.Point(184, 48);
this.listBox1.Name = "listBox1";
this.listBox1.SelectionMode = System.Windows.Forms.SelectionMode.MultiExtended;
this.listBox1.Size = new System.Drawing.Size(160, 199);
this.listBox1.TabIndex = 0;
//
// button1
//
this.button1.Location = new System.Drawing.Point(224, 376);
this.button1.Name = "button1";
this.button1.TabIndex = 1;
this.button1.Text = "OK";
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// Infor
//
this.Infor.Location = new System.Drawing.Point(24, 272);
this.Infor.Name = "Infor";
this.Infor.Size = new System.Drawing.Size(472, 64);
this.Infor.TabIndex = 2;
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(504, 446);
this.Controls.Add(this.Infor);
this.Controls.Add(this.button1);
this.Controls.Add(this.listBox1);
this.Name = "Form1";
this.Text = "Form1";
this.Load += new System.EventHandler(this.Form1_Load);
this.ResumeLayout(false); }
#endregion /// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new Form1());
} private void button1_Click(object sender, System.EventArgs e)
{
ArrayList selectArrayList = new ArrayList();
foreach(int index in this.listBox1.SelectedIndices)
{
selectArrayList.Add(index);
} this.listBox1.SelectionMode = SelectionMode.One;
this.listBox1.ClearSelected(); int[] values = new int[10]; for(int i=0;i<selectArrayList.Count;i++)
{
this.listBox1.SetSelected((int)selectArrayList[i],true);
values[i] = (int)this.listBox1.SelectedValue;
this.listBox1.SetSelected((int)selectArrayList[i],false);
} this.Infor.Text = "Begin: ";
for(int i=0;i<values.Length;i++)
{
this.Infor.Text = this.Infor.Text + values[i].ToString() + ",";
} this.listBox1.SelectionMode = SelectionMode.MultiExtended;
this.listBox1.ClearSelected();
} private void Form1_Load(object sender, System.EventArgs e)
{
Init();
} private void Init()
{
this.InitDataTable();
this.InitData();
this.InitDataView();
this.BindData(); } private void InitDataTable()
{
dataTable = new DataTable();
DataColumn c1 = new DataColumn();
c1.DataType = System.Type.GetType("System.Int32");
c1.ColumnName = "id";
this.dataTable.Columns.Add(c1);
DataColumn c2 = new DataColumn();
c2.DataType = System.Type.GetType("System.String");
c2.ColumnName = "name";
this.dataTable.Columns.Add(c2);
} private void InitData()
{
for(int i=0;i<10;i++)
{
DataRow dataRow = this.dataTable.NewRow();
dataRow[0] = i;
dataRow[1] = "行" + i.ToString();
this.dataTable.Rows.Add(dataRow);
}
} private void InitDataView()
{
this.dataView = new DataView(this.dataTable,"","",DataViewRowState.CurrentRows);
} private void BindData()
{
this.listBox1.DisplayMember = "name";
this.listBox1.ValueMember = "id";
this.listBox1.DataSource = this.dataView;
}
}}
ArrayList selectArrayList = new ArrayList();
foreach(int index in this.listBox1.SelectedIndices)
{
selectArrayList.Add(index);
} this.listBox1.SelectionMode = SelectionMode.One;
this.listBox1.ClearSelected(); int[] values = new int[10]; for(int i=0;i<selectArrayList.Count;i++)
{
this.listBox1.SetSelected((int)selectArrayList[i],true);
values[i] = (int)this.listBox1.SelectedValue;
this.listBox1.SetSelected((int)selectArrayList[i],false);
} this.Infor.Text = "Begin: ";
for(int i=0;i<values.Length;i++)
{
this.Infor.Text = this.Infor.Text + values[i].ToString() + ",";
} this.listBox1.SelectionMode = SelectionMode.MultiExtended;
this.listBox1.ClearSelected();
for (int m = 0; m < lst.SelectedItems.Count; m ++)
{
DataRowView drv = (DataRowView)lst.SelectedItems[m];
Name = drv["name"].ToString();//Text
id = drv["id"].ToString();//你要的Value
}