【问题标题】:Making a custom listbox制作自定义列表框
【发布时间】:2011-10-20 23:18:49
【问题描述】:

如果我想通过继承 ListBox 类并覆盖一些函数来制作自定义列表框,我应该制作用户控件还是自定义控件?我读过我应该使用用户控件,但是当我添加用户控件时,它在设计器中带有一个面板控件,我无法删除,而自定义控件是空白的,我可以将任何东西拖到它上面。

当我尝试将用户控件的 public partial class UserControl1 : UserControl 更改为 public partial class UserControl1 : ListBox 时,VS 不会添加像 AutoScaleModeAutoScaleDimensions 这样的属性。

【问题讨论】:

  • 自动缩放是容器的工作,而不是列表框。从ListBox派生是对的,不要叫UserControl1。
  • 我只是以VS中的默认设置为例。从 ListBox 派生为用户控件表单会产生错误,因为 VS 不会自动调整设置。这就是为什么我要问用户控件是否合适或应该使用自定义控件。

标签: c# winforms visual-studio-2010


【解决方案1】:

UserControl 是一个容器控件。它没有“附带”面板——它一种“面板”(但不是面板——它只是一个空的 ContainerControl)。所以你可以定位它们。自定义控件只是从 Control 派生而来,您可以纯粹在代码中创建和定位内容,尽管通常您不会在简单的 Control 中包含子控件。

至于从 ListBox 继承,你必须自己添加这些属性,除非我完全误解了。

顺便说一句,如果您只需要在 ListBox 中绘制自定义元素,而不是更改功能,请考虑改为使用所有者绘制 ListBox。网上有很多例子。

【讨论】:

  • 我在问是否使用用户控件或自定义控件从现有的 winforms 控件制作自定义控件。当我从自定义控件中的 ListBox 继承时,Visual Studio 和智能感知会自动调整,而对用户控件执行相同操作则不起作用。
  • @Jack:两者都不是。如果可能的话,你继承。 (如果不是,您可能会使用自定义控件。不过,通常不是用户控件。)
  • 继承是什么意思?如果想修改现有控件,则需要制作用户控件/自定义控件并从其继承。
  • @Jonas:继承自 ListBox 而不是 ControlUserControl
猜你喜欢
  • 1970-01-01
  • 2011-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-06
相关资源
最近更新 更多