我想在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#吗?
谢谢。
答案 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;