| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 872 人关注过本帖
标题:怎么操作代码创建的控件?
只看楼主 加入收藏
卡巴斯
Rank: 2
等 级:论坛游民
帖 子:50
专家分:31
注 册:2012-12-18
结帖率:100%
收藏
已结贴  问题点数:5 回复次数:10 
怎么操作代码创建的控件?
使用代码创建的控件,要怎么对创建的控件进行操作?比如我将一个控件在代码创建时的enabled设为false,现在想通过另一个按钮的点击来使这个控件有效,要怎么做?
搜索更多相关主题的帖子: false enabled 
2013-04-05 13:32
yhlvht
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:36
帖 子:707
专家分:4405
注 册:2011-9-30
收藏
得分:0 
控件名.Enabled = true;
2013-04-05 14:05
卡巴斯
Rank: 2
等 级:论坛游民
帖 子:50
专家分:31
注 册:2012-12-18
收藏
得分:0 
回复 2楼 yhlvht
控件是用代码创建的,控件名也是代码添加的,这样的该怎么整啊?直接输入控件名编译器提示错误啊
2013-04-05 18:40
yhlvht
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:36
帖 子:707
专家分:4405
注 册:2011-9-30
收藏
得分:0 
那控件对象取得到的吧,控件引用.Enabled = true;
2013-04-05 19:57
卡巴斯
Rank: 2
等 级:论坛游民
帖 子:50
专家分:31
注 册:2012-12-18
收藏
得分:0 
回复 4楼 yhlvht
我把代码贴上来,帮忙看下吧
创建控件代码
程序代码:
private void Form1_Load(object sender, EventArgs e)
        {
            FlowLayoutPanel flp = new FlowLayoutPanel();
            flp.Width = 330;
            flp.Dock = DockStyle.Left;
            for (int i = 0; i < 9;i++ )
            {  
                Button but = new Button();
                but.Height =but.Width= 100;
                but.Name = "button" + i.ToString();
                but.Enabled = false;
                but.Click += new EventHandler(but_Click);
                flp.Controls.Add(but);
            }
            this.Controls.Add(flp);
            this.Width = 410;
            this.Height = 360;
        }
这是我想修改状态的代码,不知道为什么不行
程序代码:
private void 开始游戏ToolStripMenuItem_Click(object sender, EventArgs e)
        {

            foreach (Control ctr in this.Controls)
            {
                if (ctr is Button)
                {
                    label1.Text = (++i).ToString();
                    ctr.Enabled = true;
                }
            }
        }

2013-04-05 21:44
jxr0345
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2013-4-5
收藏
得分:0 
学习一下。
2013-04-05 22:34
yhlvht
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:36
帖 子:707
专家分:4405
注 册:2011-9-30
收藏
得分:0 
foreach (Control ctr in this.Controls)
{
    if (ctr is Button)
    {
        label1.Text = (++i).ToString();
        ctr.Enabled = true;
    }
}
你的Button是在FlowLayoutPanel里面的,这样循环this.Controls,只能循环到FlowLayoutPanel,你要再次循环FlowLayoutPanel,才能从里面取出button,然后ctr.Enabled = true;就可以了,不用强转为button类型

[ 本帖最后由 yhlvht 于 2013-4-6 00:58 编辑 ]
2013-04-06 00:39
yhlvht
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:36
帖 子:707
专家分:4405
注 册:2011-9-30
收藏
得分:0 
foreach (Control ctr in this.Controls)
{
    if (ctr is FlowLayoutPanel && ctr.Controls.Count > 0)
    {
        foreach (Control ctr1 in ctr.Controls)
        {
            ctr1.Enabled = true;
        }
    }
}
简单修改一下就是这样,但其实应该用递归,比如窗体里面控件非常多,且有各种类型,各种控件包含控件,不用递归就没办法写下去了
2013-04-06 01:05
卡巴斯
Rank: 2
等 级:论坛游民
帖 子:50
专家分:31
注 册:2012-12-18
收藏
得分:0 
回复 8楼 yhlvht
那怎么使用递归啊?版主给个例子吧?
2013-04-06 12:23
yhlvht
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:36
帖 子:707
专家分:4405
注 册:2011-9-30
收藏
得分:5 
还是你的这个案例,我用了另外一个button去调用写好的递归方法,当然你肯定是用"开始游戏ToolStripMenuItem_Click"事件去调用了
图1:点击button前,即调用递归方法前窗体的样子
图2:代码
图3:效果
图片附件: 游客没有浏览图片的权限,请 登录注册

图片附件: 游客没有浏览图片的权限,请 登录注册

图片附件: 游客没有浏览图片的权限,请 登录注册
2013-04-06 13:02
快速回复:怎么操作代码创建的控件?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.013782 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved