一个页面我拉入了几个用户控件:
在网页的page-load里:        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                 usercontrol1.min=1;
                 usercontrol1.max=10;
                 
                 usercontrol2.isok=usercontrol1.isok;//控件2必须依赖于控件1的load事件里设定的isok值。
            }
        }

解决方案 »

  1.   

    控件2“必须”依赖于控件1?那么你为什么不在控件2里边嵌入控件1呢?如果控件1和2都是独立自主的,它们在设计时就没有什么“必须依赖”关系。这个让它们相互依赖的职责是你的页面,而不是控件自己。通常这个页面代码就会这样写        protected void Page_Load(object sender, EventArgs e)
            {
                if (!Page.IsPostBack)
                {
                     usercontrol1.min=1;
                     usercontrol1.max=10;
                }
                usercontrol1.isokChanged+= setIsok;  
            }        void setIsok(object sender, EventArgs e)
            {
                usercontrol2.isok=usercontrol1.isok;
            }
            也就是说,你首先需要为控件2定义一个public event EventHandler isokChanged,当那个属性改变时触发事件;然后页面负责执行将控件2的属性赋值给控件1的属性的职责。
      

  2.   

    补充:
    控件2在他自己的load事件里要用到isok的值。
      

  3.   

    你首先需要为控件2定义一个public event  -->  你首先需要为控件1定义一个public event然后页面负责执行将控件2的属性赋值给控件1  -->  然后页面负责执行将控件1的属性赋值给控件2
      

  4.   

    可是很多的控件都会依赖于1个变量,而每个控件都会修改这个变量,委托可以解决吗?
    我开始时是想让网页作为中介,传递变量的,可是.net的控件事件顺序搞得我头大。
      

  5.   

    当你设计控件2,isok属性是独立,任何时间它被设置的新的值就应该控制控件2的状态改变。而不是什么在控件2的Page_Load中来设置。你对asp.net组件的设计思路有问题。不要以为什么代码都在Page_Load中执行。许多有用的代码不是在Page_Load中执行的。控件2的isok显然不是在Page_Load中控制的。
      

  6.   

    你的意思应该是在各个控件和网页load后,才进行交互吧。可能我太在意效率了,我本来是希望page-load一次完成,而不是在page-load后,再根据需要重新进行一次类似load的操作。