我正在使用此自定义控件。 (我对这部分编程很新。)我正在开发一个应用程序,当用户在我自己的自定义控件中输入输入时,必须能够格式化数学表达式。这就是我希望控件看起来像这样(这个图像是在Photoshop中制作的):
我不会解释我希望它拥有的行为,因为这对您没有帮助,但想法是它不基于任何Windows控件。
这是我已有的代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Support.Components
{
public partial class PartialExpressionEditor : Control
{
public PartialExpressionEditor()
{
InitializeComponent();
}
protected override void OnPaint(PaintEventArgs pe)
{
base.OnPaint(pe);
Brush background = Brushes.White;
pe.Graphics.FillRectangle(background, ClientRectangle);
background.Dispose();
}
}
}
当我尝试将其放入我的表单时,我会收到此错误对话框:
问题出在哪里?或者为什么出现这个错误?
答案 0 :(得分:2)
我认为问题在于您正在处理系统刷:
// background.Dispose();
因为你没有创建它:
Brush background = Brushes.White;
使用您自己处理的刷子:
using (SolidBrush br = new SolidBrush(Color.White)) {
pe.Graphics.FillRectangle(br, this.ClientRectangle);
}
您可能必须退出Visual Studio才能刷回Brushes.White。