更新:マシンを再起動しましたが、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'を説明する必要があります。 –