我有一个.Net Framework ListBox并添加了两个项目,但只显示了一个.

代码:

private class VisibleObject
{
    public override string ToString()
    {
        return "VisibleObject";
    }
}

private class InvisibleObject : UserControl
{
    public override string ToString()
    {
        return "InvisibleObject";
    }
}

private void InsertItems()
{
    listbox.Items.Add(new VisibleObject());
    listbox.Items.Add(new InvisibleObject());
}

使用此代码,列表框中显示VisibleObject,但不显示InvisibleObject.InvisibleObject的基础是UserControl.

列表框应该显示结果ToString(),但这不适用于UserControl.为什么以及如何在ListBox内展示UserControl

推荐答案

您可以try 使用ListControl.Format事件来完成此操作:

listbox.Format += listbox_Format;

private void listbox_Format(object sender, ListControlConvertEventArgs e)
{
    e.Value = e.ListItem.ToString();
}

Result:
enter image description here

Csharp相关问答推荐

FileStream. FlushAsync()是否确保文件被写入磁盘?

如何在C#中使用正则表达式抓取用逗号分隔的两个单词?

具有单一导航属性的EF核心一对多关系

Int和uint相乘得到LONG?

应用程序启动器,可 Select 物理屏幕

Blazor WebApp:原始异常:AADSTS700025:客户端是公共的,因此既不应显示客户端,也不应显示客户端

如何在WPF的树视图中显示一个对象的两个或多个属性,其中只有一个是分层项?

为具有实体框架后端的Reaction项目 Select 正确的Visual Studio模板

在EF Core中,有没有什么方法可以防止在查询中写入相同的条件,而代之以表达式?

如何使用MoQ模拟Resources GroupCollection?

依赖项注入、工厂方法和处置困境

ASP.NET Core MVC将值从视图传递到控制器时出现问题

升级后发出SWITCH语句

VS 2022与VS 2019:如何/为什么创建额外的任务?

在使用UserManager时,如何包含与其他实体的关系?

如何设置WinForms按钮焦点,使其看起来像是被Tab键插入其中?

Azure队列触发器未使用隔离的工作进程执行

如何在Cake脚本中设置MSBuild.exe的绝对路径

C#;AvaloniaUI;MVVM;当另一个窗口上的按钮被单击时,如何更新视图图像源?

我应该使用IMhemyCache来存储承载令牌,还是应该为Azure函数中的401个错误实施Polly重试策略?