使文本框不可编辑

75

我想在我的表单上做一些TextBox不可编辑,但我希望文本内容仍然清晰(黑色而非灰色),所以我不想使用myTextBox.Enabled=false;

不知道有没有什么方法可以使其禁用但前景色不是灰色。

请问有人有什么建议吗?


5
为什么是-1 -1 -1?我明白了,答案只有一个词,好的,但是我真的不知道那个词。难道我不应该问吗? - Mahdi Tahsildari
2
不要担心!有些人只是不理解。 - Parimal Raj
你说得对,@AppDeveloper,我相信每个人都有一些需要变亮的黑暗点。感谢你的友善回复。祝你好运。 - Mahdi Tahsildari
@UthistranS. - 如果以后他需要在同一个框中获取用户输入怎么办? - Parimal Raj
1
@UthistranS,这不是一个好的建议,因为这样我会失去固定的位置和大小,还有文本换行模式。标签会根据其内容长度来拉伸,但文本框有固定的尺寸并且可以显示多行文本(包装行为),但标签需要更多的代码来维护这种行为。 - Mahdi Tahsildari
显示剩余3条评论
8个回答

132

使用 TextBox.ReadOnly 属性。

TextBox.ReadOnly = true;

如果要设置一个非灰色背景,您可以将TextBox.BackColor属性更改为SystemColors.Window颜色。

textBox.BackColor = System.Drawing.SystemColors.Window;

当此属性设置为 true 时,控件的内容在运行时将不能被用户更改。设置此属性为 true 后,你仍可以通过代码设置 Text 属性的值。你可以使用此功能代替使用 Enabled 属性禁用控件,以允许内容被复制并显示工具提示。


3
该属性是WPF .NET 4.5.2,Visual Studio 2015,Update 3(版本为14.0.25431.01 Update 3)中的TextBox.IsReadOnly。 - ecth

17

在TextBox上使用ReadOnly属性。

myTextBox.ReadOnly = true;

但请记住:TextBoxBase.ReadOnly 属性

当将此属性设置为 true 时,控件的内容无法在运行时由用户更改。即使将此属性设置为 true,仍然可以在代码中设置 Text 属性的值。您可以使用此功能代替使用 Enabled 属性禁用控件,以允许复制控件的内容并显示工具提示。


6
您可以尝试使用以下方法:
textBox.ReadOnly = true;
textBox.BackColor = System.Drawing.SystemColors.Window;

最后一行只有在你想要一个非灰色背景颜色时才是必需的。

4

只需在XAML中设置:

        <TextBox IsReadOnly="True" Style="{x:Null}" />

为了使文本不变灰。

3
如果您希望您的TextBox不可编辑,您应该将其设置为只读

1
这是用于 GridView 的代码。
 grid.Rows[0].Cells[1].ReadOnly = true;

1
如果您想使用XAML完成此操作,请将属性isReadOnly设置为true

这是一个与问题无关的回答。因为这个问题是关于winform而不是WPF的。 - Mr. Squirrel.Downy
这是一个与问题无关的回答。因为这个问题是关于WinForm而不是WPF的。 - undefined

-1

在aspx页面中Enabled="false"


1
嗨Suraj,欢迎来到Stackoverflow。感谢您的努力。我的问题实际上是关于Windows Forms应用程序的。标签可以帮助我们将问题放在适当的类别中。 - Mahdi Tahsildari

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