CTRL+S 正在撤消我在 Winforms 设计模式下的工作
Posted
技术标签:
【中文标题】CTRL+S 正在撤消我在 Winforms 设计模式下的工作【英文标题】:CTRL+S is undoing my work in Winforms design mode 【发布时间】:2016-12-29 09:53:00 【问题描述】:我安装了一些 Visual Studio 扩展,我使用以下方法进行了清理:
移动了所有设置/等(我找不到我用于指示的 SO 文章) 重建 mef 缓存现在性能好多了(我猜所有那些开源库 - 修复 em - 在我的 settings/cache/internally-dump-all-vs-stuff-here 文件夹中留下了一堆垃圾),但现在我有一个很奇怪的问题。
在 WinForms 中编辑 UI 时(例如向项目添加新表单并添加按钮),按 CTRL+S 或转到 文件 > 保存 [XXX](例如,XXX 是Form1.cs
)——它撤消了我上次保存后的所有内容(下面解释的替代保存方法)。例如,如果我打开表单进行 UI 拖放编辑,然后在表单上放置一个按钮,则 CTRL+S 或 文件>保存[XXX],按钮及相关代码全部删除!!
以下是有效的方法(替代保存方法):
如果在代码视图中,所有保存似乎都按预期工作 在任何地方使用 CTRL+SHFT+S 都可以正常工作 在任何地方使用 File > Save All 都能正常工作我知道这听起来可能不是一个大问题,但在一天的时间里,我可能会使用 CTRL+S 数百次(如果不是数千次)在 VS.NET 的编辑之间,我发现非常不稳定的事情,例如随机崩溃或其他令人讨厌的事情,如果不保存(并且不能依赖自动恢复,因为有时这不起作用)我可能会失去很多时间。目前,这个细微的差别开始花费我在 UI 设计上的时间,因为我在 UI 上花费的时间比在代码上的时间要多(代码很简单,UI 很古怪)并且丢失了我所有的 UI 更改/对齐/新对象,因为 CTRL+S 是行为不端,是一个真正的沮丧。
我该如何解决这个问题?我已经尝试过修复,这似乎总是让我头疼几个小时让 Xamarin 再次工作 - 我已经(如前所述)清除了设置文件夹,让 VS 重建并重新创建 MEF / 等。
【问题讨论】:
你试过devenv /ResetSettings
吗?
@RezaAghaei - 我希望保留我的代码格式设置,因为它很痛苦(配置太多),所以如果我使用该命令,我将失去一切。我确信有某个地方可以查看这个问题可能在哪里(手动),我只是不知道控制器在哪里。可能是 Visual Studio Power Tools 导致了一些愚蠢,因为它确实挂钩 CTRL+S 来清理代码,但可能与它需要的不同设置或其他东西结合使用。我不知道大声笑
也许尝试进入工具菜单->选项->环境->键盘并选择一些功能并在“按快捷键”中输入cntrl-S,然后查看“当前使用的快捷方式”下拉菜单..
禁用Producitivy Tools 解决了这个问题。我在快捷方式中找不到任何内容。
@TnTinMn - 好的,我已经缩小到如果代码窗口为我正在查看的当前表单打开,它就会发生。它似乎根本与生产力工具无关。这太古怪了XD
【参考方案1】:
Windows 窗体设计器将在保存项目时仅删除 Form 的 InitializeComponent
方法中未使用的代码。
撤消或按ctrl + z
键将带回已删除的代码(将出现一个消息框要求确认)。
注意:删除代码后立即按ctrl + z
。关闭并重新打开文件后,这可能不起作用
为什么会发生这种情况
当我们保存表单或整个项目的设计视图时,Visual Studio 会序列化设计视图中的所有组件,并以InitializeComponent
方法生成代码。在此过程中,InitializeComponent
方法中的现有代码将被删除。这就是为什么有评论说不要修改设计器生成的代码。
【讨论】:
Not 'CTRL+Z' --- CTRL+*S* .... CTRL+Z,正常运行。请阅读我再次发布的问题,包括重现的步骤。这很奇怪,因为这不是此快捷方式 OR 菜单命令的正常行为。 Save All, works, Save -- 不保存,除非在代码视图中,或者没有打开代码视图。在 cmets 不修改的地方不谈论设计器代码隐藏源 - 我在谈论任何代码窗口 - 包括一个新的类。 @SamuelJackson,我提到要使用撤消或立即按“CTRL + Z”来取回已删除的代码。 (即,按 CTRL + S 后) 奇怪的是,此后 CTRL+Z 也不起作用。当然,我尝试过这样可以快速将控件放回原处,但是 -- nada :S以上是关于CTRL+S 正在撤消我在 Winforms 设计模式下的工作的主要内容,如果未能解决你的问题,请参考以下文章