【问题标题】:Where is the Padding property for ComboBox?ComboBox 的 Padding 属性在哪里?
【发布时间】:2017-08-08 00:40:05
【问题描述】:

Label 和 CheckBox 具有“填充”属性。 如果我想在 TableLayoutPanel 中设置它们的位置,这非常方便。 现在我想对 ComboBox 做同样的事情,但令我惊讶的是,我没有在 ComboBox 中找到 Padding 属性。

真的没有吗? 如果没有,是否有一种解决方法可以在 TableLayoutPanel 中设置组合框缩进的缩进?

【问题讨论】:

  • 它在那里,因为 ComboBox 是一个控件。见msdn.microsoft.com/en-us/library/…。此外,它可能被[Browsable(false), EditorBrowsable(EditorBrowsableState.Never)] 之类的东西隐藏了。但是你应该可以从代码中设置它,即使你没有看到它。

标签: vb.net winforms combobox


【解决方案1】:

由于 ComboBox 派生自 Control,它确实存在。它有财产。见https://msdn.microsoft.com/en-us/library/system.windows.forms.control.padding(v=vs.110).aspx

但开发人员故意为 ComboBoxes 隐藏了它。这是 ComboBox.Padding 的签名

ComboBox [来自元数据]

//
// Summary:
//     This property is not relevant for this class.
//
// Returns:
//     A System.Windows.Forms.Padding value.
[Browsable(false)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
[EditorBrowsable(EditorBrowsableState.Never)]
public Padding Padding { get; set; }

显然,This property is not relevant for this class.

并不是说你不能尝试在运行时从代码中修改它...

this.comboBox1.Padding = new Padding(10); // this compiles!

...但这似乎没有任何作用。

TableLayoutPanel 本身具有填充。也许这对你有用

【讨论】:

  • 这种评论我会恨自己两年后... :-) 没有解释为什么它不相关。
  • 但是 TableLayoutPanel 并没有为每一行/每列设置 Padding,只有它自己,对吧?
  • 它有填充和边距。填充应该处理您对其他控件所做的事情,但将适用于所有控件。您可能需要先根据 ComboBox 设置 tlp Padding,然后单独调整其他的。
  • 将您的组合框放在面板中,使用面板的填充并将面板添加到您的表格布局面板中。
猜你喜欢
  • 1970-01-01
  • 2014-12-25
  • 2015-12-08
  • 2018-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-09-27
相关资源
最近更新 更多