C# WinForm编程中,你是否遇到过这样的问题,在主窗口Form1中点击按钮,弹出一个子窗口Form2,你希望在Form2中调用Form1的函数,改变Form1的显示,却发现Form1不听话,达不到预期效果。有的人说我调试了的,那段函数确实执行了,怎么还是没有显示呢?
案例:
在winform中,我在点击from1的一个按钮,弹出from3执行一个函数,其实form3就是弹出一个自制的密码输入框但是呢。然后我再from3中调用
if (password == PassWord)
{
comfirm = true;
form1.updateMac(row, col);
this.Close();
}
在updateMac(row,col)中我有个dataGridView1.Rows[row].Cells[col].Style.BackColor = Color.Green;但是颜色死活不变,特别奇怪,放在form1的其他函数里就能变,就是凡在这个form3调用form1的函数里,不能变色,是为什么啊
|
其实Form1不听话是必然的,你在Form2中new Form1(),这样新新建了一个窗口对象,和本身的父窗口是两个不同的对象,你改变对象A怎么能期望对象B也变化呢?
那有没有什么办法可以实现我们预期的效果呢?
有的,那就是利用win32函数,使用自定义消息,做C++的人对这个应该不陌生,下面就给大家讲一下C#自定义消息。
消息发送方
一、引入命名空间
二、消息定义
三、自定义结构体
四、重写消息发送函数
五、获取窗体句柄的函数引入
六、消息发送
消息接收方
一、引入命名空间
二、消息定义
三、重写窗体的消息处理函数
如上,我们就实现了一个C#自定义消息的程序,贴上一个程序下载地址:http://download.csdn.net/detail/bdstjk/2707423。
不知道大家在C#中有没有更好的实现方法。
经过研究,C#确实有方法可以更简单的实现这个功能,请看C# 委托实例(跨窗体操作控件)
最后再给大家介绍一种最简单的C#跨窗体操作
程序运行示意:
分享到:
相关推荐
C# 自定义控件 自定义ComboBox。其他控件的自定义与此类似。
C# Wninform自定义消息窗,使用系统默认的消息提示框,和使用开发者自定义的消息框。
c#自定义消息在Form间传递
C#用户自定义控件C#用户自定义控件C#用户自定义控件C#用户自定义控件
在C#中创建自定义控件,在本文档中介绍的几种方法可供大家参考 。
C# 强大的自定义ListView ObjectListViewFull-2.4.1
这是我用C#写的自定义组件和控件,内附一个testForm来演示如何使用。 其中,自定义的组件有:速选组件、窗口靠边停靠组件、窗口抖动组件。 自定义控件有:黑白的菜单栏、带进度显示的进度条等。
Windows自带的消息框比较丑,特别是转到WIN7下更加,项目中用到的消息框非常多,基本上有提示信息、错误信息、询问信息这三种,从美观角度,MessageBox.show()这个方法出来的消息框有点不尽人意,于是自己写了一个,...
C# 绘制自定义虚线C# 绘制自定义虚线C# 绘制自定义虚线C# 绘制自定义虚线C# 绘制自定义虚线C# 绘制自定义虚线
内含一些自定义的C#控件,有demo,有源码,很不错的控件库,虽然不是很多,但是至少提供了一个学习的方法!
C#的ListView添加各种自定义控件,CheckBox,ComboBox等
C#中使用Setting保存用户自定义窗体位置 C#中使用Setting保存用户自定义窗体位置 C#中使用Setting保存用户自定义窗体位置
C# 自定义控件 自定义Button控件 水晶按钮。其他控件的重写与此类似
C#制作用户自定义控件 可自选按钮素材、图标、事件、方法 非常好
c#导出导入excel 自定义字段 自定义列 OleDb方式的excel导入 可以实现自定义字段,不按照模版的方式导出
C# 使用自定义DataGridView实现的报表设计器,可以自定义设置报表内容,合并表头,合并单元格,导出报表到Excel 和打印报表。
C#基于自定义消息做一个Loading界面. 欢迎下载,有问题请联系~~ 注意,代码中Loading窗的位置自己控制,因为是透明背景,位置不对会难发现
C# 自定义控件实例 C# 自定义控件实例 C# 自定义控件实例 button,Control,ProgressBar,tabControl, TrackBar
C# 自定义按钮控件C# 自定义按钮控件C# 自定义按钮控件C# 自定义按钮控件C# 自定义按钮控件C# 自定义按钮控件C# 自定义按钮控件C# 自定义按钮控件C# 自定义按钮控件C# 自定义按钮控件C# 自定义按钮控件C# 自定义按钮...