自定义列表框不会完全显示字符串 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
        {

        }
    }

我只能使用值宽度大于列表框宽度的项目进行重现。 如果是这种情况,您需要将 Horizo​​ntalScrollbar 属性设置为 True 和 Horizo​​ntalExtent 值