| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Разработка Windows Forms > Пиксельные координаты DataGridViewCell |
| Автор: Linus 7.12.2006, 20:01 |
| Здравствуйте, люди добрые. Прошу руку помощи. У меня имеется DataGridView, в котором есть столбец (DataGridViewTextBoxColumn) и очень надо на месте одной из ячеек поместить ComboBox. Так как изменить тип одной ячейки этой колонки я не смог, то подумал, что можно просто создать Combobox на месте этой одной ячейки. Только тут опять неприятности. Я не знаю, как найти координаты ячейки DataGridView (чтобы налепить на это место Combobox). В самом DataGridView используются полосы прокрутки (т.е. комбобокс тоже должен "летать" вместе с остальными ячейками грида при прокрутке). Помогите кто чем может, как это реализовать... |
| Автор: Dmitriy_Donetsk 8.12.2006, 00:17 | ||||
Linux,
Вот довольно простой способ, как в любой ячейке DataGridView (в моем случае 0,0) поместить ComboBox:
И комбобокс "летает" |
| Автор: Linus 8.12.2006, 05:26 |
| Dmitriy_Donetsk, спасибо Вам огромное, помогло, именно то, что надо |
| Автор: Dmitriy_Donetsk 8.12.2006, 22:21 | ||||
| Linux, Извеняюсь за поздний ответ, итак... Координаты dataGridView по которым вы кликнули мышкой можно получить:
Я так понимаю что вам подходит именно этот вариант, но можно еще использовать событие CellClick
Теперь каждой клетке dataGridView вы можете назначить свой обработчик события |
| Автор: Linus 9.12.2006, 00:41 |
| Dmitriy_Donetsk, а если для редактирования ячейки пользователь не будет использовать мышь? Например, просто нажмёт на ячейке пробел. То есть как узнать координаты именно редактируемой ячейки, чтобы используя эти координаты рассчитать Location окошка, которое выскочет? Сколько я уже не смотрел различных свойств, нигде этого и не нашёл... Заранее благодарен |
| Автор: Linus 9.12.2006, 13:49 | ||
Ура, я нашёл! Так близко лежало, а я так долго искал)
Dmitriy_Donetsk, большое Вам спасибо за помощь |
| Автор: Dmitriy_Donetsk 9.12.2006, 13:59 | ||||||
Linus,
Если мы редактируем клетку в DataGridView, то единственное что мы можем получить это координаты этой клетки (номер строки и столбца); Прийдется ручками подгонять Location формы под эти номера. Используем свойство CellBeginEdit. Создаем новую форму Form2, устанавл. свойство FormBorderStyle в None. (эта форма будет выскакивать рядом с редактируемой клеткой)
Насколько я понимаю, это то, что вам требовалось, хотя как-то это сложно. не проще ли просто сделать каждую Cell в dataGridView Комбобоксом со своими значениями? Для быстроты можно использовать не DataGridViewComboBoxCell, а DataGridViewComboBoxColumn. Добавлено @ 14:07 Linus,
Congratulations |
| Автор: Linus 9.12.2006, 14:28 | ||
Мне нужно было, чтобы столбец имел тип DataGridViewTextBoxColumn, и только одна ячейка в нём была комбобоксом, и ещё, чтобы при редактировании определённых ячеек у меня выскакивало окошко для ввода 4-х чисел A,B,C,D (в окошке 4 TextBox), а после выхода из этого окна чтобы в редактируемую ячейку вывелась строка в формате A; B; C; D ("3.14; 15; 168; 123.65"). Теперь всё работает, thanx |