如何使用user32.dll将VB转换为CSharp?

时间:2020-07-15 14:54:55

标签: c# vb.net

我想在VS 2017中将我的VB代码转换为C#代码,但是C#中似乎没有很多代码。 我在此项目中使用的是user32.dll和comctl32.dll。

#我的VB.net代码。

1.   Case No.1    
Private Const WS_POPUP As Integer = &H80000000
Private Const TTF_TRANSPARENT As Short = &H100S
Private Const TTF_CENTERTIP As Short = &H2S

2.  Case No.2
Public Sub ShowToolTip(ByRef OwnerControl As Windows.Forms.Control, ByVal Message As String, Optional ByVal Title As String = "Information",
    Optional ByVal BackColor As Integer = 0, Optional ByVal IconType As ttIconType = ttIconType.TTIconInfo, Optional ByVal VisibleTime As Integer = 5000)
    Me.TipText = Message
    Me.PopupOnDemand = True
    Me.CreateToolTip(OwnerControl.Handle.ToInt32)
    Me.VisibleTime = VisibleTime
    Me.Title = Title
    Me.Icon = IconType
    If BackColor > 0 Then Me.BackColor = BackColor
    Me.Show(10, OwnerControl.Height - 1, OwnerControl.Handle.ToInt32)
End Sub

C#代码

public void ShowToolTip(System.Windows.Forms.Control OwnerControl, string Message, string Title = "Information", int BackColor = 0, ttIconType IconType = ttIconType.TTIconInfo, int VisibleTime = 5000)
{
    TipText = Message;
    PopupOnDemand = true;
    this.CreateToolTip(OwnerControl.Handle.ToInt32);
    this.VisibleTime = VisibleTime;
    this.Title = Title;
    Icon = IconType;
    if (BackColor > 0)
        this.BackColor = BackColor;
    //int argX = 10;
    //var argY = OwnerControl.Height - 1;        
    this.Show(10, OwnerControl.Height, OwnerControl.Handle.ToInt32);
}

实际上,这行代码不存在

 OwnerControl.Handle.ToInt32

当然,我对使用“ user32.dll”和“ comctl32.dll”了解不多。

有人可以帮我将其翻译成C#吗?

谢谢。

1 个答案:

答案 0 :(得分:2)

IntPtr.ToInt32是一种方法,而不是属性。在C#方法中,调用必须使用括号,这在VB中是可选的。

所以

OwnerControl.Handle.ToInt32()

短整数为Int16 整数是Int32

但是这些看起来像PInvoke值,因此这些符号并不重要,它们应该都应该是无符号的。例如

private const UInt32 WS_POPUP = 0x80000000;
private const UInt16 TTF_TRANSPARENT = 0x00;
private const UInt16 TTF_CENTERTIP = 0x2;
相关问题