在C#中'处理'歧义错误

时间:2013-10-22 20:20:10

标签: c# dispose

我有以下代码:

public partial class Painter : Form
    {
        private System.ComponentModel.Container Components = null;

        private const int m_intDIAMETER = 8;

        private const int m_intMOUSEUP_DIAMETER = 4;

        private Graphics m_objGraphic;

        private bool m_binShouldPaint = false;

        private bool m_binShouldErase = false;



        public Painter()
        {
            InitializeComponent();
        }

        protected override void Dispose(bool disposing)
        {
            if (disposing)
            {
                if (components != null)
                {
                    components.Dispose();
                    //components = null;
                }
            }
            base.Dispose(disposing);
        }
        static void Main()
        {
            Application.Run(new Painter());
        }


        private void Form1_Load(object sender, EventArgs e)
        {
            m_objGraphic = CreateGraphics();

        }

        private void Painter_MouseDown(object sender,System.Windows.Forms.MouseEventArgs e)
        {
            //m_objGraphic.FillEllipse(new SolidBrush(Color.HotPink), e.X, e.Y, m_intDIAMETER, m_intDIAMETER);
            //m_binShouldPaint = true;

            if (e.Button == MouseButtons.Left)
            {
                m_binShouldPaint = true;
            }
            else if (e.Button == MouseButtons.Right)
            {
                m_binShouldErase = true;
            }
        }

在编译时,我的调试器会生成以下错误:

Error   1   Type 'Painter.Painter' already defines a member called 'Dispose' with the same parameter types

我认为Dispose方法是由程序生成的,这就是为什么当我编写它而不生成“Dispose”时它会给我一个错误。但我该如何解决呢?

1 个答案:

答案 0 :(得分:2)

您在设计器生成的文件中有另一个Dispose方法。即Painter.Designer.cs,如果您在Dispose中有一些自定义实现,则修改Painter.Designer.cs文件中的一个或将其移至您的代码后面。

Visual Studio生成designer.cs文件,每个Form,该文件包含有关表单上使用的控件的代码,并且还具有Dispose方法实现。由于您的代码背后有一个,因此在同一个类中遇到多个Dispose方法会出错。 (两个文件通过partial关键字具有相同的类别)

enter image description here