- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
当用户单击我的验证按钮(在我的 C#、WinForm、.net 3.5 应用程序中)时,我想在某个控件周围绘制一个边框(如果它是空的)。假设一个名为 tbxLastName 的文本框,我想我需要做这样的事情 -->
ControlPaint.DrawBorder(Graphics.FromHwnd(this.Handle),
tbxLastName.ClientRectangle, Color.Firebrick, ButtonBorderStyle.Solid);
不幸的是,我不知道为图形对象放置什么,因为我所拥有的什么都不做。
我遇到的所有例子,MSDN - HERE , 在 Paint 事件中包含此代码。像这样 -->
private void panel1_Paint(object sender, PaintEventArgs e)
{
ControlPaint.DrawBorder(e.Graphics, this.panel1.ClientRectangle,
Color.DarkBlue, ButtonBorderStyle.Solid);
}
但是,我只想在满足某些条件时显示边框,这是由 Button_Click 启动的
很多建议建议使用容器对象来容纳文本框并将其称为 Paint_Event。我这样做了,出现了一个框,但不在控件周围。它出现在容器控件的左上角。这是我正在做的 -->
private void grpImmunizationCntrl_Paint(object sender, PaintEventArgs e)
{
if (lkuNOImmunizationReason.Text.Equals(string.Empty)
{
ControlPaint.DrawBorder(
e.Graphics, lkuNOImmunizationReason.ClientRectangle,
Color.Firebrick, ButtonBorderStyle.Solid);
}
}
编辑
这就是我结合这里的建议和对我有用的建议。
public static void HighlightRequiredFields(Control container, Graphics graphics, Boolean isVisible)
{
Rectangle rect = default(Rectangle);
foreach (Control control in container.Controls)
{
if (control.Tag is string && control.Tag.ToString() == "required")
{
rect = control.Bounds;
rect.Inflate(3, 3);
if (isVisible && control.Text.Equals(string.Empty))
{
ControlPaint.DrawBorder(graphics, rect, Color.FromArgb(173,216,230), ButtonBorderStyle.Solid);
}
else
{
ControlPaint.DrawBorder(graphics, rect, container.BackColor, ButtonBorderStyle.None);
}
}
if (control.HasChildren)
{
foreach (Control ctrl in control.Controls)
{
HighlightRequiredFields(ctrl, graphics, isVisible);
}
}
}
}
我从我需要的任何容器的 Paint_Event
中调用它。
最佳答案
您可以使用表单中的操作字段列表并添加或删除自定义绘图:
// field
List<Action<Graphics>> drawings = new List<Action<Graphics>>();
// on click event:
drawings.Add(delegate(Graphics g) {
var rect = tbxLastName.Bounds;
rect.Inflate(1, 1); // make rectange a bit larger than textbox
ControlPaint.DrawBorder(g, rect,
Color.DarkBlue, ButtonBorderStyle.Solid);
});
// make sure you added only once or clear before
panel1.Refresh(); // refresh panel to force painting
// Paint method:
foreach (var draw in drawings) {
draw(e.Graphics);
}
这样你就可以添加多个边框
关于c# - 在 Button_Click 上围绕控件绘制边框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2193549/
是否可以将变量传递给 button_click 过程? 背景: 我有 2 个程序,它们都执行一些操作,然后都打开 Form_1。现在,根据打开 Form_1 的过程,我希望命令按钮对表单上的数据执行不
我有代码 Page_Load 和 btnGonder_Click。当我单击 btnGonder 时,我将一些数据记录到数据库中。我在数据列表中获取并显示 page_load 中的代码的数据。问题是当我
我正在尝试使用按钮单击事件来终止 notepad.exe。 因为process.WaitForExit()需要在一个线程中; 现在,点击按钮根本没有任何作用,不知道为什么。 在此先感谢您的帮助:) 这
我正在创建一个用于列出文件的动态表。 它显示文件名、文件大小、修改日期列。此外,我还添加了一列:删除。 在表格中列出文件夹的文件的方法。 public void listFile() { va
我想向我的 button_click 函数添加一个可选参数,以便我可以通过从另一个函数调用它来插入其他信息。 代码如下: private void button1_Click(object s
我在下面有这个 button5 函数。我想要的是,当用户在单击 button5 后想要单击 button1 时,button5 中的 while 循环应该中断,因为选择现在是 1。Choice 是一个
当用户单击我的验证按钮(在我的 C#、WinForm、.net 3.5 应用程序中)时,我想在某个控件周围绘制一个边框(如果它是空的)。假设一个名为 tbxLastName 的文本框,我想我需要做这样
我是 C++ 和 Windows 应用商店编程的新手,我一直在定义按钮上的点击处理程序。我指的是 these说明: Add a Button control to a parent container
我在一个包含用户控件的简单页面中使用通用列表。 我使用 Session 变量填充此列表。此 session 变量在我的 Button_click 事件中设置。 当用户单击按钮时,会设置 session
关闭。这个问题需要更多 focused .它目前不接受答案。 想改进这个问题?更新问题,使其仅关注一个问题 editing this post . 7年前关闭。 Improve this questi
当用户点击按钮上的回车键(而不是鼠标单击按钮时)取消点击事件的简单方法是? 我尝试过: private void button3_Click(object sender, EventArgs
Ted Faison 在 podcast on event-based software design在 .NET、C++ 和 Java 事件语句中提到了“sender”和“self”对象,例如: p
如您所见(如果您查看我之前的一些问题),我对 Qt 还很陌生。我正在制作“read-from-excel-file-push-to-some-DB”模块。 我想在 main.cpp 中获取按钮返回的路
我知道之前有人问过这个问题,但经过大约一个小时的搜索,我无法找出向事件处理程序添加参数的最简单方法。默认情况下,这些处理程序的模板只能接受 (object sender, RoutedEventArg
我正在尝试从数据文件和列表框中删除一行。但我收到错误:'removeButton_Click' 的重载不匹配委托(delegate) 'System.EventHandler'。我该如何解决这个错误?
protected void Button1_Click(object sender, EventArgs e) { TableRow tb = new TableRow(); Tab
我通过将数据显示到数据 GridView 来完成一个窗口窗体应用程序。但是在datagridview中显示数据时出现了一些问题。 函数: private void MySQL_ToDatagridvi
Bootstrap 登录表单如下: User Name Password Log In 单击
我总是不断收到类型错误,说我缺少 1 个必需的位置参数,即“self”,我该如何解决这个问题? from tkinter import * import tkinter from client imp
我正在使用 C#.NET 创建一个数据驱动的应用程序。在此应用程序中,当用户单击加载按钮时,csv 文件中的数据将加载到数据 GridView 中。 此外,还有用于将数据 GridView 中的数据插
我是一名优秀的程序员,十分优秀!