winform中用变量来表示控件序号

weixin_42134684 2019-06-12 09:44:14
我在窗体中放置了多个timer.
timer1 timer2 timer3.....
我想能不能写成for循环的形式,类似于
for ( int i = 1; i <= 10; i++)
{
if (this.timer[i].Enabled == false)
{
this.Invoke(new MethodInvoker(delegate
{ this.timer[i].Start(); }));
}
}
我知道上面这样写是错的,想问问有没有办法用变量来表示多个timer?
...全文
119 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
是不是希望模仿vb的控件写法
weixin_42134684 2019-06-12
  • 打赏
  • 举报
回复
引用 8 楼 正怒月神 的回复:
[quote=引用 6 楼 weixin_42134684 的回复:]
[quote=引用 1 楼 正怒月神 的回复:]
写个例子。不知道你具体要干嘛
List<Button> btnList = new List<Button>(){
button1,button2
};
for (int i = 0; i < btnList.Count; i++)
{
if (btnList[i].Name == "button" + (i+1).ToString())
{
MessageBox.Show(btnList[i].Text);
}
}

感谢,timer和buton一样吗?[/quote]
差不多的,你照着改改就好了。[/quote]

嗯,结合2楼 lich2005 的建议,感觉您的已经非常到位了.马上去试试
正怒月神 2019-06-12
  • 打赏
  • 举报
回复
引用 6 楼 weixin_42134684 的回复:
[quote=引用 1 楼 正怒月神 的回复:] 写个例子。不知道你具体要干嘛
List<Button> btnList = new List<Button>(){
                button1,button2
            };
            for (int i = 0; i < btnList.Count; i++)
            {
                if (btnList[i].Name == "button" + (i+1).ToString())
                {
                    MessageBox.Show(btnList[i].Text);
                }
            }
感谢,timer和buton一样吗?[/quote] 差不多的,你照着改改就好了。
weixin_42134684 2019-06-12
  • 打赏
  • 举报
回复
引用 2 楼 lich2005 的回复:
可以用集合来做。

using System.Collections;

...

Timer[] timerArray = new Timer[2];
timerArray[0] = new Timer();
timerArray[1] = new Timer();

for (int i = 0; i < 2; i++)
{
//Console.WriteLine(timerArray[i].ToString());
}
..
这是比较简单的写法,专业编程最好用泛型集合来做,有兴趣可深入了解。

我手拖的timer.那我试试这种代码的
weixin_42134684 2019-06-12
  • 打赏
  • 举报
回复
引用 1 楼 正怒月神 的回复:
写个例子。不知道你具体要干嘛
List<Button> btnList = new List<Button>(){
button1,button2
};
for (int i = 0; i < btnList.Count; i++)
{
if (btnList[i].Name == "button" + (i+1).ToString())
{
MessageBox.Show(btnList[i].Text);
}
}

感谢,timer和buton一样吗?
weixin_42134684 2019-06-12
  • 打赏
  • 举报
回复
引用 4 楼 Water Lee 的回复:
如果你的控件在容器里,比如panel,那要递归来处理

有大神说:只有窗体控件(有句柄的)放在controls里。timer menu等组件不放的。
Water Lee 2019-06-12
  • 打赏
  • 举报
回复
如果你的控件在容器里,比如panel,那要递归来处理
Water Lee 2019-06-12
  • 打赏
  • 举报
回复
foreach(control c in this.contros) if(c is timer) 这里干你想干的
lich2005 2019-06-12
  • 打赏
  • 举报
回复
可以用集合来做。

using System.Collections;

...

Timer[] timerArray = new Timer[2];
timerArray[0] = new Timer();
timerArray[1] = new Timer();

for (int i = 0; i < 2; i++)
{
//Console.WriteLine(timerArray[i].ToString());
}
..
这是比较简单的写法,专业编程最好用泛型集合来做,有兴趣可深入了解。

正怒月神 2019-06-12
  • 打赏
  • 举报
回复 1
写个例子。不知道你具体要干嘛
List<Button> btnList = new List<Button>(){
                button1,button2
            };
            for (int i = 0; i < btnList.Count; i++)
            {
                if (btnList[i].Name == "button" + (i+1).ToString())
                {
                    MessageBox.Show(btnList[i].Text);
                }
            }

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧