5

我只是有一个关于 C# 列表的问题。在编程方面,我完全是个菜鸟,我真的很抱歉成为一个鸟脑子。我正在做一些练习编码,我正在创建一个简单的程序,允许用户通过 textbox1 输入名称,然后一旦他们按下按钮 1,名称将存储在一个列表中,并将在 textbox2 上输出。

我很难存储来自 textbox1 的数据。在网上查了一下,但我没有找到合适的文章来解决我的问题,所以我在这里试试运气。

对不起,我忘了提到我正在使用 Winforms。

非常感谢您的快速回复。

4

7 回答 7

2

假设winforms ...

  • 将 2 个列表和一个按钮拖放到您的设计器上。
  • 将按钮拖到您的设计器上
  • 双击您的按钮以自动创建事件
  • 在表单中的某处创建一个列表结构来存储列表
  • 在表单构造函数中实例化您的列表
  • button1_Click事件中将文本添加textbox1到列表中
  • 生成 1textbox2 的文本`

这是一个例子

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

namespace WindowsFormsApplication2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            list = new List<string>();
        }

        List<string> list;

        private void button1_Click(object sender, EventArgs e)
        {
            list.Add(textBox1.Text);


            string txt = "";
            foreach(string s in list)
            {
                txt += s + " ";
            }
            textBox2.Text = txt;
        }
    }
}
于 2013-02-27T22:48:01.050 回答
1

类似的东西?

string name = Textbox1.Text;
ListBox1.Add(name);
于 2013-02-27T22:49:01.953 回答
1

如果您使用传统的 Windows 窗体应用程序;我不确定您是否打算将数据存储在另一个文本框中。但是列表框可能更符合您的目标。

  1. 将以下内容:文本框、第二个文本框、列表框和按钮从工具箱拖到您的表单中。
  2. 随心所欲地调整它们,将它们视为绘画的画布。
  3. 一旦它看起来像你想要的那样配置,双击按钮。

此时 Visual Studio 将离开设计器视图并进入代码视图。这样你就可以看到代码了。它会自动将您置于 Button 代码块中。

这些块非常重要,随着您的进步,您会注意到 C# 的结构。

private void button1_click(object sender, EventArgs e)
{
     // Logic to add will go in here.
}

这是什么意思?

  • Private :是修饰符,表示仅限于该类。
  • Void:表示它不要求返回类型。
  • button1_click:这是按钮的名称,您可以在其属性中更改它。将组件命名在前面是一种很好的做法,这样您就知道自己在使用什么。

整个区块是一个事件。所以当它被点击时,它会执行一个动作。这就是它的意思;所以这是您实现目标的地方:

private void btnAddToList_Click(object sender, EventArgs e)
{
       // Test to ensure it isn't null.
       if(txtAddText.Text != String.EmptyOrNull)
       {
            // Declare a variable with the initial textbox value.
            string txtVar = txtAddText.Text;

            // Has the second textbox inherit value from other Textbox.
            txtNewText = txtVar

           // Now Add it to a Listbox.
           lstContainer.Items.Add(txtAddText.Text + DateTime.Now());
       }

       else 
       {
            // Null or Empty Character, Error Message.
            MessageBox.Show("Invalid Entry, please enter a valid entry");
       }
}

这将提供基础知识,但正如您从其他示例中看到的那样,它们的做法不同。如果您不小心,您会注意到这种逻辑中可能存在错误。您将学习根据您配置的结构来识别它。

希望这是有帮助的,而且看起来很多其他人也为你做了一些很棒的帖子。

快乐编码。

于 2013-02-27T23:08:10.993 回答
0

在 button1 点击监听器中(如果你没有这个钩子进入 GUI builder 视图并双击按钮,它将自动为你创建和注册监听器),添加以下代码;

  textbox2.Text = textbox1.Text; // set tb2 = tb1
  textbox1.Text = System.String.Empty; // clear tb1

现在,在您的帖子中,您说将数据存储在列表中,但您没有指定用户如何输入该数据,因此很难给您一个具体的答案。如果名称用逗号分隔以获得包含所有名称的数组,您可以简单地执行;

  string[] names = textbox1.Text.Split(',');

但是,从您的帖子来看,您似乎根本不想将数据存储在列表中。如果您只想在单击输入按钮时textbox1显示输入textbox2,请使用第一个代码段。如果您走第二条路线,则必须将数组转换回单个字符串。这可以通过 for 循环轻松完成。

 string result = System.String.Empty;
 for (int i = 0; i < names.Length; i++)
      result = result + names[i] + " ";

textbox2显示里面有什么,textbox1显示名字的数量;

  textbox2.Text = textbox1.Text; // set tb2 = tb1
  string[] names = textbox1.Text.Split(','); // i use a comma but use whatever
  // separates the names might just want ' ' for whitespace
  textbox1.Text = System.String.Empty; // clear tb1
  MessageBox.Show("You entered " + names.Count.ToString() + " names."); // show the names count
于 2013-02-27T22:48:18.783 回答
0

这很简单。

    List<string> mylist=new List<string>();
    mylist.Add(textbox1.Text);
    textbox2.Text=mylist[mylist.Count - 1]

首先,您创建一个字符串对象列表。然后将 textbox1 中的文本添加到列表的末尾。然后通过获取列表的长度并减去 1 来获取您从列表中添加的最后一个元素,因为在 C# 集合中是基于 0 的,并且第一个元素是 [0] 而不是 [1]。

于 2013-02-27T22:53:53.480 回答
0

你可以使用这样简单的东西:

private void button1_Click_1(object sender, EventArgs e)
{
     string[] names = textBox1.Text.Split(new string[] { " ", Environment.NewLine, "," }, StringSplitOptions.RemoveEmptyEntries);
     //you can add more parameters for splitting the string
     textBox2.Text = string.Join(",", names);
     //you can replace the comma with something more suitable for you
}

第一行将您在 textBox1 中输入的字符串(因此名称由换行符、空白字符或逗号分隔)拆分为字符串数组(而不是您请求的列表),第二行将字符串连接成一个大字符串分隔的名称用逗号将其放入 textBox2

于 2013-02-27T22:55:10.203 回答
0
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace ShowAllSaveNameAndCountApp
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        List<string> ourList=new List<string>();


        string txt =" ";
        private void buttonSave_Click(object sender, EventArgs e)
        {
            ourList.Add(textBoxEntryName.Text);



            foreach (string s in ourList)
            {
                txt+= s+ "\n ";


            }
            textBoxEntryName.Clear();

           ourList.Clear();


        }



        private void buttonShowAllName_Click(object sender, EventArgs e)
        {
            textBoxShowName.Text = txt;
        }
    }
}
于 2017-07-29T16:18:40.807 回答