1

该程序有一个面板,其中包含一个文本框,面板每侧有两个按钮。每个按钮充当“下一个”(>>) 和“上一个”(<<) 导航。我希望能够通过单击“>>”导航到下一个面板,这将清除文本框。然后,当我单击“<<”时,我想返回上一个面板,其中包含先前添加的数据的文本框。但是,我想这样做,而不必在彼此之上创建两个面板并将可见性设置为 true 或 false(我能够做到)。我想通过只使用一个面板来实现这一点,这样这个过程就可以无限次地完成。我希望这很清楚,如果您需要更多信息,请告诉我。

这是我的界面图像以澄清事情:

在此处输入图像描述

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 回答