【问题标题】:Read-only textbox in C#C#中的只读文本框
【发布时间】:2009-02-26 05:54:14
【问题描述】:

C# 中,我正在为带有两个文本框的局域网信使创建一个表单窗口。我需要将特定的文本框创建为只读的,但是提交给它的任何文本都显示为灰色,这是不可取的。有什么办法可以预防吗?

【问题讨论】:

    标签: c# textbox


    【解决方案1】:

    我会使用一个文本框并将 ReadOnly 设置为 true,将 ForeColor 设置为 Color.Black,并将 BackColor 设置为 Color.White。这样您仍然可以选择文本并使用 Ctrl-C 进行复制。

    【讨论】:

    • 旧线程,但我发现这很有用。文本框看起来很正常,除了你不能输入它。干杯!
    【解决方案2】:

    您可以将其替换为标签或 KeyPress 事件中的文本框,设置为 true:

    void  textBox1_KeyPress(object sender, KeyPressEventArgs e)
    {
        e.Handled = true;
    }
    

    【讨论】:

    • 我个人讨厌这种方法,因为用户仍然认为他们可以编辑文本,然后当他们输入的字母什么都不做时会感到惊讶。
    • 我同意,但似乎提出问题的人似乎担心禁用文本框中的灰色文本,这比继承和覆盖绘制事件更简单。
    • ReadOnly = true 更简单
    【解决方案3】:

    您可以通过设置 Textbox ForeColor 属性来设置文本的颜色。

    例如:

    myTextBox.ForeColor = 颜色.黑色

    【讨论】:

      【解决方案4】:

      为了使文本框在只读状态下保持白色(或窗口),您必须将 BackColor 属性显式设置为 Window。为此,您必须先将 BackColor 设置为其他值,然后再设置回 Window。 backcolor 属性应该变为粗体,表明它不再是默认值。

      【讨论】:

        【解决方案5】:

        灰色表示文本框的只读状态。这是一个视觉指示,用户无需输入文本即可发现文本框实际上已禁用。

        如果您只需要只读行为,最好使用 Label。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-05-03
          • 1970-01-01
          • 2015-04-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-01-08
          • 2014-11-23
          相关资源
          最近更新 更多