【发布时间】:2013-12-02 21:23:13
【问题描述】:
我是 vb.net 程序员,我找到了我的问题的解决方案,但在 c# 中的这个地址:Button inside a winforms textbox
我已将代码转换为 vb.net,它运行良好,只是按钮下方的文本是我转换后的 c# 代码,请告诉我哪里错了
C#代码
protected override void OnLoad(EventArgs e) {
var btn = new Button();
btn.Size = new Size(25, textBox1.ClientSize.Height + 2);
btn.Location = new Point(textBox1.ClientSize.Width - btn.Width, -1);
btn.Cursor = Cursors.Default;
btn.Image = Properties.Resources.star;
textBox1.Controls.Add(btn);
// Send EM_SETMARGINS to prevent text from disappearing underneath the button
SendMessage(textBox1.Handle, 0xd3, (IntPtr)2, (IntPtr)(btn.Width << 16));
base.OnLoad(e);
}
[System.Runtime.InteropServices.DllImport("user32.dll")]
private static extern IntPtr SendMessage(IntPtr hWnd, int msg, IntPtr wp, IntPtr lp);
我的 VB.NET 代码
btn.Size = New Size(25, Me.ClientSize.Height + 2)
btn.Location = New Point(Me.ClientSize.Width - btn.Width - 1)
btn.FlatStyle = FlatStyle.Flat
btn.Cursor = Cursors.Default
btn.Image = Image.FromFile("C:\ansoft\Soljica\texture\tone.png")
btn.FlatAppearance.BorderSize = 0
textbox1.Controls.Add(btn)
SendMessage(textbox1.Handle, &HED3, CType(2, IntPtr), CType((btn.Width << 16), IntPtr))
<System.Runtime.InteropServices.DllImport("user32.dll")> _
Private Shared Function SendMessage(ByVal hWnd As IntPtr, ByVal msg As Integer, ByVal wp As IntPtr, ByVal lp As IntPtr) As IntPtr
End Function
如果有人可以告诉我,vb.net 代码有什么问题?
c# 代码学分转到:Hans Passant
【问题讨论】:
-
在将消息从 C# 转换为 VB 时,您似乎添加了一个“E”。
&HED3应该是&HD3。 -
试过了还是不行:(
标签: winforms button textbox controls add