2017-10-10 6 views
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"); 
     } 
    } 
+1

あなたは 'ExternalManagerContextualMenuView'と' this.MyDataStore'について説明する必要がありますか?私はここで最も遅い部分がカスタムデータバインディングであり、コンポーネント自体ではないと考えています。 –

+0

それはそうではありませんが、私はそれが 'MyGridMenu.Show()'であり、各行のタイムスタンプを設定することで遅いことを確認しました。 – benjaminz

+0

データソースを別々にループしてみましたか?それ以外の場合は、何も確認しません。 'Show'の呼び出しの前にデータソースへの参照のみを割り当てます。実際のデータ取得は表示されます。そして、あなたはまだ 'ExternalManagerContextualMenuView'を説明する必要があります。 –

答えて

0

GridViewはカスタムメニュー項目を追加できるイベントPopupMenuShowingを提供します。この場合、MouseUpイベントを処理する必要はありません。レイテンシの問題については

、次のコードによって引き起こされる可能性がある:あなたはこれらの行はストップウォッチを使って取るどのくらいの時間を測定することができ

var MyGridMenu = new ExternalManagerContextualMenuView(view) 
{ 
     MyDataStore = this.MyDataStore 
}; 
MyGridMenu.Init(hi); 
MyGridMenu.Show(hi.HitPoint); 

Stopwatch sw = new Stopwatch(); 
sw.Start(); 
//your code 
sw.Stop(); 
Debug.WriteLine(sw.ElapsedMilliseconds.ToString()); 
関連する問題