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

従来のWindowsフォームアプリケーションを利用している場合。データを別のテキストボックスに保存するつもりだったのかわかりません。しかし、リストボックスはあなたの目標に沿っているかもしれません。

  1. 次のテキストボックス、2番目のテキストボックス、リストボックス、およびボタンをツールボックスからフォームにドラッグします。
  2. 好きなように調整し、絵画の帆布のように扱います。
  3. ボタンをダブルクリックする方法が設定されているように見えたら。

この時点で、VisualStudioはDesignerViewを終了し、CodeViewに入ります。したがって、コードを見ることができます。ボタンコードブロックに自動的に配置されます。

これらのブロックは非常に重要です。進行するにつれて、C#がどのように構造化されているかに気付くでしょう。

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

これは何を意味するのでしょうか?

  • プライベート:修飾子です。これは、このクラスに制限されていることを意味します。
  • 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 に答える
1

そんな感じ ?

string name = Textbox1.Text;
ListBox1.Add(name);
于 2013-02-27T22:49:01.953 に答える
0

button1クリックリスナー内(このフックがない場合は、GUIビルダービューに移動してボタンをダブルクリックすると、リスナーが自動的に作成および登録されます)、次のコードを追加します。

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

さて、あなたの投稿では、データをリストに保存すると言いますが、ユーザーがそのデータを入力する方法を指定していないため、具体的な答えを出すのは難しいです。名前がコンマで区切られている場合は、単純に実行できるすべての名前の配列を取得します。

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

ただし、あなたの投稿からは、データをリストに保存したくないようです。入力ボタンをクリックしたときに入力をtextbox1表示したいだけの場合は、最初のコードスニペットを使用します。textbox22番目のルートに進む場合は、配列を単一の文字列に変換し直す必要があります。これは、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 ベースであり、最初の要素が [1] ではなく [0] であるためです。

于 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 に入力した文字列 (したがって、改行、空白文字、またはコンマで区切られた名前) を文字列の配列 (要求したリストではなく) に分割し、2 行目は文字列を結合して、名前の 1 つの大きな文字列に分割します。カンマで区切り、textBox2 に入れます

于 2013-02-27T22:55:10.203 に答える