我目前正在尝试创建一个在列表框中有一个目录的小应用程序,当您单击其中一个项目时,应该弹出一个文本框并显示文本。好吧,不知怎的,它不起作用,如果我点击它一旦它不再工作之后。 感谢您的帮助,提前感谢
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
答案 0 :(得分:2)
更改
private void loadTextBox1()
{
textBox1.Visible = true;
}
到
private void loadTextBox1()
{
this.Invoke((MethodInvoker)delegate {
textBox1.Visible = true;
});
}
与loadTextBox2()
相同此外,您应该将 Visible = false 设置为无法显示的TextBox。
这是因为对可见更改的调用来自另一个线程而不是UI线程,并且必须被调用。
使用WinForms进行开发时应读取的更多信息可在此处找到
答案 1 :(得分:1)
你什么时候做假的?我认为你的问题是当你选择第一个文本框时,你没有把第二个文本框弄错,反之亦然......试试这个。
private void loadTextBox1()
{
textBox1.Visible = true;
textBox2.Visible = false;
}
private void loadTextBox2()
{
textBox2.Visible = true;
textBox1.Visible = false;
}
当您必须为每个所选项目显示具有不同文本的相应文本块时,您可以执行此操作。