2010-11-18 115 views
1

因此,对于编码项目,我需要创建一个“黑白棋”游戏。现在我正在尝试自己做大部分工作。基本上试图重新学习C#。我只是想创建一个董事会。现在我使用的是文本框,B代表黑色,W代表白色。在课堂上使用文本框

我的问题是试图创建我的板类。

我在这里的代码:

private TextBox[,] textboxes; 
public board() 
{ 
    textboxes = new TextBox[,] { 
     {textBox1,textBox2,textBox3,textBox4,textBox5,textBox6,textBox7,textBox8}, 
     {textBox11,textBox12,textBox13,textBox14,textBox15,textBox16,textBox17,textBox18}, 
     {textBox21,textBox22,textBox23,textBox24,textBox25,textBox26,textBox27,textBox28}, 
     {textBox31,textBox32,textBox33,textBox34,textBox35,textBox36,textBox37,textBox38}, 
     {textBox41,textBox42,textBox43,textBox44,textBox45,textBox46,textBox47,textBox48}, 
     {textBox51,textBox52,textBox53,textBox54,textBox55,textBox56,textBox57,textBox58}, 
     {textBox61,textBox62,textBox63,textBox64,textBox65,textBox66,textBox67,textBox68}, 
     {textBox71,textBox72,textBox73,textBox74,textBox75,textBox76,textBox77,textBox78}}; 
} 

这将创建一个箱子8X8格。我在一个名为板子的课上有这个。它不会让我在这里使用这些文本框。

我得到这个错误:错误1无法访问外型“WindowsFormsApplication1.Form1”通过嵌套类型“WindowsFormsApplication1.Form1.board”

任何想法或想法如何使这个的非静态成员那么我更容易做到这一点?

回答

1

显然书写的文本框一样,是不是一个好的选择=)

的选择是:

  • 创建PictureBox和处理其Paint事件,并用它绘制.NET的强大Graphics对象;你会得到很酷的方法,如DrawRectangle()DrawEllipse()。示例代码片段:

    int GridHeight = 50, GridWidth = 50; 
    // draw the graph grid     
    for (int i = 0; i < 8; i++) 
        for (int j = 0; j < 8; j++) 
         g.DrawRectangle(Pens.Black, i * GridWidth, j * GridHeight, GridWidth, GridHeight); 
    

    这样可以轻松修改更高级别的电路板尺寸。

  • 如果必须使用文本框去,这可能是更容易实现与,则需要以上述相同的nested- for的方式动态地创建它们,虽然你动态创建TextBox ES,如互动:

    for (int i = 0; i < 8; i++) 
        for (int j = 0; j < 8; j++) 
        { 
         TextBox cell = new TextBox(); 
         cell.Top = i * GridHeight; 
         cell.Left = j * GridWidth; 
         cell.Click += new EventHandler(Cell_Click); 
         AllCells.Add(cell); 
        } 
    

    并相应地处理Cell_Click事件。

+0

Is AllCells是您定义的列表吗?在你的第一个例子中也是g这些Graphics对象之一吗?对不起,在这里学习新东西。 – 2010-11-18 05:04:07

+0

@Lewis刀具IIi;据推测,是的。 – BeemerGuy 2010-11-18 05:06:01

+0

请问这个清单好像是列表 AllCell = new List (); – 2010-11-18 05:11:09

1

我不认为使用文本框是一个好主意。但我缺乏这种经验。 所以....我只能给你一些程序上的建议。

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    class Board 
    { 
     private TextBox[,] textboxes; 

     public Board(Form1 form) 
     { 
      textboxes = new TextBox[,] 
      { 
       {form.textBox1, form.textBox2, ....} 
      }; 
     } 
    } 
}