2013-11-19 2 views
2

I`m vb.net программист и я нашел решение моей проблемы, но в C# по этому адресу: Button inside a winforms textboxКнопка внутри WinForms текстовое поле vb.net

Я преобразовал код vb.net, и она работает хорошо, за исключением того, текст идет снизу здесь кнопка мой переделанный и C# код, пожалуйста скажите мне, где i`m неправильно

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, если кто-нибудь может сказать мне PLS?

Для C# кода кредитов идет на: Hans Passant

+0

Похоже, вы добавили «E» при преобразовании сообщения с C# в VB. '& HED3' должен быть' & HD3'. – endofzero

+0

Пробовал, но все еще не работает :( – user2877885

ответ

3

Похоже, некоторые из кода, связанного с Size и Location неправильно. Попробуйте следующее:

btn.Size = New Size(25, textBox1.ClientSize.Height + 2) 
    btn.Location = New Point(textBox1.ClientSize.Width - btn.Width - 1, -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, &HD3, CType(2, IntPtr), CType((btn.Width << 16), IntPtr)) 
Смежные вопросы