Member 12724527 Ответов: 1

Как заставить кнопки расти во время наведения мыши


Ладно, я хочу, чтобы мои пуговицы стали больше или "увеличились". Вы знаете эти круги, которые, когда вы наводите мышь, увеличиваются, но здесь я хочу, чтобы мои кнопки стали больше. Я кое-что пробовал, но мне было интересно, почему это не работает.
private void Salesbtn_MouseHover(object sender, EventArgs e)
        {
            Salesbtn.Size = new System.Drawing.Size(73, 83);
            
        }
   private void Salesbtn_MouseLeave(object sender, EventArgs e)
        {
           Salesbtn.Size = new System.Drawing.Size(27, 38);
        }

Я также хочу переместить их так, чтобы кнопки, которые выросли, не закрывали другие, которые этого не сделали.
Спасибо, что прочитали это

Что я уже пробовал:

частная Salesbtn_MouseHover недействительным(объект отправителя, EventArgs в электронной)
{
Salesbtn.Размер = новая система.Рисование.Размер (73, 83);

}
частная Salesbtn_MouseLeave недействительным(объект отправителя, EventArgs в электронной)
{
Salesbtn.Размер = новая система.Рисование.Размер (27, 38);
}

[no name]

"это не работает", что именно означает "не работает"? Ваш код* работает*, если вы правильно подключили события.

BillWoodruff

"Я также хочу переместить их так, чтобы кнопки, которые выросли, не закрывали другие, которые этого не сделали."

И как ваша расширяющаяся кнопка "узнает", какие другие элементы управления могут быть покрыты при расширении ?

1 Ответов

Рейтинг:
2

Dave Kreskowiak

Сначала нужно немного посчитать. Поскольку вы не меняете положение верхнего левого угла, ваша кнопка будет "расти" только вправо и вниз. Таким образом, вы должны добавить несколько пикселей к размеру кнопки, но вы также должны вычесть половину этих пикселей в верхние и левые свойства, чтобы сохранить кнопку в центре, где она находится.

Для чего-то подобного я бы, вероятно, больше посмотрел на создание собственного элемента управления кнопками вместо того, чтобы писать и переписывать один и тот же код снова и снова для обработки разных кнопок.


Member 12724527

Я не совсем понимаю. Извините, я научился делать графический интерфейс только потому, что это перетаскивание. Хотя я поищу, как сделать то, что ты говоришь. Спасибо!

Dave Kreskowiak

Хорошо, если вы не знакомы с основными свойствами элементов управления, такими как Top и Left для позиционирования, и с тем, как они работают, вы обнаружите, что это невозможно реализовать.

Вы действительно должны сделать это в своем собственном кнопочном управлении. Понимаете ли вы, как наследовать от других классов и переопределять методы?

Member 12724527

Да, мы узнали это только на днях.

Member 12724527

Не могли бы вы дать мне несколько тем, которые необходимы на курсе c#, в любом случае спасибо за ответ mr. Дейв

Dave Kreskowiak

Я уже это сделал. Вы должны создать новый класс, который наследуется от System.Окна.Формы.Нажмите кнопку и переопределите методы OnMouseEnter и OnMouseLeave. В них вы помещаете свой код для перемещения верхнего левого угла кнопки на половину количества пикселей, на которое вы собираетесь увеличить ширину и высоту кнопки.

В OnMouseEnter вы уменьшаете верхнюю и левую части, скажем, на 3 пикселя и включаете свойства ширины и высоты на 6. В OnMouseLeave вы делаете противоположное, чтобы уменьшить кнопку обратно вниз.

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

Member 12724527

Нет, я имею в виду, что-то, что я могу использовать в качестве ссылки на весь этот курс. Необходимые темы, которые мне понадобятся, я действительно хочу узнать это, и вы кажетесь мне человеком, который много знает о C# и ООП

Dave Kreskowiak

Ссылка на что? Если вы ищете всеобъемлющую книгу, которая охватывает все свойства, методы и события, она называется "документация", и вы найдете ее на MSDN.

Member 12724527

Мистер Дэйв, я сейчас делаю то, что вы предлагаете, должно ли это быть так?
класс GrowingButton: кнопка
{

охраняемых переопределить недействительными метода onmousehover(EventArgs в электронной)
{

база.OnMouseHover(e);
// код для выращивания
}

охраняемых переопределить недействительными OnMouseLeave(EventArgs в электронной)
{
база.OnMouseLeave(e);
// обратный код
}
}
У меня еще нет кода

Dave Kreskowiak

Пока все хорошо. Ваш код в обоих методах будет идти выше вызовов к base методы.

BillWoodruff

Не зная, что такое ваш курс, какие материалы курса и многое другое о вас, вы не получите полезных советов. Похоже, вам нужно изучить основы C# и Windows Forms; для этого есть много полезных книг, в том числе и бесплатных, таких как:

http://www.codeproject.com/Messages/4977275/free-introductory-book-on-Csharp-programming-from.aspx

Member 12724527

Спасибо! Я действительно заблудился в этом курсе. Спасибо вам, ребята