C#Winform,新手求大神帮忙看看什么问题

z905260859 2017-04-08 02:36:42
点击运行后,只有一个button控件变黄色,是什么问题呢?
但是我把addWall方法里的MessageBox.Show(num.ToString())取消注释后,就能实现10个butten变色。
请问怎么改呀?


我把addWall方法里的MessageBox.Show(num.ToString())取消注释或者删除后可以实现


加上或者我删除就不能实现了,只会出现一个button变黄色
...全文
965 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
texplore 2017-07-09
  • 打赏
  • 举报
回复
应该是生成随机数出现了问题。新建一个WinFrom试验了一下,代码如下:
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;

namespace HoverTreeForms
{
public partial class HewenqiForm : Form
{
List<Button> _btnList = new List<Button>();
public HewenqiForm()
{
InitializeComponent();
NewWall();
}

void NewWall()
{
for (int i = 0; i < 315; i++)
{
Button h_btn = new Button();
h_btn.Size = new Size(40, 40);
h_btn.BackColor = Color.Green;
h_btn.Tag = i.ToString();
h_btn.Click += Btn_Click;
_btnList.Add(h_btn);
flowLayoutPanel1.Controls.Add(h_btn);
}
AddWall();
foreach (Control c in flowLayoutPanel1.Controls)
{
c.Margin = new Padding(-1);
}
}

private void Btn_Click(object sender, EventArgs e)
{
MessageBox.Show(((Button)sender).Tag.ToString());//点击会显示第几个按钮 by HoverTree
}

void AddWall()
{
int h_num = 0;
Random h_random = new Random();//参考 http://hovertree.com/h/bjag/ttoqk342.htm
for (int i = 0; i < 10; i++)
{
h_num = h_random.Next(2, 315);
_btnList[h_num].BackColor = Color.Yellow;
}
}
}
}

效果图:
G-Sheep 2017-06-05
  • 打赏
  • 举报
回复
引用 4 楼 yyxhgy 的回复:
static void Main(string[] args)
        {
            for (int i = 0; i < 10; i++)
            {
                var a = new Random();
                Console.WriteLine(a.Next(2,315));
            }
            Console.ReadLine();
        }
static void Main(string[] args)
        {
            var a = new Random();
            for (int i = 0; i < 10; i++)
            {
                Console.WriteLine(a.Next(2,315));
            }
            Console.ReadLine();
        }
你跑下这两段代码你就懂了,同意1楼
yyxhgy 2017-05-08
  • 打赏
  • 举报
回复
static void Main(string[] args)
        {
            for (int i = 0; i < 10; i++)
            {
                var a = new Random();
                Console.WriteLine(a.Next(2,315));
            }
            Console.ReadLine();
        }
static void Main(string[] args)
        {
            var a = new Random();
            for (int i = 0; i < 10; i++)
            {
                Console.WriteLine(a.Next(2,315));
            }
            Console.ReadLine();
        }
你跑下这两段代码你就懂了,同意1楼
小猫阿尤 2017-04-28
  • 打赏
  • 举报
回复
断点判断下 每次的num是不是都是一样的
j34jyj94ksigj4j 2017-04-08
  • 打赏
  • 举报
回复
MessageBox.Show会阻塞线程,弹出之后,在关闭它之前,后面的语句都没法执行,可以用一个label来显示提示信息
zj_zwl 2017-04-08
  • 打赏
  • 举报
回复
把New Random放在循环体外

17,740

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET Framework
社区管理员
  • .NET Framework社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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