Visual Studio为何自动替换代码中的长文本消息?
问题原因与解决方法:Visual Studio自动将WinForms控件文本转至资源文件
问题原因
这是Visual Studio的自动资源提取功能在起作用。当WinForms设计器检测到控件的Text属性内容过长、包含特殊字符(比如表情符号)或多行文本时,会默认把这些内容移到项目的资源文件(比如Resources.resx)里,目的是方便本地化管理,同时让代码文件更整洁。但这就导致你没法直接在代码里编辑文本内容了。
解决方法
方法1:关闭单个控件的资源提取
- 在WinForms设计器里选中目标控件(比如
txtMessageOrder) - 按F4打开属性窗口
- 找到
Localizable属性,把它改成False - 这时候控件的Text属性会重新以明文形式出现在代码文件里,后续修改也不会被自动转到资源文件
方法2:手动从资源文件移回文本
如果文本已经被转去资源文件了:
- 打开项目里的
Resources.resx文件 - 找到对应的资源项(比如
txtMessageOrder.Text),复制它的内容 - 回到代码文件,把
resources.GetString("txtMessageOrder.Text")替换成复制的文本——建议用C#的逐字字符串(加@前缀)来保留换行和表情,比如:
this.txtMessageOrder.Text = @"📈 Last name 📈 First name 📈 Age 📈 Address 📈 City 📈 Zip code 📈 Occupation 📈 Hobbies 📈 Eye color 📈 Hair color 📈 etc... 📈 etc...";
- 最后把
Resources.resx里对应的资源项删掉,避免后续出现冲突
方法3:全局调高自动提取阈值(不推荐)
要是不想让任何控件触发这个行为,可以修改Visual Studio的设置:
- 打开
工具->选项->Windows Forms设计器->常规 - 找到
将字符串移入资源文件的阈值,把数值调得足够大(比如设成9999),超过你常用的文本长度,这样就不会触发自动提取了
内容的提问来源于stack exchange,提问作者QuickSilvain
相关产品推荐
相关产品推荐

