1

このプログラムには、テキスト ボックスを保持するパネルがあり、パネルの両側に 2 つのボタンがあります。各ボタンは、「次へ」(>>) および「前へ」(<<) ナビゲーションとして機能します。「>>」をクリックして次のパネルに移動できるようにしたいのですが、これによりテキスト ボックスがクリアされます。次に、「<<」をクリックすると、以前に追加されたデータを含むテキスト ボックスがある前のパネルに戻りたいと思います。ただし、2 つのパネルを重ねて作成したり、可視性を true または false に設定したりする必要はありません (これは可能です)。これを 1 つのパネルだけを使用して実現したいので、プロセスを無限に実行できます。より多くの情報が必要な場合はお知らせください。

物事を明確にするための私のインターフェースの画像は次のとおりです。

ここに画像の説明を入力

4

1 に答える 1

2

あなたはページ番号を持っているので、なぜリストを作成しないのですか(またはページ番号をキーとして辞書を使用します)、>>と<<のボタンハンドラーで現在のページのテキストを収集します(そしてそれをリストまたは辞書から)、前のページのテキストに置き換えます(リストまたは辞書から)。

コードは次のようになります。

public partial class Form1 : Form
{
    Dictionary<Decimal, String> TextInfo;

    public Form1()
    {
        InitializeComponent();

        TextInfo= new Dictionary<Decimal, String>();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        numPage.Value = 1;
    }


    private void bnForward_Click(object sender, EventArgs e)
    {
        if (TextInfo.ContainsKey(numPage.Value))
        {
            TextInfo[numPage.Value] = textBox1.Text;
        }
        else
        {
            TextInfo.Add(numPage.Value, textBox1.Text);
        }

        numPage.Value++;

        if (TextInfo.ContainsKey(numPage.Value))
        {
            textBox1.Text = TextInfo[numPage.Value];
        }
        else
        {
            textBox1.Text = "";
        }
    }

    private void bnBack_Click(object sender, EventArgs e)
    {
        if (numPage.Value == 1)
            return;

        if (TextInfo.ContainsKey(numPage.Value))
        {
            TextInfo[numPage.Value] = textBox1.Text;
        }
        else
        {
            TextInfo.Add(numPage.Value, textBox1.Text);
        }

        numPage.Value--;

        if (TextInfo.ContainsKey(numPage.Value))
        {
            textBox1.Text = TextInfo[numPage.Value];
        }
        else
        {
            textBox1.Text = "";
        }
    }


    private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
    {

    }




}
于 2013-01-24T14:35:53.397 に答える