Добавление кнопки в ComboBox и изменение размера внутреннего элемента управления TextBox.C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Добавление кнопки в ComboBox и изменение размера внутреннего элемента управления TextBox.

Сообщение Anonymous »

Я пытаюсь создать собственное поле со списком. Я хочу иметь кнопку внутри поля со списком, чтобы пользователь мог добавлять элементы в свой источник данных.
Я знаю, что мне нужно использовать WndProc, чтобы получить внутреннее текстовое поле, но я не уверен, как его получить, а затем отредактировать. ее длина не должна закрывать кнопку при выборе.
прямо сейчас, когда я навожу указатель мыши на поле со списком или ввожу его для проверки редактирования, кнопка закрывается элементом управления редактированием внутреннего текстового поля.< /p>
так выглядит поле со списком, когда я ввожу
[img]https://i.sstatic. net/tCvpH9uy.png[/img]

вот как я хочу, чтобы поле со списком выглядело
Изображение

мой код - полный беспорядок от попыток разобраться в этом, я ни к чему не добился действительно.
Я скажу, что добавил элемент управления «Кнопка» в поле со списком, поскольку хочу получить доступ к встроенным функциям.
public ComboBoxButton() : base()
{

_button1.Size = buttonSize;
this.DrawMode = DrawMode.OwnerDrawVariable;
_button1.BackColor = SystemColors.Control;
_button1.Text = "?";
_button1.Location = buttonLocation;
this.Controls.Add(_button1);
SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
}

Я попробовал несколько разных способов получить контроль над редактированием через
[DllImport("user32.dll", CharSet = CharSet.Auto)]
internal static extern bool GetComboBoxInfo(IntPtr hWnd, ref COMBOBOXINFO pcbi);

Я также нашел этот код и надеялся, что смогу отредактировать его, чтобы изменить размер текстового поля, но не смог
private class TextWindow : NativeWindow
{
[StructLayout(LayoutKind.Sequential)]
private struct RECT
{
public int Left;
public int Top;
public int Right;
public int Bottom;
}

private struct COMBOBOXINFO
{
public Int32 cbSize;
public RECT rcItem;
public RECT rcButton;
public int buttonState;
public IntPtr hwndCombo;
public IntPtr hwndEdit;
public IntPtr hwndList;
}

[DllImport("user32.dll", EntryPoint = "SendMessageW", CharSet = CharSet.Unicode)]
private static extern IntPtr SendMessageCb(IntPtr hWnd, int msg, IntPtr wp, out COMBOBOXINFO lp);

public TextWindow(ComboBox cb)
{
COMBOBOXINFO info = new COMBOBOXINFO();
info.cbSize = Marshal.SizeOf(info);
SendMessageCb(cb.Handle, 0x164, IntPtr.Zero, out info);
this.AssignHandle(info.hwndEdit);
}

protected override void WndProc(ref Message m)
{
if (m.Msg == (0x0302))
{
MessageBox.Show("No pasting allowed!");
return;
}
base.WndProc(ref m);
}
}

private TextWindow textWindow;

protected override void OnHandleCreated(EventArgs e)
{
textWindow = new TextWindow(this);
base.OnHandleCreated(e);
listBoxHandle = GetComboBoxListInternal(this.Handle, out COMBOBOXINFO info);
}

protected override void OnHandleDestroyed(EventArgs e)
{
textWindow.ReleaseHandle();
base.OnHandleDestroyed(e);
}


Подробнее здесь: https://stackoverflow.com/questions/785 ... ng-control
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Добавление кнопки в ComboBox и изменение размера внутреннего элемента управления TextBox.
    Anonymous » » в форуме C#
    0 Ответы
    58 Просмотры
    Последнее сообщение Anonymous
  • Добавление кнопки в ComboBox и изменение размера внутреннего элемента управления TextBox.
    Anonymous » » в форуме C#
    0 Ответы
    24 Просмотры
    Последнее сообщение Anonymous
  • Получить элемент управления TextBox из ComboBox
    Anonymous » » в форуме C#
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Получить элемент управления TextBox из ComboBox
    Anonymous » » в форуме C#
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Почему изменение внутреннего элемента меняет элемент скопированного списка, а изменение всего элемента — нет
    Anonymous » » в форуме Python
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»