Скругленная кнопка C# не отображается в панели инструментов Visual Studio ⇐ C#
-
Anonymous
Скругленная кнопка C# не отображается в панели инструментов Visual Studio
Я перепробовал все возможные варианты, чтобы заставить это работать, но кнопка просто не появляется на панели инструментов, как бы я ни старался
Я пытался перестроить решение и ожидал, что оно будет выглядеть так же, как и все обучающие видеоролики, которые я смотрел, но оно не появилось.
Это мой код согласно учебнику, который я смотрел, за исключением того, что я изменил пространство имен, но в уроке он отображался на панели инструментов для него, но не для меня, поэтому я понятия не имею, что происходит
Урок, ссылка на который находится здесь:
с использованием системы; использование System.Collections.Generic; используя System.Linq; использование System.Text; использование System.Threading.Tasks; использование System.Windows.Forms; использование System.Drawing; используя System.Drawing.Drawing2D; использование System.ComponentModel; пространство имен MovezenInstaller.PillButton { публичный класс RJButton: Кнопка { //Поля частный int borderSize = 0; частный int borderRadius = 0; частный цвет borderColor = Color.PaleVioletRed; //Характеристики [Категория("Расширенный код RJ")] общественный интервал BorderSize { получить {вернуть borderSize; } набор { BorderSize = значение; это.Инвалидате(); } } [Категория("Расширенный код RJ")] public int BorderRadius { получить {вернуться borderRadius; } набор { границаРадиус = значение; это.Инвалидате(); } } [Категория("Расширенный код RJ")] общественный цвет { получить {вернуться borderColor; } набор { цвет границы = значение; это.Инвалидате(); } } [Категория("Расширенный код RJ")] общественный цвет { получить {вернуть это.BackColor; } установить { this.BackColor = значение; } } [Категория("Расширенный код RJ")] общедоступный цвет TextColor { получить {вернуть это.ForeColor; } установить {this.ForeColor = значение; } } //Конструктор общедоступная кнопка RJButton() { this.FlatStyle = FlatStyle.Flat; this.FlatAppearance.BorderSize = 0; this.Size = новый размер (150, 40); this.BackColor = Color.MediumSlateBlue; this.ForeColor = Цвет.Белый; this.Resize += новый EventHandler(Button_Resize); } //Методы частный GraphicsPath GetFigurePath (прямоугольник, внутренний радиус) { Путь GraphicsPath = новый GraphicsPath(); плавающий размер кривой = радиус * 2F; путь.StartFigure(); path.AddArc(rect.X, rect.Y, CurveSize, CurveSize, 180, 90); path.AddArc(rect.Right - CurveSize, rect.Y, CurveSize, CurveSize, 270, 90); path.AddArc(rect.Right - CurveSize, rect.Bottom - CurveSize, CurveSize, CurveSize, 0, 90); path.AddArc(rect.X, rect.Bottom - CurveSize, CurveSize, CurveSize, 90, 90); путь.ЗакрытьРисунок(); Обратный путь; } защищенное переопределение void OnPaint (PaintEventArgs pevent) { base.OnPaint(pevent); Прямоугольник rectSurface = this.ClientRectangle; Прямоугольник rectBorder = Rectangle.Inflate(rectSurface, -borderSize, -borderSize); ИНТ SmoothSize = 2; если (borderSize > 0) SmoothSize = BorderSize; если (borderRadius > 2) //Закругленная кнопка { используя (GraphicsPath pathSurface = GetFigurePath(rectSurface, borderRadius)) используя (GraphicsPath pathBorder = GetFigurePath(rectBorder, borderRadius - borderSize)) используя (Pen penSurface = new Pen(this.Parent.BackColor, SmoothSize)) используя (Pen penBorder = новое перо (borderColor, borderSize)) { pevent.Graphics.SmoothingMode = SmoothingMode.AntiAlias; //Поверхность кнопки this.Region = новый регион (pathSurface); //Рисуем границу поверхности для HD-результата pevent.Graphics.DrawPath(penSurface, pathSurface); //Граница кнопки если (borderSize >= 1) //Рисуем границу управления pevent.Graphics.DrawPath(penBorder, pathBorder); } } else //Обычная кнопка { pevent.Graphics.SmoothingMode = SmoothingMode.None; //Поверхность кнопки this.Region = новый регион (rectSurface); //Граница кнопки если (borderSize >= 1) { используя (Pen penBorder = новое перо (borderColor, borderSize)) { penBorder.Alignment = PenAlignment.Inset; pevent.Graphics.DrawRectangle(penBorder, 0, 0, this.Width - 1, this.Height - 1); } } } } защищенное переопределение void OnHandleCreated (EventArgs e) { base.OnHandleCreated(e); this.Parent.BackColorChanged += новый EventHandler(Container_BackColorChanged); } частный void Container_BackColorChanged (отправитель объекта, EventArgs e) { это.Инвалидате(); } частный void Button_Resize (отправитель объекта, EventArgs e) { если (borderRadius > this.Height) borderRadius = this.Height; } } }```
Я перепробовал все возможные варианты, чтобы заставить это работать, но кнопка просто не появляется на панели инструментов, как бы я ни старался
Я пытался перестроить решение и ожидал, что оно будет выглядеть так же, как и все обучающие видеоролики, которые я смотрел, но оно не появилось.
Это мой код согласно учебнику, который я смотрел, за исключением того, что я изменил пространство имен, но в уроке он отображался на панели инструментов для него, но не для меня, поэтому я понятия не имею, что происходит
Урок, ссылка на который находится здесь:
с использованием системы; использование System.Collections.Generic; используя System.Linq; использование System.Text; использование System.Threading.Tasks; использование System.Windows.Forms; использование System.Drawing; используя System.Drawing.Drawing2D; использование System.ComponentModel; пространство имен MovezenInstaller.PillButton { публичный класс RJButton: Кнопка { //Поля частный int borderSize = 0; частный int borderRadius = 0; частный цвет borderColor = Color.PaleVioletRed; //Характеристики [Категория("Расширенный код RJ")] общественный интервал BorderSize { получить {вернуть borderSize; } набор { BorderSize = значение; это.Инвалидате(); } } [Категория("Расширенный код RJ")] public int BorderRadius { получить {вернуться borderRadius; } набор { границаРадиус = значение; это.Инвалидате(); } } [Категория("Расширенный код RJ")] общественный цвет { получить {вернуться borderColor; } набор { цвет границы = значение; это.Инвалидате(); } } [Категория("Расширенный код RJ")] общественный цвет { получить {вернуть это.BackColor; } установить { this.BackColor = значение; } } [Категория("Расширенный код RJ")] общедоступный цвет TextColor { получить {вернуть это.ForeColor; } установить {this.ForeColor = значение; } } //Конструктор общедоступная кнопка RJButton() { this.FlatStyle = FlatStyle.Flat; this.FlatAppearance.BorderSize = 0; this.Size = новый размер (150, 40); this.BackColor = Color.MediumSlateBlue; this.ForeColor = Цвет.Белый; this.Resize += новый EventHandler(Button_Resize); } //Методы частный GraphicsPath GetFigurePath (прямоугольник, внутренний радиус) { Путь GraphicsPath = новый GraphicsPath(); плавающий размер кривой = радиус * 2F; путь.StartFigure(); path.AddArc(rect.X, rect.Y, CurveSize, CurveSize, 180, 90); path.AddArc(rect.Right - CurveSize, rect.Y, CurveSize, CurveSize, 270, 90); path.AddArc(rect.Right - CurveSize, rect.Bottom - CurveSize, CurveSize, CurveSize, 0, 90); path.AddArc(rect.X, rect.Bottom - CurveSize, CurveSize, CurveSize, 90, 90); путь.ЗакрытьРисунок(); Обратный путь; } защищенное переопределение void OnPaint (PaintEventArgs pevent) { base.OnPaint(pevent); Прямоугольник rectSurface = this.ClientRectangle; Прямоугольник rectBorder = Rectangle.Inflate(rectSurface, -borderSize, -borderSize); ИНТ SmoothSize = 2; если (borderSize > 0) SmoothSize = BorderSize; если (borderRadius > 2) //Закругленная кнопка { используя (GraphicsPath pathSurface = GetFigurePath(rectSurface, borderRadius)) используя (GraphicsPath pathBorder = GetFigurePath(rectBorder, borderRadius - borderSize)) используя (Pen penSurface = new Pen(this.Parent.BackColor, SmoothSize)) используя (Pen penBorder = новое перо (borderColor, borderSize)) { pevent.Graphics.SmoothingMode = SmoothingMode.AntiAlias; //Поверхность кнопки this.Region = новый регион (pathSurface); //Рисуем границу поверхности для HD-результата pevent.Graphics.DrawPath(penSurface, pathSurface); //Граница кнопки если (borderSize >= 1) //Рисуем границу управления pevent.Graphics.DrawPath(penBorder, pathBorder); } } else //Обычная кнопка { pevent.Graphics.SmoothingMode = SmoothingMode.None; //Поверхность кнопки this.Region = новый регион (rectSurface); //Граница кнопки если (borderSize >= 1) { используя (Pen penBorder = новое перо (borderColor, borderSize)) { penBorder.Alignment = PenAlignment.Inset; pevent.Graphics.DrawRectangle(penBorder, 0, 0, this.Width - 1, this.Height - 1); } } } } защищенное переопределение void OnHandleCreated (EventArgs e) { base.OnHandleCreated(e); this.Parent.BackColorChanged += новый EventHandler(Container_BackColorChanged); } частный void Container_BackColorChanged (отправитель объекта, EventArgs e) { это.Инвалидате(); } частный void Button_Resize (отправитель объекта, EventArgs e) { если (borderRadius > this.Height) borderRadius = this.Height; } } }```
Мобильная версия