我需要获取数组的内容,并在单击按钮时将它们放到消息框中。当用户点击添加按钮时,数字被加载到数组中,并且它的其他功能也很好。但是,当单击显示按钮时,它会弹出一个消息框,但它只是读取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());
}
}
}
答案 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);