Win7 の C# 2008 (Net 2.0) に System Windows Forms ListView があります。これには 4 つの列があり、小さなアイコン、fullrowselection がオン、hideselection false、showtooltips true の詳細モードになっています。
3 番目の列は、他の列のように左ではなく、右に配置された唯一の列です。対応するデザイナー プロパティを、論理的な textalignment right に設定しました。しかし、Microsoft はここでほとんど期待を裏切りません。Microsoft Visual Studio も列の見出しを右に揃えますが、これは望ましくありません!!! すべての要素のみが列 3 で右揃えになり、すべての列の見出しテキストはすべて左揃えのままになります。これは、デザイナーの設定ではできないようです。
Googleで長い間検索したところ、これが見つかりました-コードはアイテムを希望どおりに整列させますが、アイテムのテキストが消えて再び表示され、強調表示と選択が部分的に機能しませんListViewが部分的にまたは全体で消え、テキストがレンダリングされます奇妙でシャープでないなどなど - 以下のコードを適用した後、ListView はデフォルトの動作を停止しました。この問題を解決するにはどうすればよいですか (Ownerdraw では、以下のコードが true に設定されています。Fullrowselect、hideselection false、および detailsmode がオンになっています)。基本的に、列 3 のサブ項目のみを、列ヘッダーの textalignment を変更せずに希望どおりに配置する必要があります。他のすべてはデフォルトの描画になります。描画を変更したくありません。配置のみが、説明したカスタムのものになります。その上。
private void listView1_DrawSubItem(object sender, DrawListViewSubItemEventArgs e)
{
TextFormatFlags flags = TextFormatFlags.Left;
if (e.ColumnIndex == 3)
{
flags = TextFormatFlags.Right;
e.DrawText(flags);
}
else
{
e.DrawDefault = true;
}
}
private void listView1_DrawColumnHeader(object sender, DrawListViewColumnHeaderEventArgs e)
{
e.DrawDefault = true;
}