认为Devexpress TreeList控件的Bug...
2011-08-12 19:37
417 查看
在运用Devexpress过程中发现一个自己认为是Devexpress控件TreeList的Bug。
涉及到三个事件的执行的理解:BeforeCollapse(展开之前),BeforeFocusNode(获得焦点之前),AfterFocusNode(获得焦点之后)。
正常的理解:BeforeFocusNode执行完在CanFocus是True的情况下就执行AfterFocusNode。
当点击了TreeList节点前面的-号(收缩)【实际触发的是BeforeCollapse这个事件】后,BeforeFocusNode执行完在CanFocus是True的情况下不执行AfterFocusNode。
个人理解,有误请指正!
View Code
涉及到三个事件的执行的理解:BeforeCollapse(展开之前),BeforeFocusNode(获得焦点之前),AfterFocusNode(获得焦点之后)。
正常的理解:BeforeFocusNode执行完在CanFocus是True的情况下就执行AfterFocusNode。
当点击了TreeList节点前面的-号(收缩)【实际触发的是BeforeCollapse这个事件】后,BeforeFocusNode执行完在CanFocus是True的情况下不执行AfterFocusNode。
个人理解,有误请指正!
View Code
/// <summary> /// 获得焦点之前 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void basicTreeView1_BeforeFocusNode(object sender, DevExpress.XtraTreeList.BeforeFocusNodeEventArgs e) { if ( ViewIndex == 1&&!this.InvokeRequired) { if (rightPanel.Controls.Count == 0) return; if (e.Node == basicTreeView1.FocusedNode) return; if ((rightPanel.Controls[0] as IMain).DataChangs()) { DialogResult ret = XtraMessageBox.Show(Resources.Multilingual.String[Constant.MultilingualField.DataChangsTip], Resources.Multilingual.String[Constant.MultilingualField.MissageTitle], MessageBoxButtons.YesNo, MessageBoxIcon.Asterisk); if (ret == DialogResult.Yes) { if (((((rightPanel.Controls[0] as UcTabBase).Controls[0] as DevExpress.XtraTab.XtraTabControl).SelectedTabPage).Controls[0] as UcMainInfomationBase).SaveData()) ;//(rightPanel.Controls[0] as IMain).Save(); else { e.CanFocus = false; } } } } } /// <summary> /// 获得焦点之后 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void basicTreeView1_AfterFocusNode(object sender, DevExpress.XtraTreeList.NodeEventArgs e) { if (DisplayDataList) SetRzGraphParameter(e.Node); if (ViewIndex == 1) { MD_ConfigurationTree treeNode = NodeConversionModel(e.Node); DataRow dr = (basicTreeView1.GetDataRecordByNode(e.Node) as DataRowView).Row; DataSet dsData = dr.Table.DataSet.Clone(); dsData.Tables[0].ImportRow(dr); dsData.AcceptChanges(); SetConfigurationMode(treeNode, dsData); if (DisplayDataList) RefreshGraData();//刷新数据 } } /// <summary> /// 收缩之前 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void basicTreeView1_BeforeCollapse(object sender, DevExpress.XtraTreeList.BeforeCollapseEventArgs e) { if (IsCollapseHigherNode(e.Node,basicTreeView1.FocusedNode)) { basicTreeView1.FocusedNode = e.Node; if(!basicTreeView1.HasFocus) e.CanCollapse = false; } }
相关文章推荐
- DevExpress控件-TreeList+searchControl组合过滤实现(图文)
- Devexpress treelist 树形控件 实现带三种状态的CheckBox
- DevExpress TreeList控件的复选框
- DevExpress.XtraTreeList.TreeList (树控件使用说明)
- 关于 DevExpress.XtraTreeList.TreeList 树形控件 的操作
- DevExpress控件使用系列--ASPxTreeList
- DevExpress.XtraTreeList.TreeList 控件如何找到当前被选中的节点
- Devexpress TreeList控件支持拼音首字母查询
- DevExpress控件TreeList的复选框 .
- 使用DevExpress的TreeList控件的效果和实现代码
- (DevExpress2011控件教程)ASPxTreeList 范例1 :如何绑定数据到ASPxTreeList
- [DevExpress]TreeList控件的复选框
- DevExpress控件之"treeList"
- DevExpress控件之XtraTreeList
- 【DevExpress】老版TreeList和GridControl 中控件 MouseWheel事件禁用解决方法
- DevExpress控件使用(ImageCollection,TreeList)
- Devexpress控件中TreeList的递归绑定数据
- DevExpress控件-TreeList使用总结
- DevExpress控件TreeList的复选框
- 第三方控件DevExpress的TreeList绑定XML文件