【问题标题】:Are Inherited Forms And/Or Inherited Controls possible in Managed C++托管 C++ 中是否可以继承表单和/或继承控件
【发布时间】:2010-04-01 14:18:53
【问题描述】:

这个问题实际上是不言自明的,但我会进一步澄清。我正在构建一个简单的应用程序来显示 5 种不同类型的 [文件] 的负载 [文件]。因此,所有这 5 个表单都将具有相似的 GUI 元素,例如列表框和带有小文本框/标签的加载按钮,以显示 [文件] 信息的摘要。

我想要的效果类似于 Visual Studio 的用于继承用户控件或继承表单的 C# 模板。我已经用谷歌搜索了这个概念来寻找一个 C++ Visual Studio 模板来解决这个问题,但我找不到它。

[file] 一词在括号中,因为打开文件对话不会起作用,因为要选择的文件列表来自 SQL 服务器。

非常感谢!

进一步解释我的愿望:

Class A : public System::Windows::Forms::Form
{
  //normal windows forms generated code here and your stuff
}
Class B : public A
{
  //You cannot edit this content with designer as designer denies you that chance
}

所以我想知道我是否也可以使用设计器来编辑这个类。如果我能让设计师不阅读类声明而是看到类似这样的东西,我会坚持下去

#if designer
Class B : public System::Windows::Forms::Form
#else
Class B : public A
#endif
{

}

我正在寻找可以在继承表单和基本表单上使用设计器的方法。有没有可能。

【问题讨论】:

    标签: winforms visual-studio-2008 c++-cli managed-c++


    【解决方案1】:

    是的,没问题。 C++/CLI 与任何其他托管语言一样支持继承。缺少的是点击式 IDE 支持,您必须输入。将基本表单添加到您的项目中,更改派生的表单声明。例如:

    #pragma once
    #include "BaseForm.h"
    ...
    public ref class Form1 : public BaseForm         // <== NOTE: new base class
    {
      // etc...
    }
    

    【讨论】:

    • 感谢答案。是否可以在继承的表单或控件上使用 Visual Studio 中的设计器工具?
    • 4小时过去了,我想你已经知道答案是肯定的了。
    • 好吧,显然是的,但是当你从自己的 ref 类继承时你不能使用设计器,即使它从 System::Windows::Forms::Form 继承来更好地解释我要广告的问题问题的一些示例代码
    • 设计者要求表单是.h文件中的第一个类。使用#include。
    【解决方案2】:

    似乎无法在继承的表单和控件上使用设计器。 C++/CLI 设计器不支持/处理继承的表单和控件。也找不到此类过程的模板。我将标记上一个答案,因为它也是正确的方法并回答了我问题的很大一部分。唉,这些表单将没有设计器支持。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-07
      • 1970-01-01
      • 2011-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多