Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/26: Рейтинг темы: голосов - 26, средняя оценка - 4.92
2 / 2 / 1
Регистрация: 10.03.2013
Сообщений: 100

Как на панели заставить кнопку появляться и исчезать при наведении - и отводе курсора

26.02.2015, 14:20. Показов 5624. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Опишу такой фрагмент код:

1. На форму бросил панель (panel1)

2. Заполняю эту панель динамически созданным объектом тоже типа Panel, состоящим из RichTextBox и Button.

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
 public partial class Form1 : Form
 {
     public Form1()
     {
         InitializeComponent();
     }
 
     class MyWindow : Panel
     {
         RichTextBox rtbContent;
         Button button;
 
         public MyWindow(Panel panel)
         {
             Parent = panel;
             Dock = DockStyle.Fill;
 
             rtbContent = new RichTextBox() { Parent = this, Dock = DockStyle.Fill };
             button = new Button() { Parent = panel, Dock = DockStyle.Bottom, Text = "создать карточку", 
                                               Size = new Size(50, 50) };
         }
     }
 
     private void Form1_Load(object sender, EventArgs e)
     {
         MyWindow w = new MyWindow(panel1);
     }
 }
Все работает, но кнопка button постоянно присутствует.
Я бы хотел, что бы кнопка появлялась при наведении курсора на RichTextBox (или родителя - panel. Не знаю), и ее можно было бы нажать.
При уводе мышки с RichTextBox (или panel) кнопка исчезала.

Пробовал поиграться с событиями мышки для Panel, RichTextBox и Button . Ничего не получилось.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.02.2015, 14:20
Ответы с готовыми решениями:

При наведении курсора на кнопку вывести эту кнопку на передний план
Можно ли сделать так что при наведении курсора на Button в запущенном проекте он бы вставал а передний план, если да то как

Смена цвета панели при наведении курсора
Здравствуйте! На форме расположено несколько панелей, допустим 20, называются они допустим p1,p2..p20 Как сделать, чтобы при наведении...

Текст при наведении курсора на кнопку
Подскажите, как сделать так, чтобы при наведении курсора на определенную кнопку появлялся текст под мышью. Спасибо!

10
307 / 284 / 102
Регистрация: 06.05.2014
Сообщений: 861
26.02.2015, 14:44
Андрей69, каким же образом возможно будет нажать на кнопку, если она будет видна только тогда, когда курсор будет на TextBox'е?
0
116 / 116 / 42
Регистрация: 27.02.2013
Сообщений: 899
26.02.2015, 19:53
Андрей69, зачем вам кнопка тогда??? просто для вида? может вам лучше сделать кнопку активной, когда есть текст в richtextboxe?
0
2 / 2 / 1
Регистрация: 10.03.2013
Сообщений: 100
26.02.2015, 22:04  [ТС]
Цитата Сообщение от blackstar Посмотреть сообщение
Андрей69, зачем вам кнопка тогда??? просто для вида? может вам лучше сделать кнопку активной, когда есть текст в richtextbox?
Если я наведу мышку на richtextbox с текстом, то будет предложено (появится кнопка) создать карточку из слов , которые я надергаю из этого же richtextbox наведя и щелкая там на нужные слова.
Такова задумка. Для работы вещь не важная. Можно кнопку ведь сделать и постоянно видимой.
Но, так будет эстетичней, что ли. ЯТД.
0
11 / 11 / 3
Регистрация: 29.12.2010
Сообщений: 50
26.02.2015, 22:47
У панели есть события MouseEnter и MouseLeave.
0
2 / 2 / 1
Регистрация: 10.03.2013
Сообщений: 100
26.02.2015, 23:00  [ТС]
Цитата Сообщение от xameli0n Посмотреть сообщение
У панели есть события MouseEnter и MouseLeave.
Так то оно так. Но , в моем случае, эти события не срабатывают. Все пространство занято RichTextBox -ом
0
11 / 11 / 3
Регистрация: 29.12.2010
Сообщений: 50
26.02.2015, 23:31
Цитата Сообщение от Андрей69 Посмотреть сообщение
Сообщение от xameli0n
У панели есть события MouseEnter и MouseLeave.
Так то оно так. Но , в моем случае, эти события не срабатывают. Все пространство занято RichTextBox -ом
Собственно у RichTextBox есть точно такие же события. Только что проверил.
0
2 / 2 / 1
Регистрация: 10.03.2013
Сообщений: 100
26.02.2015, 23:47  [ТС]
Цитата Сообщение от xameli0n Посмотреть сообщение
Собственно у RichTextBox есть точно такие же события. Только что проверил.
Все это пробовал. Вот код. Если не сложно попробуйте его сами и поймете мою проблему.
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
         class MyWindow:Panel
         {
               RichTextBox rtbContent;
               Button button;
 
             public MyWindow(Panel panel)
             {
                   Parent = panel;
                   Dock = DockStyle.Fill;
                   Name = "win1";
 
 
                   rtbContent = new RichTextBox() { Parent = this, Dock= DockStyle.Fill };
                   button = new Button() { Parent = this, Dock = DockStyle.Bottom, Text = "создать карточку", Size = new Size(50, 50)};
 
                   rtbContent.MouseEnter += (o, e) => {  button.Show(); };
                   rtbContent.MouseLeave += (o, e) => { button.Hide(); };
                   button.Click += (o, e) => { MessageBox.Show("сделан клик по кнопке"); };
                   button.Hide();
 
     private void Form1_Load(object sender, EventArgs e)
     {
         MyWindow w = new MyWindow(panel1);
     }
Хотел все это инкапсулировать в классе MyWindow, без задействования сторонних кнопок на форме.

Если не получится, то буду вызывать кнопку двойным кликом по ричу. Но, хотелось поэлегантней сделать
0
11 / 11 / 3
Регистрация: 29.12.2010
Сообщений: 50
27.02.2015, 00:17
Ну собственно код частично работает =)
Точнее кнопку то он отображает, но как только курсор переводится на кнопку он оказывается вне RichTextBox и кнопка исчезает, соответственно как только это происходит - курсор опять в RichTextBox и кнопка появляется и тд.
Как вариант можно проверять не на кнопке ли находится курсор перед вызовом button.Hide()
1
2 / 2 / 1
Регистрация: 10.03.2013
Сообщений: 100
27.02.2015, 00:41  [ТС]
Цитата Сообщение от xameli0n Посмотреть сообщение
Как вариант можно проверять не на кнопке ли находится курсор перед вызовом button.Hide()
Я пробовал. Решить эту задачу не смог.
0
11 / 11 / 3
Регистрация: 29.12.2010
Сообщений: 50
28.02.2015, 00:05
C#
1
2
3
4
5
6
7
8
9
rtbContent.MouseLeave += (o, e) =>
            {
                Point pos = button.PointToClient(Cursor.Position);
                if (!(pos.X > 0 && pos.X <= button.Width && pos.Y > 0 && pos.Y <= button.Height))
                {
                    button.Hide();
                }
            };
button.MouseLeave += (o, e) => { button.Hide(); };
Как то так может...
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.02.2015, 00:05
Помогаю со студенческими работами здесь

Эффект при наведении курсора на кнопку
Всем привет. Подскажите пожалуйста, как можно реализовать похожий эффект при наведении курсора на кнопку?

Изменения курсора при наведении на не активну кнопку
Здравствуйте форумчане,как сделать чтобы при наведении курсора на неактивную кнопку он менялся на 'No',а когда выходил область кнопки назад...

Изменение курсора мыши при наведении на кнопку
А как сделать, чтобы курсор мыши менялся при наведении на кнопку? Как при наведении на ссылку. Один вопрос - одна отдельная тема!

При наведении курсора на кнопку глючит интерфейс
В C++ Builder XE7,при наведении на кнопку, форма принимает черный цвет. Когда отвожу, все обратно становится нормальным, тоже и с Edit,ом ....

Показать форму при наведении курсора на кнопку
Есть сделанная информационная форма с передаваемыми параметрами(win form) 1. Как при наведении на кнопку показывать форму для передачи ...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru