C#winform有2个panel,在右边panel获取鼠标的坐标(x,y),如何传递到panel1上弹出的窗口form2里面呢

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#winform有2个panel,在右边panel获取鼠标的坐标(x,y),如何传递到panel1上弹出的窗口form2里面呢相关的知识,希望对你有一定的参考价值。

panel1上面一个按钮点击会弹出form2窗口。
下面是panel2鼠标单击响应事件,如何让x,y传递到form2表单的一个textbox.text里呢
private void splitContainer1_Panel2_Mouseclick(object sender,MouseEventArgs e)

int x;
int y;
x = e.X;
y = e.Y;

另外我如何让form1里面弹出form2响应事件写:
Form2 fm2 = new Form2();
fm2.ShowDialog();
是不是就无法再form1.splitcontainer,panel2里面点击鼠标了,有办法解决吗

参考技术A 把int x,int y放在事件外就可以了.
public static Int16 x;
public static Int16 y;

form2的load()事件里面写
TextBox1.text="x="+form1.x.tostring()+",y="+form1.y.tostring();

第二个问题你试试用fm2.show();追问

form2.Textbox1这个控件可以放X,Y坐标,有没有其他控件比这个更好的存储X,Y坐标啊

追答

看你是用作什么用途了,只是显示的话我一般是用label的

追问

我就是想把坐标存到数据库的

追答

那你读完直接插入到数据库就好了.
静态的参数就方便存放一些比较固定的数据,例如账户信息等.

本回答被提问者采纳
参考技术B 直接调用Form2函数,
class Form2:Form

//......
public void ShowData(int x, int y)

textBox1.Text=x;
textBox2.Text=y;

//....


在看Form1中:
class Form1:Form

//这里需要一个Form2的变量,而非局部变量.因为需要跨函数调用.
Form2 form2;

private void button1_Click(object sender, EventArgs e)

form2.Show();


private void splitContainer1_Panel2_Mouseclick(object sender,MouseEventArgs e)

form2.ShowData(e.X,e.Y);

追问

textBox1.Text=x;
textBox2.Text=y;

这个地方textBox1和textBox2有错误啊,我在form2里面加了2个textBox的

追答

textBox1和textBox2是我随便模拟的两个啊.
你直接把这个换成你自己加的textBox的名字.
=0=你是初学者吗?好可爱的感觉.

追问

提出这种问题的不是初学者吗。

追答

我错了.还有问题吗?你这样一来一回的.分都扣没了.

参考技术C

Form1和Form2分别是两个窗体?要把Form1的值传到Form2中对吧?并且Form1 单击之后出现From2

追问

嗯,是的,我想在FORM2中的两个textbox能自动获取到form1.panel2里面鼠标点击的值

追答

Form2中:

Form2加个构造函数

int x,y;

public From2(int x,int y)

this.x=x;

this.y=y;

显示的时候直接等于x和y就好了


Form1中:

int x,y;

得到值得时候赋值给x,y

Form2显示代码

Form2 f=Form2(x,y);

f.show();


这样就好了

Winform 设置panel容器的背景为pictureBox

 

1.要实现C# WinForm中的控件与背景的透明,可以通过设置控件的BackColor属性为Transparent,同时设置其父控件。因为在C#中,控件的透明指对父窗体透明。如果不设置Parent属性,那么控件将只对Form透明,显示的时候都会把Form的背景色(默认为Control)重刷一遍作为自己的背景。
2.在控件比较多的情况下,可以使用Panel控件,将某一组的控件都放到Panel中,然后只对此panel设置背景透明即可,则其他控件都跟着实现了背景透明。
demo:

现有一PictureBox控件,十多个Label以及Button,那么只将这些Label和Button放入Panel中。同时在Form_Load事件中加入如下代码即可实现背景透明:
this.picturebox1.SendToBack();//将背景图片放到最下面
this.panel1.BackColor = Color.Transparent;//将Panel设为透明
this.panel1.Parent = this.picturebox1;//将panel父控件设为背景图片控件
this.panel1.BringToFront();//将panel放在前面
以上代码即可实现所有的控件都对PictueBox背景图片透明。

以上是关于C#winform有2个panel,在右边panel获取鼠标的坐标(x,y),如何传递到panel1上弹出的窗口form2里面呢的主要内容,如果未能解决你的问题,请参考以下文章

Winform 设置panel容器的背景为pictureBox

winform panel面板在窗体里居中

winform 窗体加载的问题,C#里不同Panel中窗体的调用

winform 窗体加载的问题,C#里不同Panel中窗体的调用

winform 有多个panel 叠加,怎么在编辑器中使下面的panel展示出来

C# winform中使用Panel调节窗口变化是各控件的位置(转)