在VS2012 C#项目中剪切和粘贴WinForms控件时保留事件处理程序分配?

Rob*_*ler 9 .net c# event-handling visual-studio-2012

在VS2012设计器中剪切和粘贴控件时,有没有办法维护事件处理程序分配?例如,我有一个图形控件,其中包含事件存根中的代码的Load事件.如果我剪切并粘贴图形控件,则Load事件不再显示为在"属性编辑器"中具有事件处理程序分配.我必须使用Load事件旁边的下拉框来重新选择Load事件的现有事件处理程序代码(重做赋值).有没有办法剪切和粘贴控件而不会丢失事件处理程序分配?

在Delphi中,我可以自由剪切和粘贴控件,事件处理程序分配是剪贴板文本的一部分,因此当控件粘贴到窗体或框架上时它们会被保留.我希望有一种方法可以对Visual Studio 2012和C#项目做同样的事情.

Moh*_*ari 5

您需要使用文档大纲

View > Other Windows > Document Outline
Run Code Online (Sandbox Code Playgroud)

并找到您想要的控件,然后将其拖放到目标容器中。在这种情况下,您不会错过任何事件。


Use*_*678 4

当您使用 Visual Studio 设计器剪切或复制控件时,仅复制控件的属性。这是设计使然,在我看来,这是合理的。如果您复制一个控件并分配或复制所有相同的事件处理程序,那么大多数时候这是违反直觉的。

听起来该控件仍保留在同一窗体中。在这种情况下,拖动并放置控件在大多数情况下就足够了。