gpt4 book ai didi

c# - 如何自定义像这样的按钮控件?

转载 作者:太空狗 更新时间:2023-10-30 00:08:51 25 4
gpt4 key购买 nike

我想做一个像这样的自定义按钮控件(图像按钮可以)。

我是新用户,所以我不能在这里发布图片。所以我上传了图片here

在尝试了一些教程后,我现在有点绝望

非常感谢任何建议。

谢谢

更新于 08/10/2019:这个问题我很多年前就问过,那时候我没有上传图片的权限,所以我上传给第三方的图片网站现在早已不复存在。我收到了很多关于重新上传图像的请求,所以这是我对八年前的那个项目的内存,我只是随机找到一些与我的内存相符的关于窗口形式的图像

这是按钮处于正常状态时 This is when the button is in normal state

这是当按钮被悬停或点击时,带有圆形边框 This is when the button is hovered or clicked, with the rounded border

最佳答案

您可以创建一个继承自 Button 的类,以将所有样式保存在一个地方。要执行悬停和按下状态,您可以覆盖按钮的鼠标进入/离开事件并更改样式。

这是我们项目之一的示例(我更改了颜色,但您明白了)。在我们更改某些颜色的地方,您可以切换图像。

public class MossieButton : Button
{
private static Font _normalFont = new Font("Arial", 10F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));

private static Color _back = System.Drawing.Color.Grey;
private static Color _border = System.Drawing.Color.Black;
private static Color _activeBorder = System.Drawing.Color.Red;
private static Color _fore = System.Drawing.Color.White;

private static Padding _margin = new System.Windows.Forms.Padding(5, 0, 5, 0);
private static Padding _padding = new System.Windows.Forms.Padding(3, 3, 3, 3);

private static Size _minSize = new System.Drawing.Size(100, 30);

private bool _active;

public MossieButton()
: base()
{
base.Font = _normalFont;
base.BackColor = _border;
base.ForeColor = _fore;
base.FlatAppearance.BorderColor = _back;
base.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
base.Margin = _margin;
base.Padding = _padding;
base.MinimumSize = _minSize;
}

protected override void OnControlAdded(ControlEventArgs e)
{
base.OnControlAdded(e);
UseVisualStyleBackColor = false;
}

protected override void OnMouseEnter(System.EventArgs e)
{
base.OnMouseEnter(e);
if (!_active)
base.FlatAppearance.BorderColor = _activeBorder;
}

protected override void OnMouseLeave(System.EventArgs e)
{
base.OnMouseLeave(e);
if (!_active)
base.FlatAppearance.BorderColor = _border;
}

public void SetStateActive()
{
_active = true;
base.FlatAppearance.BorderColor = _activeBorder;
}

public void SetStateNormal()
{
_active = false;
base.FlatAppearance.BorderColor = _border;
}
}

关于c# - 如何自定义像这样的按钮控件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5334921/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com