powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / DataGridView и всплывающая форма
1 сообщений из 1, страница 1 из 1
DataGridView и всплывающая форма
    #39162829
Kolu4ka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет!
Есть DataGridView, нужно чтобы при наведении на ячейку в столбце "test" выскакивала формочка с расширенной информацией. Если курсор уходит на другую строку, то появляется новая формочка с информацией из другой строки. Если курсор уходит из грида или в другие столбцы, то форма пропадает.
Сделала так:



Но когда курсор уходит в зону №1 или №2, то форма не пропадает.
Подскажите какие использовать события чтобы правильно отрабатывать ситуацию. Может кто-то вообще предложит другой вариант отображения информации. Кол-во строк в всплывающей формочке может быть разное.

Код формы с гридом

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
 public partial class JournalForm : Form
    {
        private JournalConroller jcontroller = new JournalConroller();
        private int lastcolumn = 0;
        private int lastrow = 0;
        private Form f;

        public JournalForm()
        {
            InitializeComponent();
            edgvKeyJournal.CellMouseMove += new DataGridViewCellMouseEventHandler(edgvKeyJournal_CellMouseMove);
        }

        void edgvKeyJournal_CellMouseMove(object sender, DataGridViewCellMouseEventArgs e)
        {
            if ((sender as ExtDataGridView).Columns[e.ColumnIndex].Name == "Keys" && e.RowIndex >= 0)
            {
                if (e.RowIndex != lastrow || e.ColumnIndex != lastcolumn)
                {
                    //если курсор в нужном столбце и индексы столбцов изменились
                    if (f != null && f.Visible)
                    {
                        f.Close();
                        f.Dispose();
                    }
                    f = new EntranceProvForm(jcontroller.GetRowDetail(Convert.ToInt32((sender as ExtDataGridView).Rows[e.RowIndex].Cells["RowID"].Value)));
                    f.StartPosition = FormStartPosition.Manual;
                    f.Location = Cursor.Position;
                    f.FormBorderStyle = FormBorderStyle.None;
                    f.ShowInTaskbar = false;
                    f.Show();
                }
            }
            else
            {
                if (e.RowIndex != lastrow || e.ColumnIndex != lastcolumn)
                {
                    if (f != null && f.Visible)
                    {
                        f.Close();
                        f.Dispose();
                    }
                }
            }
            lastcolumn = e.ColumnIndex;
            lastrow = e.RowIndex;
        }
    }



jcontroller.GetRowDetail возвращает LIST который отображается в гриде на всплывающей формочке EntranceProvForm.

пробовала также событие CellMouseLeave, но все равно формочка остается если курсор уходит в зону 1,2.
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / DataGridView и всплывающая форма
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]