为什么我把下面这段代码中的重载类放至窗体类之前程序不会执行?就是按CTRL+F5程序没运行。但把RedTextRenderer放在Form1之后就可以正常执行了,怪。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;namespace uivs
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }        private void Form1_Load(object sender, EventArgs e)
        {
            ToolStripManager.Renderer = new RedTextRenderer();
        }
    }    public class RedTextRenderer : ToolStripRenderer
    {
        protected override void OnRenderItemText(ToolStripItemTextRenderEventArgs e)
        {
            e.TextColor = Color.Black;
            e.TextFont = new Font("宋体", 9, FontStyle.Regular);
            base.OnRenderItemText(e);
        }
    }
}不能正常执行的代码顺序如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;namespace uivs
{
    public class RedTextRenderer : ToolStripRenderer
    {
        protected override void OnRenderItemText(ToolStripItemTextRenderEventArgs e)
        {
            e.TextColor = Color.Black;
            e.TextFont = new Font("宋体", 9, FontStyle.Regular);
            base.OnRenderItemText(e);
        }
    }    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }        private void Form1_Load(object sender, EventArgs e)
        {
            ToolStripManager.Renderer = new RedTextRenderer();
        }
    }
}各位大侠帮我诊断一下啊,我就新建了一个工程,重载了一个函数而已。

解决方案 »

  1.   

    你在类Form1里实例化了类RedTextRenderer的对象,当在同一个文件中的时候,顺序必须是先类RedTextRenderer再类Form1,这就是所谓的前向声明
      

  2.   

    前向声明是C,C++里面的东西,c#是使用命空间组织的,应该不会有这个问题的啊。
    using System;
    namespace TestCollections
    {
        public class tttt
        {
            static void Main()
            {
                test a = new test();
                a.disp();
                
            }
        }    public class test
        {
            public void disp()
            {
                Console.WriteLine("Class test");
            }
        }
    }
    这不是照常运行么?
      

  3.   

    我机器上自私没有  ToolStripRenderer 这个?
    它在哪啊