首页 > 解决方案 > 如果我在文本文件中没有相同的行数,则不会显示按钮

问题描述

嘿,伙计们,我有两个按钮正在读取两个文本文件,当我单击第一个按钮时,它向我显示了很多按钮,因为当我单击第二个按钮时,我在文本文件中有行,它显示相同,但​​是当我单击首先,它没有显示那么多按钮,而是显示了我在第二个文件中有多少行

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;
    }
}
                   

标签: c#

解决方案


如果按钮的相关值为空,则您将隐藏该按钮,但当它不为空时,您将不再显示它。第二次单击第一个按钮时,它仍会记住单击按钮 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);
}

推荐阅读