Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在ocx中存在大小(float、float、float)的C#项目中使用ActiveX控件_C#_Activex - Fatal编程技术网

在ocx中存在大小(float、float、float)的C#项目中使用ActiveX控件

在ocx中存在大小(float、float、float)的C#项目中使用ActiveX控件,c#,activex,C#,Activex,我正在尝试编写一个程序,在.NET3.5项目中使用第三方ActiveX控件。我使用工具箱将其添加到表单中,并将AxLEADLib、LEADLib和stdole添加到项目的引用中 但是,自动生成的代码将 this.axLEAD1.Size = new System.Drawing.Size(100, 50); 但在AxLEAD中,两者都存在 public System.Drawing.Size Size {get; set;} public virtual short Size(float fW

我正在尝试编写一个程序,在.NET3.5项目中使用第三方ActiveX控件。我使用工具箱将其添加到表单中,并将AxLEADLib、LEADLib和stdole添加到项目的引用中

但是,自动生成的代码将

this.axLEAD1.Size = new System.Drawing.Size(100, 50);
但在AxLEAD中,两者都存在

public System.Drawing.Size Size {get; set;}
public virtual short Size(float fWidth, float fHeight, short iFlags)
因此,当我试图在窗体上设置控件的大小时,在designer.cs中,我得到一个错误
无法分配给“size”,因为它是一个“方法组”
。我能做些什么来回避这个问题?如何设置控件的大小


这是一个从VB6移植过来的项目,在旧项目中似乎没有进行任何特殊处理。

这是一种特定于.NET的故障模式,由AxHost包装器引起。Size属性继承自控件,并与ActiveX控件中的Size方法冲突

不太容易修复。使用/source命令行选项运行AxImp.exe,使其生成代码而不是程序集。然后可以编辑代码并将其添加到项目中。但编辑很棘手,因为它是继承的属性。大概是这样的:

[Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public new Size Size { get; set; }

public Size Size2 { 
   get { return base.Size; }
   set { base.Size = value; }
}

第一个对设计器隐藏Size属性。Size2属性是您可以在designer中设置的属性。

我无法让Hans的解决方案正常工作,但我确实找到了解决方法。我把出错的线路改为

((Control)this.axLEAD1).Size = new System.Drawing.Size(100, 50);

而且效果很好。我只需要在每次代码重新生成时更正它。

我尝试用c#声明类,方法和属性与您建议的相同-编译器未能编译该类(已声明同名的成员)。我想知道它是如何为你的ActiveXI工作的,但是它给出了一个错误,
类型“AxLEADLib.AxLEAD”已经包含了“Size”的定义。
我也尝试过将函数从Size重命名为size2,它可以很好地编译,但是当我尝试在我的表单中使用dll时,它不允许我使用它将控件添加到工具箱中,这正常吗?当您将生成的源代码文件添加到项目中时,编译后控件应显示在工具箱的顶部。有一个选项可以控制此操作:工具+选项、向下滚动、Windows窗体设计器、常规、AutoToolBoxPopulate=True。