将数组的内容放在消息框中

时间:2012-09-20 20:39:24

标签: c# arrays

我需要获取数组的内容,并在单击按钮时将它们放到消息框中。当用户点击添加按钮时,数字被加载到数组中,并且它的其他功能也很好。但是,当单击显示按钮时,它会弹出一个消息框,但它只是读取0.这是代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Testscores.UI
{
    public partial class frmTestscores : Form
    {
        //creates the variables needed for the calculations
        int scores;
        double total = 0;
        int count = 0;
        int counts = 0;
        double average = 0;
        int[] sArray;


        public frmTestscores()
        {
            InitializeComponent();
        }
        //creates the exit button click event
        private void btnExit_Click(object sender, EventArgs e)
        {
            //exits the application
            Application.Exit();
        }
        //creates the clear button click event
        private void btnClear_Click(object sender, EventArgs e)
        {
            //clears all text fields and variables
            txtAverage.Text = "";
            txtCount.Text = "";
            txtScore.Text = "";
            txtTotal.Text = "";
            scores = 0;
            total = 0;
            counts = 0;
            average = 0;

        }
        //creates the add button click event
        private void btnAdd_Click(object sender, EventArgs e)
        {
            //creates the try and catch statements
            try
            {
                //does the calculations and outputs it into the text fields
                scores = int.Parse(txtScore.Text);

                counts += 1;
                total = total + scores;

                average = total / counts;
                    txtAverage.Text = average.ToString();
                    txtTotal.Text = total.ToString();
                txtCount.Text = counts.ToString();
                //initializes the array(this is where i get confused)
                int SIZE = counts;
                Array.Resize(ref sArray, SIZE);
                for (int count = 1; count > SIZE; count++)
                {

                   sArray[count] = scores;
                    //outputs the count to the text box
                    txtCount.Text = count.ToString();




                }
            }
                //catch statement
            catch (Exception ex)
            {
                //outsputs a message to the user
                MessageBox.Show("Please enter a valid number,");

            }
        }
        //creates the display button click event
        private void btnDisplay_Click(object sender, EventArgs e)
        {
            //supposed to output the array to a message box
            MessageBox.Show(sArray[].ToString());

        }
    }
}

3 个答案:

答案 0 :(得分:5)

您可以将数组中的各个字符串组合成一个字符串(例如使用string.Join方法),然后显示连接的字符串:

string toDisplay = string.Join(Environment.NewLine, sArray); 
MessageBox.Show(toDisplay);

答案 1 :(得分:0)

将您的显示点击事件处理程序更改为:

private void btnDisplay_Click(object sender, EventArgs e)
{
    string output = string.Empty;
    foreach (var item in sArray)
    {
        output += item + " ";
    }

    //supposed to output the array to a message box
    MessageBox.Show(output);
}

答案 2 :(得分:0)

是的,这不会输出整个数组。阅读ToString()的文档。它通常输出对象的typename,除非它在子类中被覆盖。

这样做的蛮力非常简单:

string output = new string();

for(int i = 0; i < sArray.Length; i++)
{
   output += sArray[i] // plus any delimiters or formating.
}

MessageBox.Show(output);