使用标签与使用文本框

时间:2017-03-13 12:47:55

标签: c# winforms textbox labels

我有一个C#应用程序,我正在使用与微控制器的串行通信来显示应用程序上的数据。我使用了一个文本框来显示数据:

  public void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
    {

        try
        {

            DataRec = serialPort1.ReadExisting();   
            int.TryParse(DataRec, out myTotal);
            this.BeginInvoke(new EventHandler(DisplayText)); 
        }
        catch(NullReferenceException)
        {
          //catching the exception

        }
   }

  public void DisplayText(object sender, EventArgs e)
    {

        textBox2.Text = myTotal.ToString();
    }

我还尝试使用标签代替TextBoxes。我得到了相同的结果,我没有看到任何性能变化。我正在使用标签,因为我不希望用户认为他们可以编辑文本框中的值。

我试过寻找一个优于另一个的优点。到目前为止,我看到的是:

  1. 文本框需要设置为只读,而在标签中你不需要这样做。
  2. 即使我将文本框设置为只读,Cursor仍然可见,而在Label中则不是。
  3. 使用标签或文本框时,在性能方面有哪些优点和缺点?

    如果我使用标签可以吗?

2 个答案:

答案 0 :(得分:3)

两者都有一些专业人士和对手。

标签

专业人士:

  • 文字无法复制
  • 光标无法更改
  • 根据文本设置大小(如果启用了自动调整大小,我认为默认为启用)
  • 选项将文本右对齐(自动调整大小)

<强>精读&#39; S:

  • 文字无法选择/复制
  • 文字可能会超过使用自动调整大小的格式/父级

文本框

专业人士:

  • 文字可以复制
  • 固定大小(也是骗局)

<强>精读&#39; S:

  • 不自动调整大小
  • 高度不可调(不适用于富文本框/ multiline = true

我的意见:
在我看来,如果用户不能复制数据,你应该使用标签。例外情况是,如果您只有1个不可编辑的值,而其他所有值都是文本框,那么您应该只创建一个只读文本框。

答案 1 :(得分:1)

您已经回答了自己的问题。我觉得在这种情况下标签更合适。您可能会争辩说,您可能需要文本框提供的额外功能,但您应该考虑YAGNI原则。

至于优点和缺点,用户可能会认为他们能够在文本框中编辑值,他们不会使用标签犯这个错误。