从列表框中获取所选福彩12选5走势图...

cboshdave

成员
已加入
2014年12月11日
留言内容
24
编程经验
1-3
我正在尝试从列表框中提取选定的值。表面上看起来很简单。有几个示例涉及以下内容:

C#:
   foreach (var selecteditem in listBoxDocStatus.SelectedItems)        {
           Debug.WriteLine("Selected Item is: " + selecteditem.ToString());
        }

当我运行此代码时,我看到以下内容:"所选福彩12选5走势图为:System.Data.DataRowView"

我不确定如何访问实际的索引或值?我看到有一个附加的数组:0是索引,位置1是值。我需要0,但我不知道如何拉。

谢谢,
戴夫
 

金西尼

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
3,563
地点
悉尼,澳大利亚
编程经验
10+
当您将列表绑定到ListBox,ComboBox等时,控件的默认行为是在每个福彩12选5走势图上调用ToString方法以获取要显示的文本。您可以通过将控件的DisplayMember属性设置为要显示的每个福彩12选5走势图的属性名称或列的名称,来覆盖该行为。

看来您已将DataTable绑定到ListBox。当您这样做时,数据实际上来自DataTable的DefaultView,它是一个DataView并包含DataRowView项。您大概已经设置了DisplayMember以便显示来自特定列的数据,但是您发布的代码并未考虑到这一点。它只是在每个福彩12选5走势图上调用ToString,因此您将获得DataRowView.ToString的结果,该结果只是类型的名称,对于大多数复杂类型来说都是如此。

正确的解决方法是这样的:
foreach (var selecteditem in listBoxDocStatus.SelectedItems) {
    Debug.WriteLine("Selected Item is: " + listBoxDocStatus.GetItemText(selecteditem));
}
这将与ListBox本身获取显示文本的方式相同,即,如果设置了DisplayMember,它将使用DisplayMember;否则它将回退到调用ToString。
 

cboshdave

成员
已加入
2014年12月11日
留言内容
24
编程经验
1-3
那是一个完美的答案!工作出色,很有意义。谢谢!我很欣赏有关索引访问的想法。这确实是我所需要的!救了我发回!
 

cboshdave

成员
已加入
2014年12月11日
留言内容
24
编程经验
1-3
只是一个问题和一个澄清。
澄清:如何将答案标记为"Answered"?我没有看到这个选项。
问题:如果我想将一个选项添加到列表框中,则无法将其绑定到我的数据表(查询结果-我当前的方法)。我假设我需要运行查询,通过查询结果加载列表,然后在末尾再添加一个选项。我很确定这是正确的方法,只是想确认一下。然后,我将回到另一种获取结果的方式。
 

金西尼

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
3,563
地点
悉尼,澳大利亚
编程经验
10+
我如何将答案标记为"Answered"?我没有看到这个选项。
启动线程时,会有一个“前缀”下拉列表。如果您要提出问题,则应从该列表中选择“问题”。回答问题后,您可以编辑第一篇文章,单击“转到高级”按钮,然后从该下拉列表中选择“已回答”。
如果我想在列表框中添加一个选项,则无法将其绑定到我的数据表(查询结果-我当前的方法)。我假设我需要运行查询,通过查询结果加载列表,然后在末尾再添加一个选项。我很确定这是正确的方法,只是想确认一下。然后,我将回到另一种获取结果的方式。
您只能绑定到数据源或直接添加福彩12选5走势图,但不能两者都添加。如果控件是绑定的,并且您想要一个额外的福彩12选5走势图,则是,您必须将该福彩12选5走势图添加到数据源中。如果数据源是一个数据表,则意味着手动向该数据表添加新行。
 

埃利斯坦

新成员
已加入
2016年9月5日
留言内容
2
编程经验
5-10
嗨,大家好
我遇到了类似的问题。尝试从列表框的福彩12选5走势图创建一个字符串。
这是我的代码
string[] items = listBox1.Items.OfType<object>().Select(item => item.ToString()).ToArray();
string result = string.Join(",", items);
label1.Text = result;

问题:作为 cboshdave described I get only System.Data.DataRowView一遍又一遍。
解决方案 金西尼 给的很好,但是我如何才能更改它以接收所有福彩12选5走势图,而不仅仅是选定的福彩12选5走势图
提前致谢
 

金西尼

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
3,563
地点
悉尼,澳大利亚
编程经验
10+
Hi Everyone
我遇到了类似的问题。尝试从列表框的福彩12选5走势图创建一个字符串。
这是我的代码
string[] items = listBox1.Items.OfType<object>().Select(item => item.ToString()).ToArray();
string result = string.Join(",", items);
label1.Text = result;

问题:作为 cboshdave described I get only System.Data.DataRowView一遍又一遍。
解决方案 金西尼 给的很好,但是我如何才能更改它以接收所有福彩12选5走势图,而不仅仅是选定的福彩12选5走势图
提前致谢

在您的代码中,这是获取福彩12选5走势图文本的部分:
C#:
items = listBox1.Items.OfType<object>().Select(item => [B][U]item.ToString()[/U][/B]).ToArray();
您只需将其替换为我提供的用于获取福彩12选5走势图文本的代码即可:
C#:
items = listBox1.Items.OfType<object>().Select(item => [B][U]listBox1.GetItemText(item)[/U][/B]).ToArray();
 
最佳 底部