比如说都是学生的管理窗口,一个是管理1班,一个是管理2班的我有几种思路:
1.在创建窗口的时候传参数,然后在窗口里面swith那个参数进行不同操作
这样的缺点是一个窗体里面的代码一大陀2.是否可以创建一个父类,再继承什么的使得各窗口分开来而有一定共性???具体怎么实现没试过3.???大家能提供一下思路吗???好让我搜索也有关键词啊

解决方案 »

  1.   

    是的,重写Form,给点思路#region 重写方法
            protected override void OnInvalidated(InvalidateEventArgs e)
            {
                SetReion();
                SystemBtnSet();
                base.OnInvalidated(e);        }        //重绘窗口
            protected override void OnPaint(PaintEventArgs e)
            {
                try
                {
                    g = e.Graphics;
                    g.DrawIcon(this.Icon, new Rectangle(12, 12, 16, 16));
                    g.DrawString(this.Text, this.Font, new SolidBrush(this.ForeColor), 32, 12);  
                    g.SmoothingMode = SmoothingMode.HighQuality; //高质量
                    g.PixelOffsetMode = PixelOffsetMode.HighQuality; //高像素偏移质量
                    ImageDrawRect.DrawRect(g, _BacklightImg, ClientRectangle, Rectangle.FromLTRB(_BacklightLTRB.X, _BacklightLTRB.Y, _BacklightLTRB.Width, _BacklightLTRB.Height), 1, 1);                
                }
                catch
                { }
            }
            //重载WndProc方法
            protected override void WndProc(ref Message m)
            {
                try
                {
                    switch (m.Msg)
                    {
                        //窗体客户区以外的重绘消息,一般是由系统负责处理
                        case Win32.WM_NCPAINT:
                            break;
                        //画窗体被激活或者没有被激活时的样子//http://blog.csdn.net/commandos/archive/2007/11/27/1904558.aspx
                        case Win32.WM_NCACTIVATE:
                            if (m.WParam == (IntPtr)Win32.WM_FALSE)
                            {
                                m.Result = (IntPtr)Win32.WM_TRUE;
                            }
                            break;
                        //在需要计算窗口客户区的大小和位置时发送。通过处理这个消息,应用程序可以在窗口大小或位置改变时控制客户区的内容
                        case Win32.WM_NCCALCSIZE:
                            break;
                        //鼠标移动,按下或释放都会执行该消息
                        case Win32.WM_NCHITTEST:
                            WM_NCHITTEST(ref m);
                            break;
                        default:
                            base.WndProc(ref m);
                            break;
                    }
                }
                catch { }
            }
            #endregion
      

  2.   

    1 如果界面基本没有变动的话,参数化好了
    2 如果界面变动的多,usercontrol