我正在编写 crossWord 程序 首先,用户必须输入一个数字 "n" ,并创建一个 * n 表,其中包含白色和空白的 TextBoxes。建好表格后,用户点击几个房子,房子的背景颜色变成黑色。
我的问题是在此步骤之后,黑色的文本框有多少,白色的文本框有多少,如何检测水平或垂直列中没有任何黑色的连续白色文本框的最大数量,以粘贴匹配的单词给他们!
在上表中,表单必须检测到第二个水平行或第二个垂直行中白色连续文本框的最大值为 5,用户填写后必须在第一行中显示 4 为最大值,然后继续结束...
这是我的代码片段:
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的物品!