c#中listbox选定指定项的事件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c#中listbox选定指定项的事件相关的知识,希望对你有一定的参考价值。

listbox中每行数据是a,b,c,d,我想鼠标双击,产生对话框显示选中的该项的内容,用什么listbox中事件? 怎么获取该行的值? 具体怎么写? 谢谢~~~

private void listBox1_DoubleClick(object sender, EventArgs e)

MessageBox.Show(this.listBox1.SelectedItem.ToString());

控件的双击事件
参考技术A private void listBox1_DoubleClick(object sender, EventArgs e)

MessageBox.Show(this.listBox1.SelectedItem.ToString());

如何更改 UWP 中选定 ListView 项的突出显示颜色(Windows 10)

【中文标题】如何更改 UWP 中选定 ListView 项的突出显示颜色(Windows 10)【英文标题】:How to change Highlight color of the selected ListView item in UWP (Windows 10) 【发布时间】:2015-11-24 22:49:12 【问题描述】:

我正在使用 C# 和 XAML 开发 Windows 10 应用程序。 我有一个 ListView,我想更改所选项目的默认 HighLight 颜色。我看到了很多代码示例(如this),但都是为 WP8 或 Win8 设计的,我试图实现这些,但它们对我不起作用。

一般来说,我在修改控件的默认主题时遇到了麻烦,因为我找不到有用的文档。 如果有人可以帮助我处理高亮颜色并推荐我好的文档,那就太好了。

【问题讨论】:

【参考方案1】:

实际上发现样式属性的更好方法是使用 Blend。

首先,在 Blend 中打开您的页面。然后右击你的ListView

编辑其他模板 > 编辑生成的项目容器 (ItemContainerStyle) > 编辑副本

给它起个名字然后点击OK

现在,您已经为您的ListViewItems 生成了完整的内置样式,在这里您可以找到有关其外观、动画和其他视觉行为的所有信息。

你应该看看这段代码-

<ListViewItemPresenter CheckBrush="ThemeResource SystemControlForegroundBaseMediumHighBrush" 
                       ContentMargin="TemplateBinding Padding" 
                       CheckMode="Inline" 
                       ContentTransitions="TemplateBinding ContentTransitions" 
                       CheckBoxBrush="ThemeResource SystemControlForegroundBaseMediumHighBrush" 
                       DragForeground="ThemeResource ListViewItemDragForegroundThemeBrush" 
                       DragOpacity="ThemeResource ListViewItemDragThemeOpacity" 
                       DragBackground="ThemeResource ListViewItemDragBackgroundThemeBrush" 
                       DisabledOpacity="ThemeResource ListViewItemDisabledThemeOpacity" 
                       FocusBorderBrush="ThemeResource SystemControlForegroundAltHighBrush" 
                       FocusSecondaryBorderBrush="ThemeResource SystemControlForegroundBaseHighBrush" 
                       HorizontalContentAlignment="TemplateBinding HorizontalContentAlignment" 
                       PointerOverForeground="ThemeResource SystemControlHighlightAltBaseHighBrush"
                       PressedBackground="ThemeResource SystemControlHighlightListMediumBrush"
                       PlaceholderBackground="ThemeResource ListViewItemPlaceholderBackgroundThemeBrush"
                       PointerOverBackground="ThemeResource SystemControlHighlightListLowBrush"
                       ReorderHintOffset="ThemeResource ListViewItemReorderHintThemeOffset" 
                       SelectedPressedBackground="ThemeResource SystemControlHighlightListAccentHighBrush"
                       SelectionCheckMarkVisualEnabled="True" 
                       SelectedForeground="ThemeResource SystemControlHighlightAltBaseHighBrush"
                       SelectedPointerOverBackground="ThemeResource SystemControlHighlightListAccentMediumBrush" 
                       SelectedBackground="ThemeResource SystemControlHighlightListAccentLowBrush"
                       VerticalContentAlignment="TemplateBinding VerticalContentAlignment" />

看到SelectedBackground="ThemeResource SystemControlHighlightListAccentLowBrush"这一行了吗?在那里你可以应用你自己的颜色。请记住,它的类型应该是 Brush 而不是 Color

【讨论】:

谢谢!这正是我所需要的。【参考方案2】:

这可以通过覆盖资源在 XAML 中实现。

<ListView ...>
    <ListView.Resources>
        <SolidColorBrush x:Key="ListViewItemBackgroundSelected" Color="#FF0000" />
        <SolidColorBrush x:Key="ListViewItemBackgroundSelectedPointerOver" Color="#FF0000" />
    </ListView.Resources>
</ListView>

【讨论】:

如何获取可用键的列表。基本上我想在悬停/选择时更改 ListViewItem 的角半径【参考方案3】:

如果您不想使用 XAML,这里有一个更简单的方法(在我看来)使用 c# 更改这些设置:

Application.Current.Resources["SystemControlHighlightListAccentLowBrush"] = new SolidColorBrush(Colors.Red);
Application.Current.Resources["SystemControlHighlightListAccentMediumBrush"] = new SolidColorBrush(Colors.Red);

通过这种方式,您可以真正合乎逻辑地自定义您的项目。

【讨论】:

你在哪里设置这些?【参考方案4】:

延伸 bastecklein 的回答。您希望使用 App 而不是 Application 以使此方法在 UWP 项目中工作。您可以在加载初始框架时在 App.xaml.cs 中使用此代码,也可以只在要影响的页面后面的代码上设置资源颜色。

App.Current.Resources["SystemControlHighlightListAccentLowBrush"] = new SolidColorBrush(Colors.Red);
App.Current.Resources["SystemControlHighlightListAccentMediumBrush"] = new SolidColorBrush(Colors.Red);

【讨论】:

如果我把它放在 App.xaml.cs 中,更改将反映在整个应用程序上? 不幸的是,是的。但是,一旦 UIElement 获得焦点,您就可以通过编程方式更改颜色。因此,如果您单击汉堡菜单按钮,请使用自定义颜色触发该代码。然后,如果您单击另一个想要具有不同颜色的元素,则再次触发代码。 在我的情况下,出于某种原因,只有这个“App.Current”版本有效。 “Application.Current”没有效果。谢谢大佬!

以上是关于c#中listbox选定指定项的事件的主要内容,如果未能解决你的问题,请参考以下文章

C# winform中关于两个ListBox清除selectIndex的问题。

从 DoubleClick、Web 应用程序而非 Windows 窗体上的 ListBox 获取选定值

WPF ListBox 值来自另一个选定的 ListBox 项,然后上下移动

C#中的listBox

C# winform中ListBox各项之间没有分割线?(VS2013)

vb.net如何在listbox中增加双击事件?