两个C#之间传值有关问题
两个C#之间传值问题都是C# A:有FormB:无FormA.Form中设一Button 单击即可传到B中(任一地方)反过来一样B运
两个C#之间传值问题 都是C# A:有Form B:无Form A.Form中设一Button 单击即可传到B中(任一地方) 反过来一样 B运行将数据传入A 与A.Form 中 求高手指点、、[解决办法] 什么有form无from? http://topic.csdn.net/u/20120710/14/c88a8f3c-c096-4f93-a0ee-b82b810ebd9d.html B传入A用委托事件[解决办法]
探讨 什么有form无from? http://topic.csdn.net/u/20120710/14/c88a8f3c-c096-4f93-a0ee-b82b810ebd9d.html B传入A用委托事件[解决办法] 1.设置全局静态变量
2.通过属性传值 B中设置属性,A传值给B中属性赋值,B运行完,A通过访问B中属性来取得返回值
[解决办法] public static 类型 变量名...
[解决办法] 数据库
文件
socket
通道
WM_COPYDATA
内存映射
内存共享
等等
[解决办法] 最简单的:设置全局静态变量
最优雅的:使用事件
[解决办法] 探讨 最简单的:设置全局静态变量 最优雅的:使用事件[解决办法] LZ应该指A与B分别为不同进程(A.exe/B.exe),且A/B分别在不同应用程序域。
那么全局静态变量是无法传递的。
比较好的方法应该是
命名管道/匿名管道(3.5或非托管代码)
内存映射文件(4.0或非托管代码)
socket通信(全版本)
也可以使用剪贴板(不推荐)
[解决办法] 探讨 LZ应该指A与B分别为不同进程(A.exe/B.exe),且A/B分别在不同应用程序域。 那么全局静态变量是无法传递的。 比较好的方法应该是 命名管道/匿名管道(3.5或非托管代码) 内存映射文件(4.0或非托管代码) socket通信(全版本) 也可以使用剪贴板(不推荐)[解决办法] 探讨 其实,比较常用的还是WM_COPYDATA[解决办法] 探讨 数据库 文件 socket 通道 WM_COPYDATA 内存映射 内存共享 等等[解决办法] 内存映射文件比较简单,MSDN上有示例,不过要求.net 4.0。
命名管道稍微复杂,不过功能更强大,MSDN上也有专门的例子
匿名管道相对简单,不过你需要A来启动B(用Proccess,把句柄作为参数传递),并在B中处理启动参数。MSDN上的示例
这些方案都离不开Mutex或者类似的的线程同步类的支持
[解决办法] 用FindWindow呢
在SendMessage过去咯。。
我就是这么在不同程序里交互实现的呢。
[解决办法] 定义:
C# code [DllImport("user32.dll", EntryPoint = "FindWindow")] public static extern int FindWindow(string lpClassName, string lpWindowName); [DllImport("User32.dll", EntryPoint = "SendMessage")] public static extern int SendMessage(int hWnd, int Msg, int wParam, ref COPYDATASTRUCT lParam);[解决办法] 探讨 LZ应该指A与B分别为不同进程(A.exe/B.exe),且A/B分别在不同应用程序域。 那么全局静态变量是无法传递的。 比较好的方法应该是 命名管道/匿名管道(3.5或非托管代码) 内存映射文件(4.0或非托管代码) socket通信(全版本) 也可以使用剪贴板(不推荐)[解决办法] 探讨 用FindWindow呢 在SendMessage过去咯。。 我就是这么在不同程序里交互实现的呢。------解决方案--------------------
探讨 引用: 用FindWindow呢 在SendMessage过去咯。。 我就是这么在不同程序里交互实现的呢。 鉴于LZ的B进程没有窗体,很可能连消息循环都没有。[解决办法] 探讨 都是C# A:有Form B:无Form A.Form中设一Button 单击即可传到B中(任一地方) 反过来一样 B运行将数据传入A 与A.Form 中 求高手指点、、