C# で ListView を無効にしても、現在の選択内容は表示されたままになる

StackOverflow https://stackoverflow.com/questions/14029

  •  08-06-2019
  •  | 
  •  

質問

ListView コントロールがあり、選択した行の変更を禁止する最も簡単/最善の方法を見つけようとしています。 隠蔽 選択した行。

があることは知っています HideSelection プロパティですが、それは次の場合にのみ機能します。 ListView はまだ有効です (ただしフォーカスされていません)。ListView が無効になっている場合でも、選択内容を表示できるようにする必要があります。

これを実装するにはどうすればよいですか?

役に立ちましたか?

解決

ListView を ownerdraw にすることもできます。その後、項目が選択されているかどうか、または ListView 自体が有効かどうかに関係なく、項目の外観を完全に制御できます。DrawListViewItemEventArgs は、ListView に項目の個々の部分を描画するよう依頼する方法を提供するため、関心のあるビットのみを描画する必要があります。たとえば、項目の背景を描画しても、テキストの描画は ListView に任せることができます。

他のヒント

選択した行の無効な色を変更するという 2 つのオプションがあります。または、他のすべての行を変更して、選択した行を除いて無効になっていることをシミュレートします。最初のオプションが最も簡単であることは明らかですが、2 番目のオプションには追加の保護が必要になることは明らかです。

私は実際に最初のオプションを以前に実行したことがあり、非常にうまく機能しました。プロセスの後半で別の行が選択された場合に備えて、色をデフォルトに戻すことを忘れないでください。

SelectedIndexChanged を実装してこれを実行します

    private void listViewABC_SelectedIndexChanged(object sender, EventArgs e)
    {
        listViewABC.SelectedItems.Clear();
    }
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top