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_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;
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的边框颜色改变,下面的代码可以实现:的主要内容,如果未能解决你的问题,请参考以下文章