- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对 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);
}
}
}
注意:顺便说一句,这个控件引发了绘制事件,如果出于某种原因有人想要在没有继承的情况下实现相同的行为,他们可以处理绘制事件并绘制边框;但是,作为通用解决方案和可重用解决方案,派生控件更有意义。
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
我创建了一个支持 BorderColor
和 ButtonHighlightColor
的 FlatNumericUpDown。您可以下载或克隆它:
关于c# - 更改 NumericUpDown 的边框颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65877575/
伙计们,如果我的 XAML 中有 2 个数字 updown,就像这样 我希望根据第一个 numericupdown 值更改第二个 numericupdown 值。我试着把它放在后面的代码中。 pr
我正在尝试 NumericUpDown 控件,但对其灵活性有疑问。基本上,我想做的是显示年份范围,如下所示: 2006-2007;2007-2008;2008-2009;2009-2010 显然,我希
我一直在尝试调试一个表单大约 15 个小时,终于发现了问题所在。似乎所有 NumericUpDown 控件都有一个关联的未命名的 TextBox 控件。我的问题可以重现如下: 使用单一表单创建一个新项
当我使用 numbericupdown 对象并将 thousandsseperator 设置为 true 时,它只会在失去焦点时更新文本以正确显示逗号。有没有办法在每次更改值时强制它刷新? 最佳答
我的类(class)中有一个NumericUpDown 变量。 最小和最大值设置如下: myNumericUpDown.Maximum = 9999; myNumericUpDown.Minimum
我正在使用 WPF 扩展工具包。 NumericUpDown 控件能够输入十六进制值,但我看不到以十六进制格式显示值的方法/属性。 有一个 FormatString,但它包含货币、百分比等内容,而不是
我正在修改带有触摸屏界面的 Winform 应用程序。它在 GUI 中有很多带有大字体的 NumericUpDown 控件。但是每个控件仍然有一个手指的微小向上/向下箭头。有没有办法让箭头变大?或者箭
如果您创建一个新的 C# 项目并在表单上放置一个 NumericUpDown(或者甚至是一个文本框)是否无法取消选择? 目前,我的应用程序有一个可滚动的容器,当用户选择 NumericUpDown 时
我最近需要编写一个版本的 Windows NumericUpDown 控件,它可以突出显示某个值是否是必需的。它需要通过更改控件的背景颜色来实现。我认为这已经足够简单了,但在尝试这样做时,我发现它有一
如果之前有人回答过这个问题,我很抱歉。我四处搜索,找不到合适的答案。 我有一个接受用户输入的 numericupdowncontrol。现在我已将 decimalPlaces 属性设置为 2。如果用户
我在将 numericupdown 值传递给整数时遇到问题。 private void button5_Click(object sender, EventArgs e) { int coun
有一种方法可以强制 c# NumericUpDown 接受逗号和点,以分隔十进制值? 我已经自定义了一个文本框来执行此操作(实际上是用逗号替换点),但令我惊讶的是没有其他方法.. This问题解释了如
我想交换 NumericUpDown 控件上的向上箭头和向下箭头(只是功能,不是实际的箭头)。例如,单击向上箭头时,值应减少,类似地,单击向下箭头时,值应增加。 我试图从 NumericUpDown
我对 C# 很陌生,有一个问题。我已经能够通过将它们的 FlatStyle 更改为“Flat”来更改按钮等的边框颜色。使用 NumericUpDown,我无法更改 FlatStyle。我希望仍然能够使
我正在尝试制作一个小披萨订单,但我在计算时遇到了问题。选择披萨后,单价和合计计算都可以,但是选择加法就引入了问题。更改 NumericUpDown 值后,卡路里不正确(所有单位都具有不变的价格和卡路里
如何设置 NumericUpDown 控件以将值显示为百分比? 最佳答案 您必须派生自己的自定义控件并覆盖 UpdateEditText()方法。在此期间,让我们覆盖默认值 Minimum , Max
如何检查用户是否将 NumericUpDown 控件留空,从而删除其上的值?所以我可以将它重新分配为 0。 最佳答案 if(NumericUpDown1.Text == "") { // I
在我的 winform 应用程序上,我尝试对必填字段进行颜色编码。在用户编辑时,当必填字段被填写时,背景变为浅绿色,如果必填字段为空,则背景为红色。某些字段的启用和禁用取决于其他字段中的输入,因此有时
我们在应用程序中使用 Telerik RadNumericUpDown 控件(2013 版)来显示和编辑 double 值和整数; 该控件对于可为 null 的 double 类型效果很好:对于 nu
使用键盘上的数字输入值时不会激活事件。它仅在您使用向上和向下箭头时激活。我想要的是,它必须像文本框 textchanged 事件一样在每次键盘敲击时激活。 我尝试了几件事,但用户必须按 Enter 才
我是一名优秀的程序员,十分优秀!