我在使用C#进行制作毕业设计时候遇到了点问题,希望高手帮助解答一下,谢谢!!
我制作了一个自定义控件,定义了public的变量,用来判断不同的情况,进行GDI画图
        public static int ST=1,Dir=1,LR=1,Tem,X=0,Y=0;//定义道岔
        public static int SD = 1, DS = 0;//双动 单锁
        public static string ID,ID2,ID3,ID4;//道岔名称
        public static int ZY=0;//征用标志
        public static int ab;
GDI画图是放在重绘的事件里面的
  protected override void OnPaint(PaintEventArgs e)
        {
            //这里写重绘代码
            //创建Graphics对象
         
            Graphics GPS = this.CreateGraphics();
            //创建画笔对象
            Pen MyPen = new Pen(Color.Blue, 2f);
            Pen JY = new Pen(Color.Gray, 2f);然后使用if 判断各种参数的情况
当选择不同的右键菜单的时候
private void 反操ToolStripMenuItem_Click(object sender, EventArgs e)
        {          
            ST = 2;
            Tem = ST;
            this.Invalidate();
        }
改变参数,然后重绘;之后在窗体应用程序里面调用dll测试,使用button调用自定义控件
UserControl1 Control1 = new UserControl1();
            this.Controls.Add(Control1);但是当我生成多个的时候,改变其中一个,只要点击其他任何一个,都会跟着一起改变,是不是因为参数都是PUBLIC的原因?
如果要改变的话,要怎么才能达到效果,改变其中一个自定义控件,其余的自定义控件不会跟着一起变,尝试过把public改成privata,但是在自定义控件里面设计的时候,也包含了一些新建的form,如果改成private,这些form也都是用不了这些参数了,应该如何解决啊!!

解决方案 »

  1.   

    对于每个对象自己的属性不能用static
    否则是所有对象共用的
      

  2.   

    应该怎么更改一下?是直接去了static嘛?..
      

  3.   

    去掉变量的static 
      

  4.   

    去掉变量的static 
      

  5.   

    我去掉了变量的static,在自定义空间里面新生成的form的值好像就没办法传过来了,怎么办
      

  6.   

    我去掉了变量的static,在自定义空间里面新生成的form的值好像就没办法传过来了,怎么办
      

  7.   


    找正规教程学习编程,不要靠自己乱蒙乱猜,不要靠什么 csdn 来学编程,那样你就算是在 csdn 混5年也学不会。
      

  8.   

    使用自定义控件难道你不限New一个独立的吗?
      

  9.   


    找正规教程学习编程,不要靠自己乱蒙乱猜,不要靠什么 csdn 来学编程,那样你就算是在 csdn 混5年也学不会。我现在还是学习但是毕设要用这个时间紧,我来寻求帮助的
      

  10.   

    我是new了一个独立的,但是在新的窗口里面,生成多个自定义控件,就会产生关联了
      

  11.   

    我在调用dll文件的时候,new自定义控件的,但是new出来的每一个,相互之前会一起变
      

  12.   

    public static int ST=1,Dir=1,LR=1,Tem,X=0,Y=0;//定义道岔
    public static int SD = 1, DS = 0;//双动 单锁
    public static string ID,ID2,ID3,ID4;//道岔名称
    public static int ZY=0;//征用标志
    public static int ab;改为属性如:
    public static int ab;
    改为 
    private int _ab;public int ab
    {
      get{ return _ab;}
      set {_ab=value;};
    }使用button调用自定义控件
    UserControl1 Control1 = new UserControl1();
    Control1.ab=0; //这样赋值
    this.Controls.Add(Control1);
      

  13.   

    因为我是在form里面,通过radiobutton给参数赋值,我做的是一个通用的控件,在窗口里面只是调用,这样的话就没法达到效果了吧
      

  14.   

    如果你确定new了新的,你就看看数据源取的是不是同一个地方,如果是的话就是你绑定的数据源问题
      

  15.   

    是不是想把radiobutton的值传给控件?是在同窗体,还是不同窗体?
      

  16.   

    是不是想把radiobutton的值传给控件?是在同窗体,还是不同窗体?
    对的,不是同窗,在控件的load时间里面弹出一个form,然后在form选radiobutton确定参数,传回给控件
      

  17.   

    radiobutton有特点吗吗,比如说:提取radiobutton.Text, 遍历一下窗体的控件,用Controls.GetType区别控件类型,如果满足条件等到自定义控件的初值
      

  18.   

    就是判断 radiobutton有没有选中..
      

  19.   

    去掉变量的static
      

  20.   

    首先不要随便滥用static 修饰,form 间通信需要使用对象的类型操作:class A...; A a[i]; ...; 
    &A -> objects [3] //记不清楚了,可能是可以用这个方式访问第三个对象的数据。具体情况需要查资料。
      

  21.   

    public static int SD = 1, DS = 0;//双动 单锁
    public static string ID,ID2,ID3,ID4;//道岔名称
    public static int ZY=0;//征用标志
    public static int ab;改为属性如:
    public static int ab;
      

  22.   

    public static int SD = 1, DS = 0;//双动 单锁
    public static string ID,ID2,ID3,ID4;//道岔名称
    public static int ZY=0;//征用标志
    public static int ab;
    更改改属性为
    如:
    public static int ab;
      

  23.   

    public static int ST=1,Dir=1,LR=1,Tem,X=0,Y=0;//定义道岔
    public static int SD = 1, DS = 0;//双动 单锁
    public static string ID,ID2,ID3,ID4;//道岔名称
    public static int ZY=0;//征用标志
    public static int ab;改为属性如:
    public static int ab;
    改为 
    private int _ab;public int ab
    {
      get{ return _ab;}
      set {_ab=value;};
    }使用button调用自定义控件
    UserControl1 Control1 = new UserControl1();
    Control1.ab=0; //这样赋值
    this.Controls.Add(Control1);