0
更新:我重新启动了机器,速度并不像500毫秒慢,但它仍然需要大约40毫秒才能显示上下文菜单,我将它与原生Winforms菜单(它更快)进行了比较。另外,我已经通过设置时间戳来验证MyGridMenu.Show
是这里的瓶颈,一旦它被注释掉,整个功能几乎没有时间。DevExpress.XtraGrid.Menu显示速度非常缓慢(与原生Winforms菜单弹出窗口相比)
我在写一个基于Devexpress的xGrid应用程序,我需要自定义上下文菜单。我用下面的代码片段和.Show
函数调用很长(500ms)。这种缓慢程度对于本地应用程序来说是不能容忍的,但我对C#,Winforms等等真的很陌生,而且我没有想法。有谁知道可能是什么罪魁祸首?
private void gridControl1_MouseUp(object sender, MouseEventArgs e)
{
Console.WriteLine("Detected your mouse up event!");
var start = DateTime.Now;
GridView view = sender as GridView;
if (e.Button == MouseButtons.Right)
{
DevExpress.XtraGrid.Views.Grid.ViewInfo.GridHitInfo hi = view.CalcHitInfo(new Point(e.X, e.Y));
if (!hi.InColumnPanel)
{
var MyGridMenu = new ExternalManagerContextualMenuView(view)
{
MyDataStore = this.MyDataStore
};
MyGridMenu.Init(hi);
MyGridMenu.Show(hi.HitPoint);
}
var end = DateTime.Now;
Console.WriteLine($"Showing this thing takes {end - start} time");
}
}
你需要解释什么是'ExternalManagerContextualMenuView'和'this.MyDataStore'?我怀疑这里最慢的部分是自定义数据绑定,而不是组件本身。 –
不是这样,我通过为每一行设置时间戳,证实它是'MyGridMenu.Show()',速度很慢。 – benjaminz
您是否尝试过单独循环数据源?否则,它不验证任何内容,在调用Show之前,只给数据源分配一个引用,实际的数据检索在显示时发生。你仍然需要解释什么是'ExternalManagerContextualMenuView'。 –