C# で ListView を無効にしても、現在の選択内容は表示されたままになる
質問
ListView コントロールがあり、選択した行の変更を禁止する最も簡単/最善の方法を見つけようとしています。 隠蔽 選択した行。
があることは知っています HideSelection
プロパティですが、それは次の場合にのみ機能します。 ListView
はまだ有効です (ただしフォーカスされていません)。ListView が無効になっている場合でも、選択内容を表示できるようにする必要があります。
これを実装するにはどうすればよいですか?
解決
ListView を ownerdraw にすることもできます。その後、項目が選択されているかどうか、または ListView 自体が有効かどうかに関係なく、項目の外観を完全に制御できます。DrawListViewItemEventArgs は、ListView に項目の個々の部分を描画するよう依頼する方法を提供するため、関心のあるビットのみを描画する必要があります。たとえば、項目の背景を描画しても、テキストの描画は ListView に任せることができます。
他のヒント
選択した行の無効な色を変更するという 2 つのオプションがあります。または、他のすべての行を変更して、選択した行を除いて無効になっていることをシミュレートします。最初のオプションが最も簡単であることは明らかですが、2 番目のオプションには追加の保護が必要になることは明らかです。
私は実際に最初のオプションを以前に実行したことがあり、非常にうまく機能しました。プロセスの後半で別の行が選択された場合に備えて、色をデフォルトに戻すことを忘れないでください。
SelectedIndexChanged を実装してこれを実行します
private void listViewABC_SelectedIndexChanged(object sender, EventArgs e)
{
listViewABC.SelectedItems.Clear();
}
所属していません StackOverflow