C# 如何移动表单';是否将onPaint事件添加到自定义类?
我有一个应用程序,我正在使用自己的“ThemeManager”类设计一些表单的样式。相当基本的东西-我习惯于为web应用程序使用CSS,我将其作为表单应用程序编写(由于各种原因不能成为WPF) 因此,我正在使用ThemeManager类设置表单的样式,在该类中我可以传递要设置样式的表单: 主题管理器中的示例: 公共无效设置主题(表单发送者)C# 如何移动表单';是否将onPaint事件添加到自定义类?,c#,themes,custom-controls,C#,Themes,Custom Controls,我有一个应用程序,我正在使用自己的“ThemeManager”类设计一些表单的样式。相当基本的东西-我习惯于为web应用程序使用CSS,我将其作为表单应用程序编写(由于各种原因不能成为WPF) 因此,我正在使用ThemeManager类设置表单的样式,在该类中我可以传递要设置样式的表单: 主题管理器中的示例: 公共无效设置主题(表单发送者) { //设置背景色和前景色 sender.BackColor=ColorTranslator.FromHtml(“#2222222”); sender.Fo
{
//设置背景色和前景色
sender.BackColor=ColorTranslator.FromHtml(“#2222222”);
sender.ForeColor=ColorTranslator.FromHtml(“#A6CE39”) 表单没有标题栏和边框,但我想在它们上设置一个非常简单的边框。目前,我通过在每个表单上设置onPaint事件来实现这一点:
public void RemoteControl_Paint(object sender, PaintEventArgs e)
{
e.Graphics.DrawRectangle(new Pen(ColorTranslator.FromHtml("#A6CE39"), 3),
this.DisplayRectangle);
}
在设计器中使用此选项:
this.Paint += new System.Windows.Forms.PaintEventHandler(this.RemoteControl_Paint);
然而,我必须在每个表单上都这样做,而我更愿意通过主题管理器这样做
我已尝试将此添加到SetTheme方法:
sender.Paint += new PaintEventHandler(MyForm_Paint);
并将此方法添加到ThemeManager.cs类:
private void MyForm_Paint(Form sender, PaintEventArgs e)
{
e.Graphics.DrawRectangle(new Pen(ColorTranslator.FromHtml("#A6CE39"), 3),
sender.DisplayRectangle);
}
这不起作用-我收到一个重载错误:
No overload for 'MyForm_Paint' matches delegate 'System.Windows.Forms.PaintEventHandler'
我如何才能做到这一点?代理
PaintEventHandler
代表(它是Paint
事件背后的类型)采用sender
类型的参数Object
,而不是Form
(与所有其他标准事件代理一样)
如果您将处理程序方法更改为接受对象发送者
(然后将其转换回表单
),它将正常工作
No overload for 'MyForm_Paint' matches delegate 'System.Windows.Forms.PaintEventHandler'