You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在button_click方法中使用TextBox数组生成对应行列的int数组?

我注意到你当前的代码里,textBox1和textBox2是构造函数内的局部变量,这意味着button1_Click方法根本访问不到它们——这是第一个要解决的问题。我们需要把这两个TextBox数组提升为类的成员变量,这样整个类的方法都能访问到。

接下来,在点击事件里,我们需要遍历每个TextBox的内容,把它转换成int类型,同时要处理用户可能输入非数字的情况(避免程序崩溃)。

下面是修改后的完整代码:

public partial class EnterColsAndRows : Form 
{
    // 把TextBox数组提升为类成员变量,让button_Click能访问
    private TextBox[] _columnTextBoxes;
    private TextBox[] _rowTextBoxes;
    
    public int width_of_nonogram; 
    public int height_of_nonogram; 

    public EnterColsAndRows(int width, int height) 
    {
        InitializeComponent(); 
        width_of_nonogram = width; 
        height_of_nonogram = height; 

        // 初始化列的TextBox数组
        _columnTextBoxes = new TextBox[width_of_nonogram]; 
        for (int i = 0; i < width_of_nonogram; i++) 
        {
            _columnTextBoxes[i] = new TextBox(); 
            _columnTextBoxes[i].Text = "Col " + (i + 1); 
            Point p = new Point(20, 30 * i); 
            _columnTextBoxes[i].Location = p; 
            this.Controls.Add(_columnTextBoxes[i]); 
        } 

        // 初始化行的TextBox数组
        _rowTextBoxes = new TextBox[height_of_nonogram]; 
        for (int i = 0; i < height_of_nonogram; i++) 
        {
            _rowTextBoxes[i] = new TextBox(); 
            _rowTextBoxes[i].Text = "Row " + (i + 1); 
            Point p = new Point(200, 30 * i); 
            _rowTextBoxes[i].Location = p; 
            this.Controls.Add(_rowTextBoxes[i]); 
        } 
    } 

    private void button1_Click(object sender, EventArgs e) 
    {
        // 生成列的int数组
        int[] columnValues = new int[width_of_nonogram];
        bool hasInvalidInput = false;

        for (int i = 0; i < _columnTextBoxes.Length; i++)
        {
            // 使用TryParse避免输入非数字时抛出异常
            if (int.TryParse(_columnTextBoxes[i].Text, out int value))
            {
                columnValues[i] = value;
            }
            else
            {
                // 处理无效输入,比如提示用户
                MessageBox.Show($"第{i+1}列的输入不是有效的整数!");
                hasInvalidInput = true;
                break;
            }
        }

        if (hasInvalidInput) return;

        // 生成行的int数组
        int[] rowValues = new int[height_of_nonogram];
        for (int i = 0; i < _rowTextBoxes.Length; i++)
        {
            if (int.TryParse(_rowTextBoxes[i].Text, out int value))
            {
                rowValues[i] = value;
            }
            else
            {
                MessageBox.Show($"第{i+1}行的输入不是有效的整数!");
                hasInvalidInput = true;
                break;
            }
        }

        if (!hasInvalidInput)
        {
            // 这里可以使用生成好的columnValues和rowValues数组做后续操作
            MessageBox.Show("行列数组生成成功!");
        }
    }
}

关键说明:

  1. 成员变量改造:把原来构造函数内的局部textBox1、textBox2改成类级别的_columnTextBoxes和_rowTextBoxes,这样点击事件方法就能访问到这些TextBox实例了。
  2. 输入验证:使用int.TryParse而不是直接int.Parse,这样当用户输入非数字内容时,不会抛出异常,而是友好提示错误。
  3. 数组生成逻辑:遍历每个TextBox,将有效输入存入对应的int数组,验证通过后就可以使用这两个数组进行后续的数独(Nonogram)逻辑处理了。

内容的提问来源于stack exchange,提问作者y47999

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:38:27