Tag: selectionchanged

防止数据网格中的行更改

我研究了这个并且很难​​过:我有一个WPF DataGrid,并使用MVVM模型。 在某些情况下,我希望阻止更改DataGrid中的行的能力。 我研究了这个,并尝试过像这里找到的技术。 在实践中,这是有效的,但是有一个不受欢迎的’闪烁’(它选择点击的行片刻然后回到之前的选择),而这是一个接近的解决方案我希望有一个更优雅的方式,如防止首先是行改变。 我很惊讶没有SelectionChanging或BeforeSelectionChanged所以我可以取消激活事件; 并强行阻止我的视图模型中的索引更改似乎没有任何区别。 我怎样才能做到这一点? 谢谢。

WPF TabControl在SelectionChanged上,将焦点设置为文本字段

我有一个标签控件和一些标签项。 我正在成功收听SelectionChanged事件,并检查我感兴趣的选项卡是否是当前选中的选项卡。 我正在使用这个代码(下面),并通过调试器,我可以看到我的分支逻辑按设计工作; 但是,我遇到的问题是有些东西覆盖了对txt.Focus()调用,因为在显示正确的选项卡项后,焦点不在文本框上。 private void tabMain_SelectionChanged(object sender, SelectionChangedEventArgs e) { // exact same behavior with and without this line e.Handled = true; if (e.AddedItems.Contains(usrTab)) { txtusr.Focus(); } else if (e.AddedItems.Contains(svcTab)) { txtsvc.Focus(); } } 如果我只是将txtusr.Focus()放在按钮事件处理程序中,它就会完全按照我的预期进行聚焦。 我怀疑这与调用.Focus()方法时没有加载的tabitem内容有关,但我不确定如何修复它。

DataGridView selectionChanged事件多次触发

在我的应用程序中,我使用DataGridView来显示列表。 当用户在datagridview中选择一条记录时,它应该在另一个面板中显示详细信息。 为了选择,我被要求使用DataGridView1_SelectionChanged事件。 DataGridView应该只包含一列,但详细信息显示可能包含所选记录的更多信息(我们可以通过查询所选的主键值来获取数据库中的所有详细信息)。 请告诉我是否可以获取所选DataGridView记录的datakey(主键)。 DataGridView是否会基于主键进行绑定? 编辑 我已经实现了DataGridView1.Columns [“ID”]。Visible = false。 它运作良好。 为了选择我添加了DataGridView1_SelectionChanged事件。 但DataGridView1_SelectionChanged事件多次触发。

如何取消ComboBox SelectionChanged事件?

是否有一种简单的方法来提示用户确认combobox选择更改,如果用户选择否,则不处理更改? 我们有一个combobox,更改选择将导致数据丢失。 用户基本上选择一种类型,然后他们就能输入该类型的属性。 如果他们更改了类型,我们会清除所有属性,因为它们可能不再适用。 问题是,在选择下,您再次引发SelectionChanged事件。 这是一个片段: if (e.RemovedItems.Count > 0) { result = MessageBox.Show(“Do you wish to continue?”, “Warning”, MessageBoxButton.YesNo, MessageBoxImage.Warning); if (result == MessageBoxResult.No) { if (e.RemovedItems.Count > 0) ((ComboBox)sender).SelectedItem = e.RemovedItems[0]; else ((ComboBox)sender).SelectedItem = null; } } 我有两个解决方案,我都不喜欢。 用户选择“否”后 ,删除SelectionChanged事件处理程序,更改所选项目,然后再次注册SelectionChanged事件处理程序。 这意味着您必须保留类中事件处理程序的引用,以便您可以添加和删除它。 创建ProcessSelectionChanged布尔值作为类的一部分。 始终在事件处理程序的开头检查它。 在我们更改选择之前将其设置为false,然后将其重置为true。 这将工作,但我不喜欢使用标志基本上使事件处理程序无效。 任何人都有替代解决方案或改进我提到的?