上の画像はプログラムの外観です
上の 4 つのボタンは、次のように 2 次元配列に配置されています。
private Button[,] btns;
public Form1()
{
InitializeComponent();
btns = new Button[,] { { button2 , button1 },
{ button4 , button3 }};
}
4 つのボタンが
foreach (var btn in btns)
{
btn.Enabled = false;
}
そして、私がしたいのは、下の2つのボタンをクリックすると、その行の各ボタンが有効になり、色が署名されます(Connect 4ゲームのように赤と青が順番に)
私は問題の半分を解決することができましたが、行1ボタンをクリックすると行2も有効になり、行2ボタンをクリックすると行1から有効になり始めます
各ボタンが 2 次元配列を処理するように制限して、正しい行のみを有効にする方法を教えてください。
ここに完全なコードがあります
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
private Button[,] btns;
public Form1()
{
InitializeComponent();
btns = new Button[,] { { button2 , button1 },
{ button4 , button3 }};
}
private void Form1_Load(object sender, EventArgs e)
{
foreach (var btn in btns)
{
btn.Enabled = false;
}
}
int cc = 0;
private void button5_Click(object sender, EventArgs e)
{
foreach (var btn in btns)
{
if (!btn.Enabled)
{
btn.Enabled = true;
if (cc == 0)
{
cc = 1;
btn.BackColor = Color.Red;
}
else
{
cc = 0;
btn.BackColor = Color.Blue;
}
return;
}
}
}
private void button6_Click(object sender, EventArgs e)
{
foreach (var btn in btns)
{
if (!btn.Enabled)
{
btn.Enabled = true;
if (cc == 0)
{
cc = 1;
btn.BackColor = Color.Red;
}
else
{
cc = 0;
btn.BackColor = Color.Blue;
}
return;
}
}
}
}
}
解決した
この問題は解決され、これが私が解決した方法です:
private void button5_Click(object sender, EventArgs e)
{
Button[] row1 = new Button[] {button2, button1};
foreach (var roww1 in row1)
{
if (!roww1.Enabled)
{
roww1.Enabled = true;
if (cc == 0)
{
cc = 1;
roww1.BackColor = Color.Red;
}
else
{
cc = 0;
roww1.BackColor = Color.Blue;
}
return;
}
}
}