如何在c# wpf中仅当用户更改组合框的选择时触发selectionChange事件
本文关键字:选择 组合 事件 selectionChange wpf 用户 | 更新日期: 2023-09-27 18:03:24
我想知道如何触发一个组合框的selectionChange事件只有当用户自己改变列表的选择。(避免其他情况)我找到了一个解决方案,但我有一些错误。你能帮我吗?
https://msdn.microsoft.com/en-us/library/system.windows.forms.combobox.selectionchangecommitted (v = vs.110) . aspx
我在我的。cs文件中添加了System.Windows.Forms,它说System.Windows.Controls之间有歧义。"组合框"answers"系统。windows。窗体"。与下面的第一行代码组合。
我不知道如何将sender转换为comboBox。
ComboBox senderComboBox = (ComboBox)sender;
if (senderComboBox.SelectionLength > 0)
{
//code here
}
谢谢你的帮助!
您正在尝试引用WinForms ComboBox
而不是WPF ComboBox
。你可以通过监听控件的SelectionChanged
事件来了解用户何时改变了选择。
来自dotnetperls
的示例代码XAML
<ComboBox
HorizontalAlignment="Left"
Margin="10,10,0,0"
VerticalAlignment="Top"
Width="120"
Loaded="ComboBox_Loaded"
SelectionChanged="ComboBox_SelectionChanged"/>
CS文件
private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
// ... Get the ComboBox.
var comboBox = sender as ComboBox;
// ... Set SelectedItem as Window Title.
string value = comboBox.SelectedItem as string;
this.Title = "Selected: " + value;
}
这种方法对我很有效- XAML ComboBox SelectionChanged Fires OnLoad
基本上只在表单加载后连接ComboBox_SelectionChanged事件—这将使您绕过将触发onload的编程更改。除此之外,我就不确定了。这可能是你需要使用一个不同的事件,但我还没有研究过这个