powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / обработка событий вида ctrl+c
3 сообщений из 3, страница 1 из 1
обработка событий вида ctrl+c
    #38776115
Albatross
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть у меня ReadOnly DataGridView, по клику на ячейке я в месте ячейки рисую ReadOnly textbox для удобства копирования фрагментов текста в буфер обмена.
При этом у TextBox Parent - это DataGridView.
Все бы хорошо, но только вот когда в текстбоксе, выделив текст, нажимаешь Ctrl+C, в буфер обмена копируется ячейка целиком из DataGridView, т.е. по сути событие Ctrl+C обрабатывает DataGridView, а не TextBox. Можно ли это как-нибудь исправить?
...
Рейтинг: 0 / 0
обработка событий вида ctrl+c
    #38776198
DS53
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
покажи код "создания" textbox
...
Рейтинг: 0 / 0
обработка событий вида ctrl+c
    #38776243
Albatross
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DS53,

ну примерно так.
c_event_grid это 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.
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.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
private void c_event_grid_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            try
            {
               

                int lft = 0;
                for (int i = 0; i < e.ColumnIndex; i++)
                    lft += c_event_grid.Columns[i].Visible ? c_event_grid.Columns[i].Width : 0;


                int tp = 0;
                for (int i = 0; i < e.RowIndex ; i++)
                    tp += c_event_grid.Rows[i].Visible?c_event_grid.Rows[i].Height:0;

                ClearBox();
                copy_box = new TextBox();
                copy_box.ReadOnly = true;
                copy_box.Multiline = true;
                copy_box.Left = 1+lft ;
                copy_box.Top = 1+tp;//= rct.Top;
                copy_box.Width = c_event_grid.Columns[e.ColumnIndex].Width-2;

                copy_box.Height = c_event_grid.Rows[e.RowIndex].Height-2;

                if (copy_box.Height + copy_box.Top > c_event_grid.Height)
                {
                    copy_box.Height = c_event_grid.Height - copy_box.Top;
                    copy_box.ScrollBars = ScrollBars.Vertical;
                }
                copy_box.Text = c_event_grid.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString();
                copy_box.Parent = c_event_grid;
                copy_box.Visible = true;
                copy_box.BackColor = System.Drawing.SystemColors.Control;
                copy_box.BorderStyle = System.Windows.Forms.BorderStyle.None;
                copy_box.Show();


              




                  }
            catch (Exception ex)
            {
                prjclReportError.ReportError(ex);
            }


        }

   private void ClearBox()
        {
            if (copy_box != null)
            {
                copy_box.Visible = false;
                copy_box = null;

            }
        }



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


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