C#winform中,我想点击button1就将txt2的边框颜色改变,下面的代码可以实现:

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#winform中,我想点击button1就将txt2的边框颜色改变,下面的代码可以实现:相关的知识,希望对你有一定的参考价值。

但如果我将鼠标点一下txt2文本时,边框颜色就会恢复默认,请教一下应如何保持更改的边框颜色? 谢谢!

private void button1_Click(object sender, EventArgs e)


this.txt2_Paint(sender, new PaintEventArgs(this.txt2.CreateGraphics(), txt2.ClientRectangle));



private void txt2_Paint(object sender,PaintEventArgs e)

Pen pen = new Pen(Color.HotPink, 4.5f);
e.Graphics.DrawRectangle(pen,txt2.ClientRectangle );
pen.Dispose();

private static int WM_NCPAINT = 0x0085;
private static int WM_ERASEBKGND = 0x0014;
private static int WM_PAINT = 0x000F;

[DllImport("user32.dll")]
static extern IntPtr GetDCEx(IntPtr hwnd, IntPtr hrgnclip, uint fdwOptions);

[DllImport("user32.dll")]
static extern int ReleaseDC(IntPtr hwnd, IntPtr hDC);

protected override void WndProc(ref Message m)

base.WndProc(ref m);
if (m.Msg == WM_NCPAINT || m.Msg == WM_ERASEBKGND || m.Msg == WM_PAINT)

IntPtr hdc = GetDCEx(m.HWnd, (IntPtr)1, 1 | 0x0020);

if (hdc != IntPtr.Zero)

Graphics graphics = Graphics.FromHdc(hdc);
Color borderColor = Color.HotPink;

Rectangle rectangle = new Rectangle(textBox1.Location.X, textBox1.Location.Y + (25), textBox1.Width, textBox1.Height);
ControlPaint.DrawBorder(graphics, rectangle, borderColor, ButtonBorderStyle.Solid);
m.Result = (IntPtr)1;
ReleaseDC(m.HWnd, hdc);





------------------------------------------
用这种,不会闪,需要把textbook的边框去掉,Border设置为None。 然后自己调一下位置与宽度吧。
参考技术A 加上这段
private void txt2_Click(object sender, EventArgs e)

this.txt2_Paint(sender, new PaintEventArgs(this.txt2.CreateGraphics(), txt2.ClientRectangle));

不过这样当鼠标点击txt2的时候 边框会闪动一下、、追问

嗯,是会闪动一下,有更好的解决方案吗? 谢谢

在c#winform中,通过点击form1窗体中的button按钮跳转到form2窗体的tabpage2中的详细代码怎样写?

在窗体form1 中的Button_Click事件中写:
form2 f = new form2();
f.show();
然后在from2窗体的构造函数中写:
tabControl1.SelectedTab = tabPage2;
这样子就可以了,祝你好运哦追问

若form1窗体中有两个button按钮,点击button1按钮跳转到form2窗体tabpage1中,点击button2按钮跳转至form2窗体tabpage2中的代码怎么写?

参考技术A form1中的button事件中代码:
int Page=1;
Form2 f2 = new Form2(Page);
f2.ShowDialog();

定义个变量(int GetPage=0;(默认为0,不带默认值也行)),用来接收Form1中传来的Page变量;
在Form2中添加个构造函数(带参数的)

this.GetPage=参数的变量名;

Form2中窗体加载事件:
tabControl1.SelectedTab = GetPage;追问

若form1窗体中有两个button按钮,点击button1按钮跳转到form2窗体tabpage1中,点击button2按钮跳转至form2窗体tabpage2中的代码怎么写?

追答

一样,不同是你传的参数值不同

参考技术B form1 button事件中写:
Form2 form = new Form2();
form.Show();
form2 的load事件中写:
tabControl1.SelectedIndex = 1;追问

若form1窗体中有两个button按钮,点击button1按钮跳转到form2窗体tabpage1中,点击button2按钮跳转至form2窗体tabpage2中的代码怎么写?

追答

那你把刚才的那个删了把 新建一个项目
一、把form2中的tabcontrol控件的modifiers属性的值选为public
二、在form1中这样写:
private void button1_Click(object sender, EventArgs e)

Form2 form = new Form2();
form.Show();
form.tabControl1.SelectedIndex = 0;



private void button2_Click(object sender, EventArgs e)

Form2 form = new Form2();
form.Show();
form.tabControl1.SelectedIndex = 1;

本回答被提问者采纳
参考技术C form1 Button事件中写:
form2 f = new form2();
f.show();
from2 的构造函数中写:
tabControl1.SelectedTab = tabPage2;

可以实现了。追问

若form1窗体中有两个button按钮,点击button1按钮跳转到form2窗体tabpage1中,点击button2按钮跳转至form2窗体tabpage2中的代码怎么写?

追答

form1中
button1事件中
form2 f = new form2(“tab1”);
f.show();
button2事件中
form2 f = new form2(“tab2”);
f.show();

from2 的构造函数中写:
并且form2构造函数加一个参数 string tab
if(tab= “tab1”)
tabControl1.SelectedTab = tabPage1;
else
tabControl1.SelectedTab = tabPage2;

以上是关于C#winform中,我想点击button1就将txt2的边框颜色改变,下面的代码可以实现:的主要内容,如果未能解决你的问题,请参考以下文章

C#Winform 父窗体 子窗体 传值

有关于winform的 点击主窗体的按钮隐藏子窗体?

winform中如何获取控件在窗体上位置?

C#winform怎么获取当前所点击的按钮的背景图片

winform如何在一个form中修改另一个form控件属性

Winform消息框中的可点击URL?