ReadOnly和Enabled之间的主要区别是什么?

时间:2010-06-21 23:43:35

标签: c# winforms controls

Windows Forms控件中,有两个属性: ReadOnly 已启用

这两个属性有什么区别?我觉得他们的行为方式相同。

7 个答案:

答案 0 :(得分:31)

正如以下论坛帖子所述:

  

在TextBox的上下文中,只读   允许用户将焦点设置为和   选择并复制文本但不是   修改它。禁用的TextBox不会   允许任何互动。

     

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

取自:MSDN Forums

答案 1 :(得分:2)

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

Enabled基本上控制是否可以与控件进行任何用户交互。例如,无法点击Button Enabled == false; CheckBox Enabled == false无法切换,等等。请注意TextBox Enabled == false也无法选择其文字(即用户互动)。

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

答案 2 :(得分:1)

已启用指定是否允许用户交互。如果禁用控件,则它不会生成任何UI事件。

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

答案 3 :(得分:1)

某些控件(例如按钮)只能启用或禁用。禁用的控件将给出一个可视指示,表明它现在无法与之交互(通常通过灰化/淡出)。其他人也可以是只读的,因为他们可以通过某种方式进行交互但不能编辑。例如,上下控件通常就是这样,这意味着您可以按下按钮来更改值,但不能通过正常键入来编辑它。 (也可能有控件,你永远不能与之交互但仍然有用的禁用;标签仍然可以显示灰色,作为指示GUI的整个区域现在不可用的一部分,这是一个更多令人愉悦的视觉效果,而不仅仅是改变交互式控件。)

实际上,禁用意味着控件也是只读的。我见过一些不合适的案例,对我来说,它总是比其他任何事情都更像是一个错误。最好将状态视为三态值,其中一个状态不用于某些控制。

答案 4 :(得分:0)

如果您使用带有滚动条的文本框作为示例,ReadOnly不允许用户编辑文本,但滚动条仍处于活动状态(考虑安装程序中的许可证框)。 Enabled = false将导致整个控件禁用,而不仅仅是文本编辑区域。

答案 5 :(得分:0)

此外,我读到here如果文本框标记为Enabled =“false”,则其值不会在回发中保留在Viewstate中。

答案 6 :(得分:0)

不要忘记,视障人士的屏幕阅读器无法读取禁用文本框中的文本,因为它无法获得焦点。要符合ADA,请使用$('div input[name="foo"][value!="123"]').each(function(){ // your program logic goes here });