web-dev-qa-db-ja.com

ListView ColumnHeaderを非表示にする方法は?

含まれているフォームの事前定義されたジョブのリストに使用する正しいコントロールを理解するのに苦労しています。私は現在、海洋サービスショップのすべての事前定義されたジョブ(つまり、オイル交換、調整など)をリストする事前定義されたジョブ名グループにListBoxControlを持っています。次に、ListBoxで選択された項目(つまり、ジョブ名)に基づいて、そのジョブに対応する項目を表示する必要があります。たとえば、オイル交換が選択されたジョブである場合、4クォーツのオイル、1つのオイルフィルター、労働力などを表示する必要があります。

現在、フォームデータを読み込むときに、LINQ to SQLを使用してデータベースからすべてのジョブを取得するDAOがあります。次に、結果を繰り返し処理して、ジョブ名をListBoxに入力します。私が抱えている問題は、ListViewアイテムのようにListBoxアイテムにタグがないことです。したがって、ユーザーがListBoxで別のアイテムを選択するたびに、別のLINQクエリを実行して、データベースからジョブを再度取得し、対応するアイテムを表示できるようにする必要があります。 ListViewを使用して列ヘッダーを非表示にできれば、タグ全体にジョブ全体を設定でき、ユーザーが新しいアイテムを選択するたびに、データベースを再度呼び出さなくても詳細にアクセスできます。列全体を非表示にすることなく、ListViewの列ヘッダーを非表示にする方法はありますか?

Windows Form

17
Grasshopper

HeaderStyleListViewメンバーをNoneに設定できます。

listView1.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None;

56
Scott Smith

ListView HeaderStyle プロパティをチェックアウトします。次のオプションがあります。

  1. None
  2. クリック不可
  3. クリック可能

MSDNから:

HeaderStyleプロパティを使用すると、列ヘッダーを表示するかどうか、または表示する場合はクリック可能なボタンとして機能するかどうかを指定できます。 HeaderStyleプロパティがColumnHeaderStyle.Noneに設定されている場合、ListViewコントロールのアイテムとサブアイテムは引き続き列に配置されますが、列ヘッダーは表示されません。

7
Rajesh

ListItemText(文字列)とTag(オブジェクト)の2つの属性を持つ単純なオブジェクトを作成することもできます。次に、ListItem.ToString()を実装すると、ListBoxでもこれらを使用できます。

Better ListView Express コンポーネントもチェックアウトできます。これは無料で、列のないDetailsビューでアイテムを表示できます。 ListBoxとListViewに対する利点は、ネイティブの外観と多くの追加機能です。

1
Libor

簡単な方法は、ColumnWidthChangingイベントを使用することです

private void listViewExtended1_ColumnWidthChanging(object sender, ColumnWidthChangingEventArgs e)
{
      if (e.ColumnIndex == 0)
      {
           e.Cancel = true;
           e.NewWidth = listViewExtended1.Columns[e.ColumnIndex].Width;
      }
}
1
ssvelu83

Rajeshが前述したように、ヘッダーが表示されていないことがわかっている場合は、HeaderStyleプロパティをNoneに設定するのが最善の方法であることがわかりました。

画面が最初に読み込まれるときに.CSで設定すると、画面が完全にレンダリングされるまでヘッダーが表示されます。

0
DanO