Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何移动表单';是否将onPaint事件添加到自定义类?_C#_Themes_Custom Controls - Fatal编程技术网

C# 如何移动表单';是否将onPaint事件添加到自定义类?

C# 如何移动表单';是否将onPaint事件添加到自定义类?,c#,themes,custom-controls,C#,Themes,Custom Controls,我有一个应用程序,我正在使用自己的“ThemeManager”类设计一些表单的样式。相当基本的东西-我习惯于为web应用程序使用CSS,我将其作为表单应用程序编写(由于各种原因不能成为WPF) 因此,我正在使用ThemeManager类设置表单的样式,在该类中我可以传递要设置样式的表单: 主题管理器中的示例: 公共无效设置主题(表单发送者) { //设置背景色和前景色 sender.BackColor=ColorTranslator.FromHtml(“#2222222”); sender.Fo

我有一个应用程序,我正在使用自己的“ThemeManager”类设计一些表单的样式。相当基本的东西-我习惯于为web应用程序使用CSS,我将其作为表单应用程序编写(由于各种原因不能成为WPF)

因此,我正在使用ThemeManager类设置表单的样式,在该类中我可以传递要设置样式的表单:

主题管理器中的示例:

公共无效设置主题(表单发送者)
{
//设置背景色和前景色
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'