【发布时间】:2022-01-07 13:10:39
【问题描述】:
所以我有这段代码,我想在resize_Handler void 中调用set_background void。我该怎么做?我在resize_Handler 中尝试了set_background(null, PaintEventArgs());,但它显示的是non-invocable member cannot be used like a method。
我的代码:
private void set_background(Object sender, PaintEventArgs e) {
Graphics graphics = e.Graphics;
Rectangle gradient_rectangle = new Rectangle(0, 0, Width, Height);
Brush b = new LinearGradientBrush(gradient_rectangle, Color.FromArgb(255, 255, 255), Color.FromArgb(255, 102, 54), 0f);
graphics.FillRectangle(b, gradient_rectangle);
}
private void resize_Handler(object sender, System.EventArgs e) {
// where I want to call set_background()
}
【问题讨论】:
-
PaintEventArgs是一种类型 - 所以PaintEventArgs()无效。但是new PaintEventArgs()会。 -
虽然我不得不问你希望
e.Graphics在这种情况下是什么......从根本上说,这些方法应该用作事件处理程序而不是直接调用。 -
@JonSkeet,但我希望在窗口调整大小时调用它。你能提供一些关于这方面的信息吗?我尝试做
set_background(null, new PaintEventArgs(null, new Rectangle()));,但它也没有工作。提前致谢。 -
其实我认为解决方案是
this.Invalidate()或this.Update()或this.Refresh()(两者结合)。否则问题将是您不知道要使用哪个图形对象。无论如何,您可能已经将它与Paint event 挂钩,只是用了一个奇怪的名字。