我想向已有的一个控件发送拖放数据,但是里面有一段
object obj=DataOject.GetData();
Stream stream=(Stream)obj;
得到数据方法。。
if(obj Is IDispose)
{
obj.Dispose();
}
而且,它在DragEnter和DragDrop里都调用函有上面语句的函数。所以,当数据拖进去的时候就把里面的那个Stream释放掉了,松开鼠标时只能等异常。
有什么办法,把一个非实现IDispose的类,使它可以支持(Stream)Type吗?在线等。
object obj=DataOject.GetData();
Stream stream=(Stream)obj;
得到数据方法。。
if(obj Is IDispose)
{
obj.Dispose();
}
而且,它在DragEnter和DragDrop里都调用函有上面语句的函数。所以,当数据拖进去的时候就把里面的那个Stream释放掉了,松开鼠标时只能等异常。
有什么办法,把一个非实现IDispose的类,使它可以支持(Stream)Type吗?在线等。
{
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter formatter
= new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter(); System.IO.MemoryStream stream = new System.IO.MemoryStream(); Class1 class1 = new Class1();
formatter.Serialize(stream, class1);
stream.Position = 0;
}[Serializable]
public class Class1
{
public Class1()
{
} string str = "hatita";
}
消息:
此远程处理代理没有信道接收,这意味着服务器没有正在侦听的已注册服务器信道,或者此应用程序没有用来与服务器对话的适当客户端信道。
ToString():
System.Runtime.Remoting.RemotingException: 此远程处理代理没有信道接收,这意味着服务器没有正在侦听的已注册服务器信道,或者此应用程序没有用来与服务器对话的适当客户端信道。
at System.Runtime.Remoting.Proxies.RemotingProxy.InternalInvoke(IMethodCallMessage reqMcmMsg, Boolean useDispatchMessage, Int32 callType)
at System.Runtime.Remoting.Proxies.RemotingProxy.Invoke(IMessage reqMsg)
at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
at System.IO.MemoryStream.Seek(Int64 offset, SeekOrigin loc)
at WindowsApplication5.Form1.Form1_DragDrop(Object sender, DragEventArgs e) in k:\documents\visual studio projects\windowsapplication5\form1.cs:line 130要怎么处理才能跨程序拖放?
TcpChannel tcp = new TcpChannel(1234);
ChannelServices.RegisterChannel(tcp);
我拖放的类型不是剪切板上预设好的类型,而是"{12345678}",内容是一个MemoryStream.
不是很明白。
MemoryStream ms=new MemryStream();
----写入数据
data.SetData("{123456}",ms);
DoDragDrop(data,...Copy);