如何使用Designer在C ++ / CLI中继承现有的Windows窗体控件

时间:2013-02-27 10:11:01

标签: c++ winforms user-controls c++-cli

我需要Visual Studio 2012中的c ++ / cli中的自定义DataGridView类,可以在Designer View中使用。

我创建了一个从System :: Windows :: Forms :: UserControl继承的默认clr用户,并将UserControl更改为DataGridView,但它在C ++中不起作用。它适用于C#。 [1]

设计师无法识别从头开始的代码。 [2]

似乎我必须将DataGridView放在类中,但我必须访问其成员,如grid-> view-> GetName ..而不是grid-> GetName .. now。并且它不会被模式化,因为在所有这些奇怪的语法之后CLR的目的是什么。

[1] http://msdn.microsoft.com/en-us/library/7h62478z.aspx

[2] Adding a user control using Windows Form designer

1 个答案:

答案 0 :(得分:1)

按照下面的步骤进行Visual Studio 2010.这些步骤对Visual Studio 2012也应该有效。

  1. 创建一个新的 VisualC ++ - > CLR - > ClassLibrary 项目(例如CustomDataGridView)
  2. System.Windows.Forms 引用添加到项目中
  3. CustomDataGridView.h 的内容更改为:

    #pragma once
    
    using namespace System;
    using namespace System::Windows::Forms;
    
    namespace CustomDataGridView 
    {
        public ref class MyDataGridView : DataGridView
        {
            // TODO: You can include your custom behavior here.
        };
    }
    
  4. 编译项​​目
  5. 使用表单打开/创建项目,然后打开该表单
  6. 右键单击工具箱,然后选择选择项目...
  7. 浏览 CustomDataGridView.dll 并加载自定义控件
  8. 现在 MyDataGridView 应该在ToolBox中列出,你可以通过Drag& Drop
  9. 将它放到表单上