使用Listbox作为目录C#if Loop

时间:2014-08-13 13:06:33

标签: c# winforms

我目前正在尝试创建一个在列表框中有一个目录的小应用程序,当您单击其中一个项目时,应该弹出一个文本框并显示文本。好吧,不知怎的,它不起作用,如果我点击它一旦它不再工作之后。 感谢您的帮助,提前感谢

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

        listBox1.SelectionMode = SelectionMode.One;

        textBox1.Visible = false;

        textBox2.Visible = false;

        textBox3.Visible = false;

    }

    private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (listBox1.SelectedIndex == 0)
        {
            loadTextBox1();
        }

        else if (listBox1.SelectedIndex == 1)
        {
            loadTextBox2();
        }
    }

    private void loadTextBox1()
    {
        textBox1.Visible = true;
    }

    private void loadTextBox2()
    {
        textBox2.Visible = true;
    }

我真的很喜欢c#和编程,它可能会很简单lol

2 个答案:

答案 0 :(得分:2)

更改

private void loadTextBox1()
{
    textBox1.Visible = true;
}

private void loadTextBox1()
{
    this.Invoke((MethodInvoker)delegate {
      textBox1.Visible = true;
    });
}

与loadTextBox2()

相同

此外,您应该将 Visible = false 设置为无法显示的TextBox。

这是因为对可见更改的调用来自另一个线程而不是UI线程,并且必须被调用。

使用WinForms进行开发时读取的更多信息可在此处找到

How to: Make Thread-Safe Calls to Windows Forms Controls

答案 1 :(得分:1)

你什么时候做假的?我认为你的问题是当你选择第一个文本框时,你没有把第二个文本框弄错,反之亦然......试试这个。

private void loadTextBox1()
{
    textBox1.Visible = true;
    textBox2.Visible = false;
}

private void loadTextBox2()
{
    textBox2.Visible = true;
    textBox1.Visible = false;
}

当您必须为每个所选项目显示具有不同文本的相应文本块时,您可以执行此操作。