2013-01-15 40 views
6

我继承了一个项目,该项目的修改方式超出了我的范围。窗体上的每个控件都不能在设计器中修改,除非通过“属性”窗口并且每个控件在通常为不可见项目(例如,数据源)保留的部分中的下方区域中具有图标(请参见图像)。我该如何撤销这个设计,并将设计师还原为可用版本,而不必全部清理并重新开始?WinForm上的控件在设计器中无法修改

Control Icons

+0

这些派生类吗? – Tebc

+0

如果该类已经过大量手动编辑,那么如果您想使用设计器来维护表单,则可能必须重新开始。在那里... – Pete

+0

一些是我创建的控件。其他是Infragistic控制。一个或两个内置MS控件。 – notJoeKing

回答

0

能否控制被锁定?我遇到了遗留代码,其中程序员锁定了每一个控件,这意味着您无法在设计器中移动或调整它们的大小。如果是这样,请全部选中并将Locked属性更改为false(如果它们已锁定,则在设计器中应该会看到一个挂锁)

如果没有,那么也许您可以创建一个新的对话框/窗体并将控件复制到它上面,看看是否清除了一些东西;另一个技巧是添加用户控件的第二个实例,以查看新添加的控件是否按预期工作,如果是,请仔细阅读代码和点所有的事件/逻辑到新的控制(繁琐的是,但可能工作)。

此外,你永远不会编辑设计器中用户控件的单个子控件的实例化用户控件的窗体/控件。您必须前往用户控件的设计者编辑用户控件的单个(子)控件湖

enter image description here

enter image description here

+0

表单未锁定。单击UserControl上的任何控件只会将焦点放在整个UserControl上,并在“属性”窗口中显示它的属性。我会尝试创建一个新的UC – notJoeKing

+0

嗯,所以你不能编辑单独的控件?你确定你编辑了正确的用户控件吗?您永远不能编辑放置在其他控件/表单上的用户控件的单独子控件。您需要打开原始用户控件设计器来编辑任何子控件。 –

+0

嗯......你的评论似乎表明你确实看到了用户控件。在这种情况下,您无法通过设计人员修改任何单个用户控件的不同部分,这并不奇怪。如果你打开用户控件本身(而不是表单或甚至包含**使用**的用户控件),它是否可以在设计器中编辑? –

0

如果Infragistics的控制显示组件托盘中,除了可能存在的版本差异。你可以尝试的是打开licenses.licx文件并从那里删除内容。你的机器上安装了Infragistics控件吗?将Infragistics程序集的“特定版本”属性设置为“false”后是否有区别?

这是只发生在您现有的项目中,还是同样的行为也可以在新项目中重现?

0

您必须加载包含无法在设计器中修改的控件的dll。

的步骤是:

  • 右键单击在Visual Studio设计的工具箱(上通用的例子)。

  • 选择选择项目...

  • 一会儿VS负荷的项目按浏览后选择DLL 兴趣比应及部件出现在网格中。为 做所有包含您感兴趣的控件的dll。

    - 确保已经检查了组件(如果您的 加载了大量组件,请使用过滤器文本框)。

  • 按确定。

    现在你应该可以在设计器中移动控件了。

0

当用户控件或窗体被错误地标记为“组件”时,我也看到了这种行为。

那么.csproj文件的某些手动黑客攻击可能就是答案。在文本编辑器中打开项目文件,并找到对您的控件的引用。如果您发现子类型定义为:

<Compile Include="MyControl.cs"> 
    <SubType>Component</SubType> 
</Compile> 

表单设计人员会将其解释为这样。您可以将'SubType'更改为'UserControl'来修复它。

相关问题