自定义列表框不会完全显示字符串 c#
Custom listbox wont display string completly c#
大家好我正在尝试重新刷列表框中的单个项目,我使用了列表框绘制项目事件,不知何故它起作用了但是当我将项目添加到我的列表框时,只添加了字符串“b”而没有添加 +“ hi" 部分,我可以写任何我想要的或添加任何我想要的,只会打印字符串 b.
不使用绘制模式并坚持使用普通列表框显然可以解决问题,所以我猜它一定与绘制项目事件有关,但我无法弄清楚这到底是怎么回事,感谢您的帮助
listBox3.DrawMode = DrawMode.OwnerDrawFixed;
private async void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
foreach (string b in liIDs)
{
listBox3.Invoke((MethodInvoker)delegate
{
listBox3.Items.Add(b + "hi");
listBox3.Update();
});
}
private void listBox3_DrawItem(object sender, DrawItemEventArgs e)
{
try
{
e.DrawBackground();
Brush myBrush = Brushes.White;
myBrush = Brushes.Red;
e.Graphics.DrawString(((ListBox)sender).Items[e.Index].ToString(),
e.Font, myBrush, e.Bounds, StringFormat.GenericDefault);
e.DrawFocusRectangle();
}
catch
{
}
}
我只能使用值宽度大于列表框宽度的项目进行重现。
如果是这种情况,您需要将 HorizontalScrollbar 属性设置为 True 和 HorizontalExtent 值
大家好我正在尝试重新刷列表框中的单个项目,我使用了列表框绘制项目事件,不知何故它起作用了但是当我将项目添加到我的列表框时,只添加了字符串“b”而没有添加 +“ hi" 部分,我可以写任何我想要的或添加任何我想要的,只会打印字符串 b.
不使用绘制模式并坚持使用普通列表框显然可以解决问题,所以我猜它一定与绘制项目事件有关,但我无法弄清楚这到底是怎么回事,感谢您的帮助
listBox3.DrawMode = DrawMode.OwnerDrawFixed;
private async void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
foreach (string b in liIDs)
{
listBox3.Invoke((MethodInvoker)delegate
{
listBox3.Items.Add(b + "hi");
listBox3.Update();
});
}
private void listBox3_DrawItem(object sender, DrawItemEventArgs e)
{
try
{
e.DrawBackground();
Brush myBrush = Brushes.White;
myBrush = Brushes.Red;
e.Graphics.DrawString(((ListBox)sender).Items[e.Index].ToString(),
e.Font, myBrush, e.Bounds, StringFormat.GenericDefault);
e.DrawFocusRectangle();
}
catch
{
}
}
我只能使用值宽度大于列表框宽度的项目进行重现。 如果是这种情况,您需要将 HorizontalScrollbar 属性设置为 True 和 HorizontalExtent 值