Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 09.10.2016
Сообщений: 11

ContextMenuStrip аналог intellisense

02.07.2018, 19:55. Показов 1508. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!
Пишу программку с использованием datagridview. При вводе текста в ячейку хочу сделать подсказку с выбором вариантов по вводу (как Visual Studio intellisense). Для этих целей использую ContextMenuStrip.
При вводе текста, когда появляется подсказка, фокус переключается на подсказку, не давая дальше вводить текст в ячейку.
Можно ли как-то оставить фокус на ячейке datagridview, а ContextMenuStrip висел бы рядом и изменялся от дальнейшего ввода? При этом хотелось что бы ContextMenuStrip реагировал на нажатие стрелок вверх/вниз.
Может необходимо использовать какой-то другой элемент интерфейса, не ContextMenuStrip.
Заранее спасибо.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.07.2018, 19:55
Ответы с готовыми решениями:

IntelliSense
У меня на VS2010 в Windows Forms не работает система подсказок/подстановок. Что делать?

ContextMenuStrip
Как получить индекс нажатой менюшки ???

ContextMenuStrip
подскажите как заставить работать ContextMenuStrip? кинул на форму, у него сделал один пункт меню, у требуемого контрола в свойстве...

8
 Аватар для Shogun31337
557 / 534 / 225
Регистрация: 02.11.2016
Сообщений: 1,538
02.07.2018, 23:00
Лучший ответ Сообщение было отмечено Darth_Bane как решение

Решение

Darth_Bane, есть вот такой способ реализовать автодополнение в datagridview:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
    if(dataGridView1.CurrentCell.ColumnIndex == 1) //В каком столбце будет автодополнение
    {
        (e.Control as TextBox).AutoCompleteMode = AutoCompleteMode.SuggestAppend;
        (e.Control as TextBox).AutoCompleteSource = AutoCompleteSource.CustomSource;
 
        //Источник строк для автодополнения. При необходимости можно взять из БД.
        AutoCompleteStringCollection autoCompleteSource = new AutoCompleteStringCollection()
        {
            "asdask",
            "asfdugf",
            "lsdfuhoug",
            "lusdfgi7g"
        };
 
        (e.Control as TextBox).AutoCompleteCustomSource = autoCompleteSource;
    }
    else
    {
        (e.Control as TextBox).AutoCompleteMode = AutoCompleteMode.None;
    }
}
1
0 / 0 / 0
Регистрация: 09.10.2016
Сообщений: 11
03.07.2018, 15:47  [ТС]
Shogun31337, Спасибо! То что надо
0
 Аватар для Shogun31337
557 / 534 / 225
Регистрация: 02.11.2016
Сообщений: 1,538
03.07.2018, 15:59
Цитата Сообщение от Darth_Bane Посмотреть сообщение
Спасибо! То что надо
На здоровье! Рад, что помогло!
0
0 / 0 / 0
Регистрация: 09.10.2016
Сообщений: 11
17.07.2018, 20:38  [ТС]
Shogun31337, подскажи пожалуйста еще.
Как можно понять, что ввод был осуществлен через это всплывающее автодополнение например нажатием кнопки "Tab", "Enter" или щелчком мыши по выбранной строке.
В голову пришло только отслеживание у datagridview событий KeyDown и CellEndEdit, следить какая кнопка была нажата последней при вводе.
Мне кажется это не верно и слишком на мудрено будет, сходу не поучилось заставить работать.
Может есть какой-то метод/событие вызываемый если ввод был осуществлен с помощью автодополнения?
0
 Аватар для Shogun31337
557 / 534 / 225
Регистрация: 02.11.2016
Сообщений: 1,538
17.07.2018, 20:45
Цитата Сообщение от Darth_Bane Посмотреть сообщение
Может есть какой-то метод/событие вызываемый если ввод был осуществлен с помощью автодополнения?
Думаю, что вряд ли есть что то подобное... По крайней мере, ни о чем подобном не слышал.
Как реализовать? Навскидку, приходит мысль контролировать изменение текста в ячейке. Если изменилась длина на 1 символ, то ввод с клавиатуры, если больше, то дополнение... Но будет ли такой способ работать хз...
А Вам вообще зачем такая штука понадобилась?
0
0 / 0 / 0
Регистрация: 09.10.2016
Сообщений: 11
18.07.2018, 05:03  [ТС]
Shogun31337, Спасибо, идея хорошая, вечером буду пробовать воплотить.
Понадобилось для того, что бы:
При вводе данных в первый столбец, если введенные данные были подставлены автодополнением, то заполнить другие столбцы данным соответствующими данным в первом столбце.
0
 Аватар для Shogun31337
557 / 534 / 225
Регистрация: 02.11.2016
Сообщений: 1,538
18.07.2018, 09:18
Цитата Сообщение от Darth_Bane Посмотреть сообщение
При вводе данных в первый столбец, если введенные данные были подставлены автодополнением, то заполнить другие столбцы данным соответствующими данным в первом столбце.
Ну так в таком случае, если я правильно понимаю, нужно контролировать не был ли введен текст с помощью автодополнения, а есть ли введенное пользователем значение в списке для автозаполнения других столбцов. А это уже другое дело! И это вполне себе можно контролировать. Например, есть такое событие CellEndEdit. Возникает оно, как не трудно догадаться в случае, если значение в ячейке было изменено. Вот в этот момент и нужно узнать есть ли такое значение в списке и если есть, то выполнить какой то код.
1
0 / 0 / 0
Регистрация: 09.10.2016
Сообщений: 11
18.07.2018, 16:04  [ТС]
Shogun31337, над таким решением сегодня тоже задумывался, единственное что не радует проходить надо по всему списку и сравнивать введенную строку. Надеялся на простое готовое решение
Спасибо за ответы
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.07.2018, 16:04
Помогаю со студенческими работами здесь

ContextMenuStrip
Доброго времени суток. Помогите пожалуйста. Как изменить цвет button из контекстного меню (ContextMenuStrip ) по клику на этом самом...

Комментарии IntelliSense
Пишу в классе комментарии для IntelliSense для методов и свойств. Из солюшена, в котором работаю, они видны. Из другого, если подключать...

ошибка IntelliSense
Всем привет. Имеем VS2012 и следующий код: #include <iostream> #include <cstdlib> #include <vector> #include <algorithm>...

Ошибки IntelliSense
Скопировал проекты на др комп, в результате на любой повод выдаются ошибки, но при этом всё работает и всё компилится. Куда нужно рыть?...

Подсказки в C# IntelliSense
Как сделать так чтобы при написании команды подсвечивалась выбиралась наиболее подходящая команда при нажатии на Enter? Просто если я...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
1С: Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru