[英]C# Aligning 2 Strings via a listbox
在我的列表框中,我想显示以下内容
String 1(left aligned - default) int value(right aligned)
有没有办法做到这一点,或者列表框中只能有1个对齐方式?
如果在Winforms中使用,则可以使用此代码。
您可以将ListBox的DrawMode
属性设置为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));
}
}
如果使用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”和“ value”之类的变量名称属于不良命名的类别;-)希望它只是用于发布而不是用于您的实际工作代码。
下次您还可以弄清楚希望使用哪种技术(WinForms,WPF,ASP.net等)。
克里斯托夫
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.