gpt4 book ai didi

c# - 更改 NumericUpDown 的边框颜色

转载 作者:行者123 更新时间:2023-12-04 00:51:41 31 4
gpt4 key购买 nike

我对 C# 很陌生,有一个问题。我已经能够通过将它们的 FlatStyle 更改为“Flat”来更改按钮等的边框颜色。使用 NumericUpDown,我无法更改 FlatStyle。我希望仍然能够使用向上和向下箭头,因此仅使用其他东西来覆盖边缘是行不通的。这是我在代码中所做的简化版本:

using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace bordertest
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
BackColor = Color.Black;
numericUpDown1.BackColor = Color.Red;
}
}
}

最佳答案

您可以从 NumericUpDown 派生,添加 BorderColor 属性,覆盖 OnPaint 并根据边框颜色绘制边框。

using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;
public class MyNumericUpDown : NumericUpDown
{
private Color borderColor = Color.Blue;
[DefaultValue(typeof(Color), "0,0,255")]
public Color BorderColor
{
get { return borderColor; }
set
{
if (borderColor != value)
{
borderColor = value;
Invalidate();
}
}
}
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
if (BorderStyle != BorderStyle.None)
{
using (var pen = new Pen(BorderColor, 1))
e.Graphics.DrawRectangle(pen,
ClientRectangle.Left, ClientRectangle.Top,
ClientRectangle.Width - 1, ClientRectangle.Height - 1);
}
}
}

enter image description here

注意:顺便说一句,这个控件引发了绘制事件,如果出于某种原因有人想要在没有继承的情况下实现相同的行为,他们可以处理绘制事件并绘制边框;但是,作为通用解决方案和可重用解决方案,派生控件更有意义。

private void numericUpDown_Paint(object sender, PaintEventArgs e)
{
var c = (NumericUpDown)sender;
ControlPaint.DrawBorder(e.Graphics, c.ClientRectangle,
Color.Red, ButtonBorderStyle.Solid);
var r = new Rectangle(1, 1, c.Width - 2, c.Height - 2);
e.Graphics.SetClip(r);
}

FlatNumericUpDown

我创建了一个支持 BorderColorButtonHighlightColor 的 FlatNumericUpDown。您可以下载或克隆它:

enter image description here

关于c# - 更改 NumericUpDown 的边框颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65877575/

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