none
请教一个关于自定义控件的问题 RRS feed

  • 问题

  • 在控件刚刚被拖到Form上,和Form上已经有了控件只是Form刚刚在设计模式中“查看设计器”方式打开form这两种情况有什么样的属性来区分开来吗?
    不知道我这样描述准确不准确。
    业精于勤,荒于嬉,行成于思,毁于随。
    2009年8月22日 7:31

答案

  • 你好!
         我明白你的意思了,常规方法很难区分,我尝试了这个方法,但是失败了,我估计是重新打开设计器的需要重新构造一个新的实例:
        public class MyUserControl : UserControl
        {
            private bool IsFirstLoad = true;
            public MyUserControl()
            {
                this.Load += new EventHandler(MyUserControl_Load);
            }
    
    
            void MyUserControl_Load(object sender, EventArgs e)
            {
                if (IsFirstLoad)
                {
                    MessageBox.Show("First Load");
                    IsFirstLoad = false;
                }
                else
                    MessageBox.Show("No First Load");
    
    
            }
        }


    周雪峰
    2009年8月22日 10:48
    版主
  • 如果你的意思发周雪峰所述,那么是没有直接的办法处理的。你可以尝试生成临时文件来记录 Form1 在设计模式下加载的情况
    知识改变命运,奋斗成就人生!
    2009年8月22日 11:14
    版主

全部回复

  • 不太明白你的意思,请再详细描述一下!
    知识改变命运,奋斗成就人生!
    2009年8月22日 7:51
    版主
  • 首先,都是在设计模式中。 比如说我现在把我自定义的控件1从左边工具栏上拖到窗体Form1上这一种情况, 现在窗体Form1上已经有了控件1了,我把窗体Form1的设计器关掉,然后再打开Form1这是第二种情况。 这两种情况都会触发控件1的Load事件,有没有办法能把这两种情况区分出来。这样讲能表达清楚了吗? 谢谢。
    业精于勤,荒于嬉,行成于思,毁于随。
    2009年8月22日 9:08
  • 你应该是要判断是否为设计模式吧
    if (DesignMode)
    {
        // 设计模式
    }


    知识改变命运,奋斗成就人生!
    2009年8月22日 9:13
    版主
  • 你好!
         我明白你的意思了,常规方法很难区分,我尝试了这个方法,但是失败了,我估计是重新打开设计器的需要重新构造一个新的实例:
        public class MyUserControl : UserControl
        {
            private bool IsFirstLoad = true;
            public MyUserControl()
            {
                this.Load += new EventHandler(MyUserControl_Load);
            }
    
    
            void MyUserControl_Load(object sender, EventArgs e)
            {
                if (IsFirstLoad)
                {
                    MessageBox.Show("First Load");
                    IsFirstLoad = false;
                }
                else
                    MessageBox.Show("No First Load");
    
    
            }
        }


    周雪峰
    2009年8月22日 10:48
    版主
  • 如果你的意思发周雪峰所述,那么是没有直接的办法处理的。你可以尝试生成临时文件来记录 Form1 在设计模式下加载的情况
    知识改变命运,奋斗成就人生!
    2009年8月22日 11:14
    版主
  • 语言描述不清楚的话  只能发代码看看
    2009年8月22日 11:21
  • 那textbox是通过什么方式能够在刚拖到窗体上的时候把Text属性赋值为跟name相同值的呢。
    业精于勤,荒于嬉,行成于思,毁于随。
    2009年8月29日 13:02
  • 那textbox是通过什么方式能够在刚拖到窗体上的时候把Text属性赋值为跟name相同值的呢。
    业精于勤,荒于嬉,行成于思,毁于随。

    您好,您现在在使用的是高级特性,根据设计规范的提示,我找到一个资料,您看看有没有帮助,请参考:http://msdn.microsoft.com/zh-cn/library/system.windows.forms.design.controldesigner.aspx
    2009年8月29日 13:38