6

この一見単純なトピックについて、どこにも答えを見つけることができませんでした: WinForms ListView コントロールの単一のサブアイテムのテキストを揃えることは可能ですか?

もしそうなら、どのように?

同じ列のテキストを別の方法で配置したいと考えています。

4

6 に答える 6

9

例 :

listView1.Columns[1].TextAlign = HorizontalAlignment.Right;

列の「1」の配置を右に設定します

于 2013-05-11T03:46:26.610 に答える
8

「ColumnHeader」クラスには、列内のすべてのサブ項目の配置を変更する「TextAlign」プロパティがあります。もっと派手なものが必要な場合は、いつでも「DrawSubItem」イベントを使用して所有者描画にすることができます。

于 2009-02-18T16:29:53.810 に答える
5

将来の参考のために、これが私がそれを解決した方法です:

// Make owner-drawn to be able to give different alignments to single subitems
lvResult.OwnerDraw = true;
...

// Handle DrawSubItem event
private void lvResult_DrawSubItem(object sender, DrawListViewSubItemEventArgs e)
{
    // This is the default text alignment
    TextFormatFlags flags = TextFormatFlags.Left;

    // Align text on the right for the subitems after row 11 in the 
    // first column
    if (e.ColumnIndex == 0 && e.Item.Index > 11)
    {
        flags = TextFormatFlags.Right;
    }

    e.DrawText(flags);
}

// Handle DrawColumnHeader event
private void lvResult_DrawColumnHeader(object sender, DrawListViewColumnHeaderEventArgs e)
{
    // Draw the column header normally
    e.DrawDefault = true;
    e.DrawBackground();
    e.DrawText();
}

DrawColumnHeader を処理する必要がありました。そうしないと、テキストまたは列区切りが描画されません。

于 2009-02-19T09:03:13.877 に答える
0

@Fueledの回答に基づいて、列ヘッダーの配置を使用するために私が行ったことは次のとおりです。

    protected override void OnDrawSubItem( DrawListViewSubItemEventArgs e )
        {
        // Match the subitem alignment to the column header alignment
        TextFormatFlags flags = TextFormatFlags.Left;
        switch ( this.Columns[ e.ColumnIndex ].TextAlign )
            {
            case HorizontalAlignment.Right:
                flags = TextFormatFlags.Right;
                break;
            case HorizontalAlignment.Center:
                flags = TextFormatFlags.HorizontalCenter;
                break;
            }
        e.DrawText( flags );
        }
于 2020-06-02T17:08:25.300 に答える