在Windows Forms控件中,有两个属性: ReadOnly 和已启用。
这两个属性有什么区别?我觉得他们的行为方式相同。
答案 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
});
。