問題タブ [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.
c# - 仮想モードのときに ListView を列挙する方法は?
仮想モードのときに ListView を列挙する方法は?
メソッドを使用OfType<>()
してリスト ビュー アイテムを列挙しています。ただし、仮想モードの場合、リストビューを列挙できないなどの例外がスローされます。
これが私のコードです
では、仮想モードのときに ListView からアイテムを取得するにはどうすればよいですか?
.OfType<> の使用方法を投稿してください
前もって感謝します
c# - どの DataGridView 行が現在画面上にあるかを調べる方法は?
私の C# (2010) アプリケーションには、数千行を保持する仮想モードの DataGridView があります。現在画面に表示されているセルを特定することはできますか?
c# - 誰かが CollectionBase から項目を読み取っていることを知る方法
CollectionBase クラスを使用してこれが可能かどうかはわかりません。誰かが CollectionBase クラスの項目にいつアクセスしているか知りたいです。
最終的な目標は、"VirtualMode" (DataGridView コントロールに似ています) を作成することです。これにより、ユーザーがデータを取得する前に、データをチェックして検証することができます。
つまり、たとえば 20 個のオブジェクトのコレクションを作成でき、内部で IList を変更して 20 個の null オブジェクトを含めることができます。次に、アイテムを読み取ろうとすると、null の場合は、外部データ ソースに移動して読み取ります。その時に入れます。次に、既存の null オブジェクトを読み取りクラスに置き換えます。次にアクセスしようとすると、キャッシュされたバージョンが取得されます。
それを入力した後。OnValidate がそれを行うのに適切な場所であるかどうか疑問に思います。
どんな援助でも大歓迎です。
トレバー・ワトソン
c# - DataGridView、仮想モード、および「ラグ」
私のコードは次のようになります。
ArrayOfRecords
string[]
毎秒10 ~ 100 個の新しいオブジェクトで更新されます。VirtualMode
真に設定されています。SelectionMode
に設定されていFullRowSelect
ます。dataGridView
読み取り専用です。
現在、5000行以上のスクロールがフリーズすると言うことを示すProgressBar
withスタイルもありますが、それはスレッド/バックグラウンドワーカーなどの問題だと思います.Marquee
Form
私が最も恐れているのは、選択です。8000 行あり、最後の行 (8000)をクリックすると、フォームを選択するのに 4.2 秒かかります。そして、その次のとおりです。
4000 行では 2.1 秒、などです。8000 番目の行を最小化してから最大化を選択すると、4.2 秒かかります。行 1 を選択すると、再び幸せになります。受け入れられない。*私の 8000 番目の行を「マーク」するのが難しいのはなぜForm
ですか?
VirtualMode のページネーションは完璧に機能しますが、選択が面倒です。
別の問題/動作もあります:
CellValueNeeded
マウスを行の上に移動するとイベントが発生するのはなぜですか? 彼らはすでに塗装されていますか?では、なぜリソースを浪費しているのでしょうか。
この選択問題の解決策はありますか? または、データグリッドの最大レコード数を制限する必要があります
listview - 仮想ListViewのAutoResizeColumnsをいつ呼び出す必要がありますか?
仮想を詳細モードで設定してListView
います。現在表示されているアイテムのテキストが切り捨てられないように、列のサイズを自動的に変更したいと思います。
呼び出しAutoResizeColumns
はうまく機能します(仮想モードでこの関数で何が起こるかについてのドキュメントがかなり不明確であるため、少なくともそれはそうであるように見えます)。同様に、列ヘッダーをダブルクリックすると正しく機能します。
ただし、私が知らないのは、いつAutoResizeColumns
メソッドを呼び出すかです。呼び出しはListViewのもトリガーするRetrieveVirtualItem
ため、イベントハンドラーの最後では機能しません。AutoResizeColumns
Refresh
いくつかの指針を教えていただけますか?
c# - ListView OwnerDraw のデフォルト実装
アイテムの描画を微調整したいListViewがあります (たとえば、リスト ビューのアイテムで特定の文字列を強調表示する) が、アイテムの表示方法を根本的に変更したくありません。
OwnerDrawを true に設定し、ハイライト効果を描画する方法について頭を悩ませることができますが、デフォルトの実装を延期して残りのリスト ビュー アイテムを描画しようとすると、問題が発生し、全体が残ってしまいます。実際に私が完全に間違っていることを示すグラフィカルな問題の負荷。
DrawItem
とイベントの「デフォルト」ハンドラーが何をするかを確認できる場所はありDrawSubItem
ますか?
参考までに、私が現在行っていることを示すスニペットを次に示します。
winforms - 仮想モードでListViewの基になるリストをソートするときに、選択をソートする方法は?
aListView
が仮想モードの場合、イベントを通じて要求されたときに index に対応するListView
aを供給する責任があります。ListItem
n
OnRetrieveItem
私は自分のルールに従ってリストをソートし、リストビューに再描画するように指示します:
それはいいですし、ダンディです。
ユーザーがいくつかの項目を選択した場合を除きます。ツリーが再描画されると、さまざまな項目が選択されるようになりました。
ソートするテクニックは何SelectedIndices
ですか?
しかし、私が自分の個人的なリストを並べ替えると
c# - VirtualModeのWinforms DataGridViewはいつAutoResizeColumnを呼び出すべきですか?
フォームに を実装DataGridView
し、 を正常に実装しましたVirtualMode
。これにより、ローカルキャッシュからセルデータが取得され、グリッド/ページングなどにデータを入力するときにすべてが正しく機能しているように見えますDataGridView.CellValueNeeded
。イベントを処理してセルにデータを入力します。
DataGridView で、AutoSizeColumnsMode
プロパティを に設定していDataGridViewAutoSizeColumnsMode.DisplayedCells
ます。VirtualMode を使用すると、セルにデータを入力した後、DataGridView が AutoSizeColumnsMode を尊重していないように見えることに気付きました。この記事を調べましたが、解決策が見つかりませんでした。
私が最終的にやりたいのは、AutoSizeColumnsMode
プロパティに依存するのではなく、.AutoResizeColumn()
メソッドをどこかで呼び出してサイズを変更することです。そのため、最初は列のサイズを自動調整しますが、ユーザーがサイズを変更できるようにします。
私は次のことを試しましたが、限定的またはまったく成功しませんでした:
に設定
DataGridView.AutoSizeColumnsMode
し.None
ます。次に、私の.CellValueNeeded
ハンドラーでStackOverFlowException
これは、おそらく を繰り返し発生させるため、 をスローし.CellValueNeeded
ます。.CellFormatting
イベントハンドラーを除いて、まったく同じことを試しました。同じを得たStackOverFlowException
。ありとなしで試しました
DataGridView.SuspendLayout/ResumeLayout
:これにより、すべてのセルが空白になるため、使用できません。
これは実際にはある程度機能しますが、理由はわかりません:
列のサイズを正しく変更しますが、必要なすべてのセル値に対して繰り返し呼び出す必要があるのは奇妙に思えます。また、すぐに .None に設定することはできません
StackOverFlowException
。したがって、ユーザーが列のサイズを変更できるようにすることはできません。.UpdateCellValue()
私のハンドラーからの記事で述べたように呼び出すと、同様に.CellValueNeeded
スローStackOverFlowException
されます。
では、オーバーフローするまで発生し.AutoResizeColumn()
ない場所を呼び出すことは可能ですか? .CellValueNeeded
#4には自動サイズ機能を実行する機能があるように見えるので、どこかから手動で呼び出すこともできるようです。
asp.net - ASP.net の仮想リストビュー?
ASP.net の仮想リストビューはありますか?
asp.netで見つけたほとんどのテーブル(およびグリッド、リストビュー、データテーブル、データグリッド、グリッドビュー、リストグリッド)は、ユーザーがデータをページングすることを期待しています。
たとえば、10,000 項目を含むリストビューが必要です。私は10ページを望んでいません。
長いリストの問題は、1994 年に「仮想」モードのリストビューを使用して解決されました。コントロールには、表示するアイテムの数だけを指定する必要があります。必要に応じて、これらの項目に関する制御情報 (つまり、ユーザーが項目をスクロールして表示したり、列で並べ替えを試みたりしたとき)。
仮想リストビューを作成した人はいますか (おそらく非同期 Javascript と XML、または同期 Javascript と XML を使用)。
答えが「いいえ」の場合: 恐れずに質問に答えてください。次のような答えで問題ありません。
いいえ。