C#使用文本框向数组添加值

时间:2015-03-22 16:53:00

标签: c# arrays

我有一个数组,我不想填充文本框,比如javascript .push()方法。

到目前为止,这是我的代码:

namespace Assigment9
{
    public partial class Default : System.Web.UI.Page
    {
        double[] numbers = new double[5];

        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void addButton_Click(object sender, EventArgs e)
        {
            double number = Convert.ToDouble(numberTB.Text);

        }
    }

4 个答案:

答案 0 :(得分:1)

您需要将数字添加到您声明的数字数组

double[] numbers = new double[5];

现在你只是在addButton_Click中声明一个名为number的新变量而不用它做任何事情。

使用数字列表可能更容易。即

List<double> numbers = new List<double>();

然后在addButton_Click中添加数字

numbers.Add(mynumber);

你已经在类中声明了一个长度为5的数组,这意味着你需要声明一个索引变量并进行边界检查以确保在addButton单击后数组不满。 I.E一旦用户点击按钮超过5次。使用该列表可以避免这种努力。

如果用户在文本框中键入非数字值,则addButton_Click处理程序中也会出现异常。您还应该将其更改为double.TryParse。

public partial class Default : System.Web.UI.Page
{
    public List<double> numbers
    {
        get
        {
            var list = ViewState["mylist"];
            if (list == null) ViewState["mylist"] = new List<double>();
            return ViewState["mylist"] as List<double>;
        }             
    }

    protected void Page_Load(object sender, EventArgs e)
    {

    }

    protected void addButton_Click(object sender, EventArgs e)
    {
        string value;
        double number;

        value = numberTB.Text;
        if (Double.TryParse(value, out number)) numbers.Add(number);
        // you should display some sort of message if the value isnt a number...
    }
}

由于这是asp.net Web表单,您还需要在ViewState或Session中粘贴成员变量,否则列表或数组/任何内容将始终为空,因为Web表单不会自动为您保留成员变量值。

答案 1 :(得分:0)

我会这样:

        public partial class Default : System.Web.UI.Page
        {
            Collection<double> numbers = new Collection<double>();

            protected void Page_Load(object sender, EventArgs e)
            {

            }

            protected void addButton_Click(object sender, EventArgs e)
            {
                try
                {
                    double number = Convert.ToDouble(numberTB.Text);
                    numbers.Add(number);

                }
                catch (FormatException) {
                Console.WriteLine("Unable to convert '{0}' to a Double.", number);
                }               
                catch (OverflowException) {
                Console.WriteLine("'{0}' is outside the range of a Double.", number);
                }

            }
        }

答案 2 :(得分:0)

我知道有很多方法可以获得相同的输出。它也是其中之一。

根据您的评论

  

我知道,但我希望能够为数字[0]添加内容,第二次点击按钮时应该为数字添加数字[1]等

以下是解决方案

namespace Assigment9
{
    public partial class Default : System.Web.UI.Page
    {
        double[] numbers = new double[5];
        int counter=0; // declare a global variable which will count the number of button clicks

        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void addButton_Click(object sender, EventArgs e)
        {
            if(counter <5)                
            {
             numbers[counter] = Convert.ToDouble(numberTB.Text);
             counter ++;
            }

        }
    }

答案 3 :(得分:0)

为什么要使用C#从服务器端TextBox组件加载List。我建议使用Javascript。

但是,如果您明确想要使用TextBox从c#代码加载列表,则应该使用Session作为实例,因为当您单击按钮时页面正在回发,因此初始化列表将被重置。

这是结果代码:

    protected void Page_Load(object sender, EventArgs e)
    {
        if(!Page.IsPostBack)
        {
            List<double> numbers = new List<double>();
            Session["numbers"] = numbers;
        }  
    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        if (Session["numbers"] != null)
        {
            List<double> numbersResult = Session["numbers"] as List<double>;
            double number = Convert.ToDouble(TextBox1.Text);
            numbersResult.Add(number);
            Session["numbers"] = numbersResult;
        }
    }