問題タブ [virtualmode]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
1924 参照

c# - 仮想モードのときに ListView を列挙する方法は?

仮想モードのときに ListView を列挙する方法は?

メソッドを使用OfType<>()してリスト ビュー アイテムを列挙しています。ただし、仮想モードの場合、リストビューを列挙できないなどの例外がスローされます。

これが私のコードです

では、仮想モードのときに ListView からアイテムを取得するにはどうすればよいですか?

.OfType<> の使用方法を投稿してください

前もって感謝します

0 投票する
3 に答える
22427 参照

c# - どの DataGridView 行が現在画面上にあるかを調べる方法は?

私の C# (2010) アプリケーションには、数千行を保持する仮想モードの DataGridView があります。現在画面に表示されているセルを特定することはできますか?

0 投票する
2 に答える
107 参照

c# - 誰かが CollectionBase から項目を読み取っていることを知る方法

CollectionBase クラスを使用してこれが可能かどうかはわかりません。誰かが CollectionBase クラスの項目にいつアクセスしているか知りたいです。

最終的な目標は、"VirtualMode" (DataGridView コントロールに似ています) を作成することです。これにより、ユーザーがデータを取得する前に、データをチェックして検証することができます。

つまり、たとえば 20 個のオブジェクトのコレクションを作成でき、内部で IList を変更して 20 個の null オブジェクトを含めることができます。次に、アイテムを読み取ろうとすると、null の場合は、外部データ ソースに移動して読み取ります。その時に入れます。次に、既存の null オブジェクトを読み取りクラスに置き換えます。次にアクセスしようとすると、キャッシュされたバージョンが取得されます。

それを入力した後。OnValidate がそれを行うのに適切な場所であるかどうか疑問に思います。

どんな援助でも大歓迎です。

トレバー・ワトソン

0 投票する
1 に答える
2556 参照

c# - DataGridView、仮想モード、および「ラグ」

私のコードは次のようになります。

  • ArrayOfRecordsstring[]毎秒10 ~ 100 個の新しいオブジェクトで更新されます。
  • VirtualMode真に設定されています。
  • SelectionModeに設定されていFullRowSelectます。
  • dataGridView読み取り専用です。

現在、5000行以上のスクロールがフリーズすると言うことを示すProgressBarwithスタイルもありますが、それはスレッド/バックグラウンドワーカーなどの問題だと思います.MarqueeForm

私が最も恐れているのは、選択です。8000 行あり、最後の行 (8000)をクリックすると、フォームを選択するのに 4.2 秒かかります。そして、その次のとおりです。

4000 行では 2.1 秒、などです。8000 番目の行を最小化してから最大化を選択すると、4.2 秒かかります。行 1 を選択すると、再び幸せになります。受け入れられない。*私の 8000 番目の行を「マーク」するのが難しいのはなぜFormですか?

VirtualMode のページネーションは完璧に機能しますが、選択が面倒です。

別の問題/動作もあります:

CellValueNeededマウスを行の上に移動するとイベントが発生するのはなぜですか? 彼らはすでに塗装されていますか?では、なぜリソースを浪費しているのでしょうか。

この選択問題の解決策はありますか? または、データグリッドの最大レコード数を制限する必要があります

0 投票する
0 に答える
364 参照

listview - 仮想ListViewのAutoResizeColumnsをいつ呼び出す必要がありますか?

仮想を詳細モードで設定してListViewいます。現在表示されているアイテムのテキストが切り捨てられないように、列のサイズを自動的に変更したいと思います。

呼び出しAutoResizeColumnsはうまく機能します(仮想モードでこの関数で何が起こるかについてのドキュメントがかなり不明確であるため、少なくともそれはそうであるように見えます)。同様に、列ヘッダーをダブルクリックすると正しく機能します。

ただし、私が知らないのは、いつAutoResizeColumnsメソッドを呼び出すかです。呼び出しはListViewのもトリガーするRetrieveVirtualItemため、イベントハンドラーの最後では機能しません。AutoResizeColumnsRefresh

いくつかの指針を教えていただけますか?

0 投票する
5 に答える
22116 参照

c# - ListView OwnerDraw のデフォルト実装

アイテムの描画を微調整したいListViewがあります (たとえば、リスト ビューのアイテムで特定の文字列を強調表示する) が、アイテムの表示方法を根本的に変更したくありません。

OwnerDrawを true に設定し、ハイライト効果を描画する方法について頭を悩ませることができますが、デフォルトの実装を延期して残りのリスト ビュー アイテムを描画しようとすると、問題が発生し、全体が残ってしまいます。実際に私が完全に間違っていることを示すグラフィカルな問題の負荷。

DrawItemとイベントの「デフォルト」ハンドラーが何をするかを確認できる場所はありDrawSubItemますか?

参考までに、私が現在行っていることを示すスニペットを次に示します。

0 投票する
1 に答える
86 参照

winforms - 仮想モードでListViewの基になるリストをソートするときに、選択をソートする方法は?

aListView仮想モードの場合、イベントを通じて要求されたときに index に対応するListViewaを供給する責任があります。ListItemnOnRetrieveItem

私は自分のルールに従ってリストをソートし、リストビューに再描画するように指示します:

それはいいですし、ダンディです。

ユーザーがいくつかの項目を選択した場合を除きます。ツリーが再描画されると、さまざまな項目が選択されるようになりました。

ソートするテクニックは何SelectedIndicesですか?

しかし、私が自分の個人的なリストを並べ替えると

0 投票する
2 に答える
2618 参照

c# - VirtualModeのWinforms DataGridViewはいつAutoResizeColumnを呼び出すべきですか?

フォームに を実装DataGridViewし、 を正常に実装しましたVirtualMode。これにより、ローカルキャッシュからセルデータが取得され、グリッド/ページングなどにデータを入力するときにすべてが正しく機能しているように見えますDataGridView.CellValueNeeded。イベントを処理してセルにデータを入力します。

DataGridView で、AutoSizeColumnsModeプロパティを に設定していDataGridViewAutoSizeColumnsMode.DisplayedCellsます。VirtualMode を使用すると、セルにデータを入力した後、DataGridView が AutoSizeColumnsMode を尊重していないように見えることに気付きました。この記事を調べましたが、解決策が見つかりませんでした。

私が最終的にやりたいのは、AutoSizeColumnsModeプロパティに依存するのではなく、.AutoResizeColumn()メソッドをどこかで呼び出してサイズを変更することです。そのため、最初は列のサイズを自動調整しますが、ユーザーがサイズを変更できるようにします。

私は次のことを試しましたが、限定的またはまったく成功しませんでした:

  1. に設定DataGridView.AutoSizeColumnsMode.Noneます。次に、私の .CellValueNeededハンドラーで

    StackOverFlowExceptionこれは、おそらく を繰り返し発生させるため、 をスローし.CellValueNeededます。

  2. .CellFormatting イベントハンドラーを除いて、まったく同じことを試しました。同じを得た StackOverFlowException

  3. ありとなしで試しましたDataGridView.SuspendLayout/ResumeLayout

    これにより、すべてのセルが空白になるため、使用できません。

  4. これは実際にはある程度機能しますが、理由はわかりません:

    列のサイズを正しく変更しますが、必要なすべてのセル値に対して繰り返し呼び出す必要があるのは奇妙に思えます。また、すぐに .None に設定することはできませんStackOverFlowException。したがって、ユーザーが列のサイズを変更できるようにすることはできません。

  5. .UpdateCellValue()私のハンドラーからの記事で述べたように呼び出すと、同様に.CellValueNeededスローStackOverFlowExceptionされます。

では、オーバーフローするまで発生し.AutoResizeColumn()ない場所を呼び出すことは可能ですか? .CellValueNeeded#4には自動サイズ機能を実行する機能があるように見えるので、どこかから手動で呼び出すこともできるようです。

0 投票する
2 に答える
1160 参照

asp.net - ASP.net の仮想リストビュー?

ASP.net の仮想リストビューはありますか?


asp.netで見つけたほとんどのテーブル(およびグリッド、リストビュー、データテーブル、データグリッド、グリッドビュー、リストグリッド)は、ユーザーがデータをページングすることを期待しています。

たとえば、10,000 項目を含むリストビューが必要です。私は10ページを望んでいません。

長いリストの問題は、1994 年に「仮想」モードのリストビューを使用して解決されました。コントロールには、表示するアイテムの数だけを指定する必要があります。必要に応じて、これらの項目に関する制御情報 (つまり、ユーザーが項目をスクロールして表示したり、列で並べ替えを試みたりしたとき)。

仮想リストビューを作成した人はいますか (おそらく非同期 Javascript と XML、または同期 Javascript と XML を使用)。


答えが「いいえ」の場合: 恐れずに質問に答えてください。次のような答えで問題ありません。

いいえ。