私は crossWord プログラムを書いています。最初に、ユーザーは数字 "n" を入力し、白色で空白の TextBox を持つ * n テーブルを作成する必要があります。テーブルを作成した後、ユーザーがいくつかの家をクリックすると、家の背景色が黒に変わります。
私の質問は、この手順の後で、黒色の TextBoxes の数、白色の TextBox の数、水平方向または垂直方向の列で黒のない連続した白いテキスト ボックスの最大数を検出して、一致する単語を貼り付けるにはどうすればよいですか?彼らへ!
上記の表では、フォームは、2 番目の水平行または 2 番目の垂直行で 5 が最大の白い連続したテキスト ボックスであることを検出する必要があります。
ここに私のコードスニペンがあります:
private void CreateCrossTable()
{
int count = Convert.ToInt32(textBox1.Text.Trim());
if (count > 10)
count = 10;
int x = 100, y = 100;
const int value = 100;
for (int i = 1; i <= count; i++)
{
for (int j = 1; j <= count; j++)
{
x = value + (j * 20);
TextBox tb = new TextBox();
tb.Name = "txtbox" + i + "-" + j;
tb.Location = new Point(x, y);
tb.Size = new System.Drawing.Size(20, 20);
tb.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.txtMouseDoubleClick);
Controls.Add(tb);
}
y = value + (i * 20);
}
}
private void txtMouseDoubleClick(object sender, MouseEventArgs e)
{
TextBox tb = (TextBox)sender;
tb.BackColor = Color.Black;
tb.Enabled = false;
tb.Text = "|";
}
だから、今私はLINQを使って次のようなすべての白いテキストボックスを取得します:
IEnumerable<TextBox> FreeItems = frm.Controls.OfType<TextBox>().Where(I => I.BackColor != Color.Black);
白人でXの場所の違いが20以下のアイテムを入手するにはどうすればよいですか。