【问题标题】:What is the best practice for implementing AutoSize on custom controls?在自定义控件上实施 AutoSize 的最佳做法是什么?
【发布时间】:2012-04-09 21:10:21
【问题描述】:

在自定义 Windows 窗体控件上实现自动调整大小的最佳做法是什么?例如,继承自 System.Windows.Forms.Label 类的自定义 Label 控件。

MSDN 上的 Control.ClientSize 文章有一个关于如何设置新大小的示例(使用 ClientSize 属性),但它没有提示应该调用此方法的事件: http://msdn.microsoft.com/en-us/library/system.windows.forms.control.clientsize.aspx

我尝试了不同的方法但没有成功(例如:覆盖 SizeFromClientSize、OnTextChanged 等)。似乎只要 AutoSize 属性为 true,我就无法成功覆盖 ClientSize 值。

有人可以帮忙吗?谢谢!

【问题讨论】:

    标签: c# .net winforms autosize


    【解决方案1】:

    最好直接从Control 派生您的控制权,它没有AutoSize 属性,也没有干扰您自己的逻辑的相关逻辑。

    【讨论】:

    • 我想这是一个解决方案......但是,我应该重写哪些事件来调用该方法来调整控件的大小? OnTextChanged?怕是加到Resize事件里,会造成死循环……
    • 你有一个自定义控件,你可能实现了自己的 Paint 逻辑。对OnPaint 中的新尺寸做出反应还不够吗?
    • 其实控件已经有了自定义的OnPaint事件。在 OnPaint 事件中自动调整控件的大小是否足够,还是应该在其他地方完成?
    • 如果你有一个UserControl,即一个承载子控件的控件,那么如果标准机制没有产生预期的行为,你可能必须重新计算子控件的位置;但是,如果您的控件按预期运行,您还应该做什么?
    • 好的,我会试试看,如果可行,我会回来接受您的回答。感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-11
    • 1970-01-01
    • 2011-08-22
    • 1970-01-01
    • 2017-05-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多