只读和启用之间的主要区别是什么?

33

Windows Forms控件中,有两个属性:ReadOnlyEnabled

这两个属性有什么区别?我感觉它们的行为方式是一样的。

7个回答

38

正如以下论坛帖子所述:

在TextBox的上下文中,readonly允许用户设置焦点、选择和复制文本,但不能修改它。一个disabled的TextBox则不允许任何交互。

当您有数据要让用户查看和复制但不允许修改时,请使用ReadOnly。当您显示的数据对于当前对话框或窗口的状态不适用时,请使用已禁用的文本框。

引自:MSDN论坛


你已经在下面得到了答案,我只想补充一点,你总是可以设置 disabled,但并非所有控件都有 readonly 标签,这很遗憾。我建议你不要在同一页上混用它们(除非有充分的理由),因为这可能会让用户感到困惑。 - Mawg says reinstate Monica

4

ReadOnly 通常与包含文本的 TextBox 或其他控件相关联,它决定用户是否可以修改控件显示的文本。然而,用户仍然可以选择文本(例如将其复制并粘贴到另一个程序中)。

Enabled 基本上控制着用户是否可以与控件进行任何交互。例如,Enabled == false 的按钮无法被点击;Enabled == false 的复选框无法被切换等等。请注意,Enabled == falseTextBox 也不能选择其文本(那将是用户交互)。

此外,Enabled == false 的控件不会引发与用户交互相关的事件,如 Click


2

Enabled用于指定用户是否可以进行交互操作。如果控件被禁用,则不会产生任何UI事件。

ReadOnly用于确定用户是否可以编辑控件的内容。例如,只读的文本框无法编辑,但您仍然可以单击它,选择其中包含的文本等。


至少带有rad控件,它也允许您将内容粘贴到其中! - John Lord

1
此外,我在这里阅读到,如果文本框被标记为Enabled="false",那么在postbacks中其值不会被保留在Viewstate中。

5
问题在询问WinForms,而不是WebForms - Peter Monks

1
如果以带有滚动条的文本框为例,ReadOnly 属性不允许用户编辑文本,但滚动条仍然是活动的(可以想象安装程序中的许可协议框)。而 Enabled = false 则会导致整个控件被禁用,而不仅仅是文本编辑区域。

1

有些控件,例如按钮,只能启用或禁用。禁用的控件会给出视觉提示,表明它现在无法与之交互(通常是灰色/淡化)。其他控件也可以是只读的,在某种程度上可以与之交互,但不能编辑。例如,一个上下控件经常是这样的,这意味着您可以按按钮来更改值,但不能通过正常输入进行编辑。(也有可能有一些您永远无法与之交互但仍然可用禁用的控件;标签仍然可以被置为灰色作为指示整个GUI区域当前不可用的一部分,这比仅更改可交互的控件更具视觉效果。)

基本上,禁用意味着控件也是只读的。我见过一些情况,其中这并不是真实的,而且对我来说总是感觉更像是一个错误而不是其他任何事情。最好将状态视为表示三态值的状态,其中一些控件不使用其中的一种状态。


1
不要忘记,对于视力受损的屏幕阅读器来说,不能读取禁用文本框中的文本,因为它无法获得焦点。为了符合ADA标准,请使用ReadOnly

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接