这是我的 ListView 和文本框的设置,用于显示作为字符串选择的项目。
<ListView Name="myListView" SelectionChanged="myListBox_SelectionChanged_1" SelectionMode="Multiple">
<ListViewItem Content="Item 1"/>
<ListViewItem Content="Item 2"/>
<ListViewItem Content="Item 3"/>
</ListView>
<TextBox Name="tb" Width="140" Height="30" Margin="20"/>
这是成功输出ListViewItem的值的行。
string output = ((ListBoxItem)myListView.SelectedItem).Content.ToString();
/// output: Item 1
但是我不知道如何在foreach循环中实现它
foreach (ListBoxItem item in myListView.SelectedItems)
{
string output = item.ToString();
tb.AppendText(output);
}
foreach 循环当前输出:
System.Windows.Controls.ListViewItem: {the ListViewItem value}
我想去掉前面的“System.Windows...”。
我尝试将此行放在 foreach 循环中,但它只输出选定的第一个 ListViewItem 的值。
string output = ((ListBoxItem)myListView.SelectedItem).Content.ToString();
预期输出应为文本框中的“Item 1 Item 2...”。
当
object.ToString
未被覆盖时,它返回 object.GetType().ToString()
,这使得 object.ToString
返回类型的完全限定名称。
要删除命名空间,您可以引用
Type.Name
属性。
然后,为了提高 UI 的性能,请勿通过连接其值来重复更新
TextBox
。这根本没有效率。StringBuilder
构建文本值并更新 TextBox
一次:
var textBoxValueBuilder = new SringBuilder();
foreach (ListBoxItem item in myListView.SelectedItems)
{
string output = item.GetType().Name;
textBoxValueBuilder.Append(output);
}
tb.Text = textBoxValueBuilder.ToString();