【问题标题】:Controls on WinForm not modifiable in Designer在 Designer 中无法修改 WinForm 上的控件
【发布时间】:2012-12-29 20:18:00
【问题描述】:

我继承了一个项目,该项目的修改方式超出了我的撤消范围。表单上的每个控件都不能在设计器中修改,除非通过“属性”窗口,并且每个控件在下面的区域(参见图片)中都有一个图标,该区域通常为不可见的项目(例如数据源)保留。如何撤消此操作并将设计器返回到可用版本,而无需全部清除并重新开始?

【问题讨论】:

  • 这些是派生类吗?
  • 如果类已经过大量手动编辑,如果您想使用设计器来维护表单,则可能必须重新开始。去过那里...
  • 有些是我创建的控件。其他是基础设施控制。一两个内置在 MS 控件中。
  • 这些控件所在的窗体只是一个 Windows.UserControl
  • 尝试构建时会发生什么?

标签: c# winforms visual-studio infragistics


【解决方案1】:

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

对 .csproj 文件进行一些手动破解可能就是答案。在文本编辑器中打开项目文件,并找到对您的控件的引用。如果你发现一个子类型定义为:

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

表单设计者会这样解释它。您可以将“SubType”更改为“UserControl”来修复它。

【讨论】:

    【解决方案2】:

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

    步骤如下:

    • 在 Visual Studio 设计器的工具箱中单击鼠标右键(例如在 General 上)。

    • 选择选择项目...

    • 一段时间后 vs 加载项目按浏览并选择 dll 感兴趣的组件应该出现在网格中。这样做是为了 所有包含您感兴趣的控件的dll。

      -确保您已检查组件(如果您 加载了很多组件)。

    • 按确定。

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

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

        如果没有,也许您可​​以创建一个新的对话框/表单并将控件复制到其中,看看是否可以解决问题。另一个技巧可能是添加用户控件的第二个实例,以查看新添加的控件是否按预期工作。如果是这样,请检查代码并将所有事件/逻辑指向新控件(乏味是的,但可能有效)。

        此外,您永远不能在设计器中为您实例化用户控件的表单/控件编辑用户控件的各个子控件。您必须去用户控件的设计者那里编辑用户控件的各个(子)控件。

        【讨论】:

        • 表单未锁定。单击 UserControl 上的任何控件只会将焦点放在整个 UserControl 上,并在“属性”窗口中显示它的属性。我将尝试创建一个新的 UC
        • 嗯,所以您不能编辑单个控件?您确定您编辑了正确的用户控件吗?您永远不能编辑放置在另一个控件/表单上的用户控件的各个子控件。您需要打开原始用户控件设计器来编辑任何子控件。
        • 嗯...您的评论似乎表明您确实看到了用户控件。在这种情况下,您无法通过设计器修改任何单个用户控件的不同部分,这并不奇怪。如果您打开用户控件本身(而不是表单甚至包含使用它的用户控件),它是否可以在设计器中进行编辑?
        • 尝试创建一个新的用户控件。我放在那里的第一个 Infragistic 控件创建了该部分并将控件放置在其中,但常规 win 控件按预期运行。
        • @notJoeKing 是在同一个项目还是新项目?如果在同一个项目中,新项目中的行为是什么?如果在新项目中重现,运行 Infragistics 提供的 Toolbox 实用程序是否可以纠正新项目中的行为?
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-08-24
        • 1970-01-01
        • 2023-02-17
        • 1970-01-01
        • 2016-10-31
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多