C# 随机按钮外观不工作
警告,我对C#很陌生。无论如何,我有一个随机发生器,它可以选择一个数字,如果选择了数字x,那么我的x按钮就会出现,并且重复。然而,这有时有效,有时无效。我的意思是一个按钮应该是button1.Visible=真的,但当我点击另一个按钮时,按钮1应该消失,而另一个按钮必须出现,我需要它在只有一个按钮可见的情况下工作,但有时一个按钮根本不可见。真奇怪 这里有一个按钮点击:C# 随机按钮外观不工作,c#,winforms,C#,Winforms,警告,我对C#很陌生。无论如何,我有一个随机发生器,它可以选择一个数字,如果选择了数字x,那么我的x按钮就会出现,并且重复。然而,这有时有效,有时无效。我的意思是一个按钮应该是button1.Visible=真的,但当我点击另一个按钮时,按钮1应该消失,而另一个按钮必须出现,我需要它在只有一个按钮可见的情况下工作,但有时一个按钮根本不可见。真奇怪 这里有一个按钮点击: private void A_Click(object sender, EventArgs e) { if (ao.V
private void A_Click(object sender, EventArgs e)
{
if (ao.Visible == true)
{
ao.Visible = false;
Random rnd = new Random();
int y = rnd.Next(1, 7);
if (y == 1)
{
eo.Visible = true;
}
if (y == 2)
{
ao.Visible = true;
}
if (y == 4)
{
dd.Visible = true;
}
if (y == 5)
{
go.Visible = true;
}
if (y == 6)
{
eeo.Visible = true;
}
// timer1.Stop();
timer1.Start();
label1.Text = "Correct";
}
else
{
label1.Text = "Incorrect";
}
按钮A是可见的,它将转到我刚刚粘贴的事件,使其不可见,并使另一个可见。有时什么也看不见。不是很确定代码中的所有内容,但似乎一次只希望其中一个按钮可见。如果是,则执行以下操作:
public partial class Form1 : Form
{
private Random rnd = new Random();
private List<Button> buttons = new List<Button>();
public Form1()
{
InitializeComponent();
buttons.Add(ao);
buttons.Add(eo);
buttons.Add(dd);
buttons.Add(go);
buttons.Add(eeo);
}
private void A_Click(object sender, EventArgs e)
{
int y = rnd.Next(buttons.Count);
for (int i = 0; i < buttons.Count; i++ )
{
buttons[i].Visible = (i == y);
}
}
}
公共部分类表单1:表单
{
私有随机rnd=新随机();
私有列表按钮=新建列表();
公共表格1()
{
初始化组件();
按钮。添加(ao);
按钮。添加(eo);
按钮。添加(dd);
按钮。添加(go);
按钮。添加(eeo);
}
私有void A_单击(对象发送方,事件参数e)
{
int y=rnd.Next(按钮数);
对于(int i=0;i
在您的描述中,您说希望按钮再次消失,但您永远不会再次将可见
设置为false。在这种情况下,我实际上不会使用开关
class RandomButtonForm : Form
{
private Random rng;
private List<Button> buttons;
public RandomButtonForm()
{
this.rng = new Random();
this.buttons = new List<Button>();
this.AddButton(10, 10, "Button 1");
this.AddButton(110, 10, "Button 2");
this.AddButton(210, 10, "Button 3");
}
public AddButton(int x, int y, string text)
{
Button button = new Button();
button.Visible = false;
button.X = x;
button.Y = y;
button.Text = text;
this.buttons.Add(button);
this.Controls.Add(button);
}
private void A_Click(object sender, EventArgs e)
{
int r = this.rng.Next(this.buttons.Count);
for (int b = 0; b < this.buttons.Count; b++)
{
this.buttons[b].Visible = (b == r);
}
}
}
这意味着,如果值为1,则按钮不仅会显示,如果值不是1,则按钮会隐藏,从而允许您反复按下“go”按钮
这个例子还包括一些其他有用的东西,比如一个
列表
,并自动为您的随机设置使用该列表的计数,如果您需要更改按钮的数量,则可以更轻松地进行维护。那么y==3
?这就是为什么我警告您我是新来的。非常感谢你,哈哈。。。编辑:它仍然不起作用,新的不是一个有效的借口。。无论如何当你调试它而不是仅仅运行它时会发生什么。。?另外,您的代码中的计时器的作用是什么。。?另外,为什么不重构该代码以利用switch()case{}
在比较这样一个值时,一定要考虑使用switch语句<代码>随机。下一个(int a,int b)
在b上是独占的。在下一步(1,7)
中,你永远不应该得到7。
ao.Visible = (y == 1);
// (y == 1) is either true or false.