C# windows窗体中的文本框到数组声明

Posted

技术标签:

【中文标题】C# windows窗体中的文本框到数组声明【英文标题】:Textbox to array declaration in C# windows form 【发布时间】:2013-05-31 18:29:42 【问题描述】:

您好,我是 C# 编程的新手,所以请多多包涵。我目前正在开发一个“简单”的小程序,它允许用户在同一个文本框中输入 25 个值,一旦完成,我希望能够在列表框中将这 25 个值显示为 5 的数组按 5 列行,我想找出数组中的最大数。

private void button1_Click(object sender, EventArgs e)

    int arrayrows = 5;
    int arraycolomns = 5;
    int[,] arraytimes;
    arraytimes = new int[array rows, array columns];

    // list_Matrix.Items.Add(tb_First.Text);
    for (int i = 0; i != 5; i++)
    
        for (int j = 0; j != 5; j++)
        
            array times [i,j]= Convert. To Int32(Tb_First.Text);
            list_Matrix.Items.Add(array times[i, j].To String());
        
    

这是我尝试在列表框中显示数组的方法,但它不起作用。这也使我无法转到下一部分来查找其中最大的数字。

【问题讨论】:

不要每次都针对完全相同的主题发布新问题,请改进您的第一个问题并在其中添加更多详细信息 如果你想要 5 行乘 5 列为什么int arrayrows = 2; int arraycolomns = 2; 您是否尝试过使用 string.Split 方法(虽然它会给您一个一维数组)来拆分您的 textBox.Text,然后将这些值添加到 listBox 中? 不,我还没有尝试过tat方法.. 完全同意@ShadowWizard。你在同一个话题上问了太多问题。 【参考方案1】:

您可以使用 .Split(' ') (或任何其他字符或字符串)拆分字符串。这将为您提供一个包含 25 个元素的一维数组(如果输入了所有内容)。将其转换为二维数组或网格的技巧是使用整数除法和模,以下代码将

String[] splitText = textBox.Text.Split(' '); //gets your 25-length 1D array

//make an empty grid with the right dimensions first
int[][] grid = new int[5][];
for (int i=0;i<5;i++) 
    grid[i] = new int[5];


//save our highest value
int maxVal = 0;
//then fill this grid
for (int i=0;i<splitText.Length;i++)
    int value = int.Parse(splitText[i]);
    //i%5 gives us values from 0 to 4, which is our 'x-coordinate' in the grid
    //i/5 uses integer division so its the same as Math.floor(i/5.0), giving us your 'y-coordinates'
    grid[i%5][i/5] = value;

    //check if this value is larger than the one that is currently the largest
    if (value > maxVal)
    
        maxVal = value;
           

这将使用拆分的文本框文本填充二维网格数组,如果文本框中没有足够的值,则会在这些单元格中留下 0。

最后你也会有你的最大价值。

【讨论】:

【参考方案2】:

尝试以下操作(通过将数字打印为字符串来显示)。并假设您按以下方式输入数字,

'1,2,3,4...'

string[] nums=txtBox.Text.Split(',');
lstBox.Items.Clear();
int colCount=5;
int colIndex=0;
string line="";
foreach(string num in nums)

   if(colIndex==colCount)
   
     lstBox.Items.Add(line);
     line="";
     colIndex=0;
   
   line+= line==""? num : " "+num;
   colIndex+=1;

if(line!="")
   lstBox.Items.Add(line);

确保纠正任何语法错误,并将参数名称更改为您自己的。

【讨论】:

【参考方案3】:
private void button1_Click(object sender, EventArgs e)
        
            int[] ab=new int[10];
            string s = textBox1.Text;
            int j = 0;


            string [] a = (s.Split(' '));
            foreach (string  word in a)
            
                ab[j] = Convert.ToInt32(word);
                j++;
            


            for (int i = 0; i < 10; i++)
            
                label2.Text +=ab[i].ToString()+" ";
            
        

【讨论】:

以上是关于C# windows窗体中的文本框到数组声明的主要内容,如果未能解决你的问题,请参考以下文章

在 c# 中使用文本框中的数据库值打开特定的 Windows 窗体

如何通过在 C# windows 窗体中的文本框中输入来更改图像的大小?

将 Windows 窗体列表框保存到文本文件 C#

从字符串文本框到十六进制 0x 字节 [] c# [重复]

如何在 Windows 窗体 C# 中为文本框设置 Scintilla

C# Winform如何打开指定的文件夹?