1

私のリストボックスに、次を表示したいと思います

String 1(left aligned - default)                 int value(right aligned)

これを行う方法はありますか、またはリストボックスに配置できるのは 1 つだけですか?

4

2 に答える 2

2

Winforms で使用している場合は、このコードを使用できます。

DrawModeListBoxのプロパティを次のように設定できます。DrawMode.OwnerDrawFixed

ListBox listBox = new ListBox();
listBox.DrawMode = DrawMode.OwnerDrawFixed;
listBox.DrawItem += new DrawItemEventHandler(listBox_DrawItem);

void listBox_DrawItem(object sender, DrawItemEventArgs e)
{
    ListBox list = (ListBox)sender;
    if (e.Index > -1)
    {
        object item = list.Items[e.Index];
        e.DrawBackground();
        e.DrawFocusRectangle();
        Brush brush = new SolidBrush(e.ForeColor);
        SizeF size = e.Graphics.MeasureString(item.ToString(), e.Font);
        e.Graphics.DrawString(item.ToString(), e.Font, brush, e.Bounds.Left + (e.Bounds.Width / 2 - size.Width / 2), e.Bounds.Top + (e.Bounds.Height / 2 - size.Height / 2)); 
    }
}
于 2013-05-14T04:29:22.240 に答える
0

WPFを使用する場合。これは XAML で機能するはずです。

<ListBox.ItemTemplate>
<DataTemplate>
    <Grid>
        <Grid.ColumnDefinition>
            <ColumnDefinition Width="Auto" MinWidth="100"/>
            <ColumnDefinition Width="Auto" MinWidth="100"/>
        </Grid.ColumnDefinition>
        <TextBlock Text="{Binding 1}" HorizontalAlignment="Left"/>
        <TextBlock Text="{Binding value}" HorizontalAlignment="Right" Grid.Column="1"/>
    </Grid>
</DataTemplate>
</ListBox.ItemTemplate>

メモリ不足です。少し調整する必要があるかもしれません。

ちなみに、「1」や「値」などの変数名は、悪い名前付けのカテゴリに属します;-)それが投稿のためのものであり、実際の作業コードのためのものではないことを願っています.

次回は、表示するテクノロジ (WinForms、WPF、ASP.net など) を明確にすることもできます。

クリストフ

于 2013-05-14T05:25:39.367 に答える