您的位置:首页 > 其它

认为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

/// <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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: