c# - 如果我在文本文件中没有相同的行数,则不会显示按钮
问题描述
嘿,伙计们,我有两个按钮正在读取两个文本文件,当我单击第一个按钮时,它向我显示了很多按钮,因为当我单击第二个按钮时,我在文本文件中有行,它显示相同,但是当我单击首先,它没有显示那么多按钮,而是显示了我在第二个文件中有多少行
private void button1_Click(object sender, EventArgs e)
{
button10.ResetText();
button11.ResetText();
button12.ResetText();
string line1 = File.ReadLines(@"text1.txt").First();
{
button10.Text = line1;
}
string line2 = File.ReadLines(@"text1.txt").ElementAtOrDefault(1);
{
button11.Text = line2;
}
string line3 = File.ReadLines(@"text1.txt").ElementAtOrDefault(2);
{
button12.Text = line3;
}
if (string.IsNullOrEmpty(button10.Text))
{
button10.Visible = false;
}
if (string.IsNullOrEmpty(button11.Text))
{
button11.Visible = false;
}
if (string.IsNullOrEmpty(button12.Text))
{
button12.Visible = false;
}
}
private void button2_Click(object sender, EventArgs e)
{
button10.ResetText();
button11.ResetText();
button12.ResetText();
string line1 = File.ReadLines(@"text2.txt").First();
{
button10.Text = line1;
}
string line2 = File.ReadLines(@"text2.txt").ElementAtOrDefault(1);
{
button11.Text = line2;
}
string line3 = File.ReadLines(@"text2.txt").ElementAtOrDefault(2);
{
button12.Text = line3;
}
if (string.IsNullOrEmpty(button10.Text))
{
button10.Visible = false;
}
if (string.IsNullOrEmpty(button11.Text))
{
button11.Visible = false;
}
if (string.IsNullOrEmpty(button12.Text))
{
button12.Visible = false;
}
}
解决方案
如果按钮的相关值为空,则您将隐藏该按钮,但当它不为空时,您将不再显示它。第二次单击第一个按钮时,它仍会记住单击按钮 2 时的可见状态。您需要将按钮的可见性显式重置为true
之前设置为 的状态false
。
基本上,您需要对每项检查执行以下操作以设置按钮的可见性;将可见性设置true
为覆盖任何先前将其设置为的逻辑false
。
if (string.IsNullOrEmpty(button10.Text))
{
button10.Visible = false;
}
else
{
button10.Visible = true; // make it visible again
}
也就是说,您可以将上述if/else
可见性检查简化为一行,就像这样......
button10.Visible = !string.IsNullOrEmpty(button10.Text);
下面是您修改后的代码,其中包含单行可见性检查,并在{
}
设置按钮文本的行周围删除了不必要的(括号)......
private void button2_Click(object sender, EventArgs e)
{
button10.ResetText();
button11.ResetText();
button12.ResetText();
string line1 = File.ReadLines(@"text1.txt").First();
button10.Text = line1;
string line2 = File.ReadLines(@"text1.txt").ElementAtOrDefault(1);
button11.Text = line2;
string line3 = File.ReadLines(@"text1.txt").ElementAtOrDefault(2);
button12.Text = line3;
// set visibility based on button text
button10.Visible = !string.IsNullOrEmpty(button10.Text);
button11.Visible = !string.IsNullOrEmpty(button11.Text);
button12.Visible = !string.IsNullOrEmpty(button12.Text);
}
private void button1a_Click(object sender, EventArgs e)
{
button10.ResetText();
button11.ResetText();
button12.ResetText();
string line1 = File.ReadLines(@"text2.txt").First();
button10.Text = line1;
string line2 = File.ReadLines(@"text2.txt").ElementAtOrDefault(1);
button11.Text = line2;
string line3 = File.ReadLines(@"text2.txt").ElementAtOrDefault(2);
button12.Text = line3;
// set visibility based on button text
button10.Visible = !string.IsNullOrEmpty(button10.Text);
button11.Visible = !string.IsNullOrEmpty(button11.Text);
button12.Visible = !string.IsNullOrEmpty(button12.Text);
}
推荐阅读
- python - 我可以在 fillna() 中使用 for 循环吗?
- android - 有没有办法以编程方式更改 TextInputLayout 主题?
- wordpress - 如何在 WordPress 中访问音频元数据?
- java - 当我旋转屏幕时,javascript 停止工作,直到我重新打开我的 WebView 应用程序,即使我重新加载它也不起作用
- html - div里面的可滚动div,网格布局问题
- visual-studio - WCF,客户端项目:如何同时启动但只调试客户端?
- typescript - 为什么 typeof 在分配给 const 变量时会以这种方式表现?
- python - 如何在没有 for 循环的情况下从不同的数据帧中获取值?
- python - 如何使用python将多个数据存储在一个文件中?
- laravel - 获取 Auth Laravel 数据以使用 Vue 填充