在类中使用文本框

时间:2010-11-18 02:31:57

标签: c# textbox

因此,对于编码项目,我需要创建一个奥赛罗游戏。现在我正在尝试自己完成大部分工作。基本上是想重新学习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网格框。我在一个名为board的类中有这个。它不会让我在这里使用这些文本框。

我收到此错误:错误1无法通过嵌套类型“WindowsFormsApplication1.Form1.board”访问外部类型“WindowsFormsApplication1.Form1”的非静态成员

任何想法或想法如何使我更容易做到这一点?

2 个答案:

答案 0 :(得分: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);
    

    通过这种方式,您可以轻松地在更高级别修改电路板的尺寸。

  • 如果您必须使用可能更容易实现交互的文本框,则需要以相同的嵌套 - for方式动态创建它们,尽管您创建了TextBox在飞行中,例如:

    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事件。

答案 1 :(得分: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, ....}
            };
        }
    }
}