gpt4 book ai didi

C# 在对话框中设置更新时重新加载/重绘表单

转载 作者:行者123 更新时间:2023-11-30 21:23:12 24 4
gpt4 key购买 nike

我有一个 C# Win Forms 应用程序,我在其中根据类中的 2 个属性在面板中动态绘制按钮。行和列。

我还有一个打开的对话框,它使用 2 个文本框设置这些属性。

我在该对话框上有一个名为“保存”的按钮,按下该按钮后,会将主类中的属性(行、列)更新为设置的任何值。

我希望主窗体根据应用的新设置(行和列)重绘动态绘制的按钮。我该怎么做?

编辑:

刷新无效。

另一个可能很重要的注意事项:我的按钮动态绘制发生在“Form1_Load”方法中。

最佳答案

基本上可以通过三种方式强制控件重绘自身,Refresh()、Update() 和 Invalidate()。正如 Adam Robinson 指出的那样,启用自定义绘画的最简单方法是覆盖 Paint 事件。把所有的绘画逻辑放在这里。使用 PaintEventArgs 参数提供的 Graphics 对象。

那么上面的调用有什么区别呢?

Invalidate 将控件(区域或矩形)标记为需要重新绘制,但不会立即重新绘制(当其他一切都已处理完毕并且应用程序变为空闲时会触发重新绘制).

更新 会导致控件在任何部分失效时立即重新绘制。

刷新 导致控件失效,然后更新(即立即重新绘制自身)。

我认为使用 Invalidate() 是一个好习惯,除非您有特殊需要。在大多数情况下,它会让你的程序更有效率。如果这样做,您甚至不需要在加载事件中包含绘制逻辑。这很可能在您甚至让您的表单可见之前就被覆盖并失效,这取决于您在 Load 事件中所做的其他事情。

关于C# 在对话框中设置更新时重新加载/重绘表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1911190/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com