【问题标题】:Best way to put two Controls on each other and manage their visibility - C#将两个控件放在一起并管理它们的可见性的最佳方法 - C#
【发布时间】:2017-05-13 13:52:22
【问题描述】:

举例:

我有两个文本框,它们都应该在表单的相同位置,并且都具有相同的大小。 由于悔恨,我需要让其中一个可见。

好的,一切都很完美:

if (condition)
{
   txtBox1.Visible = false;
   txtBox2.Visible = true;
}
else
{
   txtBox1.Visible = true;
   txtBox2.Visible = false;
}

但是design mode有个小问题! design mode中的一个文本框我不能轻易处理和选择,一个是发送到后面,一个是发送到前面,访问它们会造成麻烦!

如何通过控制排序和设计来管理此类情况?我的方式是把两个控制权放在一起吗?有没有更好的方法?

【问题讨论】:

    标签: c# visual-studio


    【解决方案1】:

    一种选择是将一个TextBox 放在您想要的位置(假设textbox1 将在正确的位置)并将另一个文本框放在设计器附近。这样您就可以在设计时轻松选择它们。

    然后,在您的Form_Load 事件中,您只需将textBox2 放在与textbox1 相同的位置:

    private void Form1_Load(object sender, EventArgs e)
    {
        textbox2.Location = textbox1.Location;
        textbox2.Visible = false;
    

    一个更好的问题可能是,你为什么要这样做?文本框是一个文本框,你已经在你想要的位置有一个文本框。有一个文本框来收集用户输入。为什么要在同一个地方显示和隐藏另一个?用户不会知道区别,您的程序状态可能不会关心用户输入数据的控件的名称...

    【讨论】:

      【解决方案2】:

      您可以通过多种方式从这两种方法中选择一个控件。首先,通过按 Tab 键,直到您到达要选择的控件。要优化选择,您需要首先选择一个不同的控件,其 Tab 键顺序小于这两者。

      其次,您可以选择任何控件并按 F4 打开属性窗口。在属性窗口顶部有一个下拉列表,您可以在其中查看控件名称。然后,您可以从此属性窗口中选择您选择的控件并更改属性。

      【讨论】:

      • 谢谢,但我是否在做正确的事情,将两个控制权放在彼此身上?这是标准吗?还是专业程序员会另辟蹊径?
      • @Nofuzy - 将两个控件相互叠加并不是正确的做法。您想要实现的是动态地使只有一个控件可用。相反,您可以在运行时创建选择的控件并将其放在您需要的位置。
      【解决方案3】:

      你可以这样做,这里是示例代码,

      txtBox1.Visible = false;
      
      Point loc = new Point(50, 60); //new location point
      txtBox2.Location = loc; //changing location of txtBox2
      txtBox2.Visible = true;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-05-11
        • 1970-01-01
        • 2020-01-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-02
        • 1970-01-01
        相关资源
        最近更新 更多