回 帖 发 新 帖 刷新版面

主题:动态调用的问题

各位高手帮助我一下。我的程序是这样的。主界面有一个空白面板,面板里什么都没有,通过点击一些按钮或者菜单添加一些已经写好的控件。可是我在添加的时候想判断现在面板里有没有这个控件。有的话就不添加了,直接显示相应的控件。但是代码编译不过去。因为编译的时候面板里面是没有控件的。应该怎么解决这种问题?

回复列表 (共6个回复)

沙发

直接用面板装载控件,然后切换面板Visible属性比较方便。

板凳

面板没有初始化?

3 楼

谢谢两位的回复.其实用visible和用show()  hide() 没有本质的区别.我的意思是面板编译的时候没有空件.是在执行的过程中动态加载的.也可以说执行代码的时候不知道面板中有没有控件,只是用代码检查现在面板中有没有这个控件的实例,如果有的话就显示,没有的话就动态添加.那么我的代码应该写在那里?怎么写呢?我在自定义面板类的时候写了一个方法,但是编译不过去.希望个位给小弟解释一下应该怎么写.不胜感激!

4 楼

用this.Controls.Coun判断你窗口上的控件数,就能知道该不该在新添加控件了

5 楼

//添加一个BUTTON
private void button1_Click(object sender, EventArgs e)
        {
System.Windows.Forms.Button button2 = new System.Windows.Forms.Button();
            button2.Location = new System.Drawing.Point(150, 62);
            button2.Name = "button2";
            button2.Size = new System.Drawing.Size(75, 23);
            button2.TabIndex = 1;
            button2.Text = "button2";
            button2.UseVisualStyleBackColor = true;
            this.Controls.Add(button2);
        }
要判断是否已经加载就设个BOOL变量什么的
如果你的意思是加载自己已经定义好的一个控件:

System.Windows.Forms.Button button2;

private void button1_Click(object sender, EventArgs e)
        {
            add();
            this.Controls.Add(button2);
        }
        private void add()
        {
            button2.Location = new System.Drawing.Point(150, 62);
            button2.Name = "button2";
            button2.Size = new System.Drawing.Size(75, 23);
            button2.TabIndex = 1;
            button2.Text = "button2";
            button2.UseVisualStyleBackColor = true;
        }

6 楼

非常感谢几位的帮助!问题已经解决。谢谢!再次致谢!

我来回复

您尚未登录,请登录后再回复。点此登录或注册