C#通过列表框

问题描述:

在我的列表框对齐2串,我想显示以下C#通过列表框

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

有没有办法做到这一点,或者只出现在一个列表框1个对齐?

如果您在Winforms中使用,则可以使用此代码。

可如果你使用WPF 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)); 
    } 
} 
+1

当回答问题时,试着拿出“个人”的语言。答案不像论坛那样健谈,他们更像是*条目:) – 2013-05-14 04:39:19

。这应该在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等)。

克里斯托夫