Yay, Hurkle Hunt! I played that on my IBM XT. The hurkle would blow you a rasberry when it got away, inciting you to catch him at all costs! Have at you, hurkle!
Mike_Finch
Posts
-
Amazing game.. -
COMException when getting custom data from system clipboard [modified]Awesome! Decorating my FooNode class with the SerializableAttribute got it working. Thank you.
[Serializable]
public class FooNode
{
...
} -
COMException when getting custom data from system clipboard [modified]I have a custom type, FooNode, defined in my C# code. I want to add an instance of that custom type to the global System.Windows.Forms.Clipboard, and then retrieve it from the clipboard again. The add seems to work, but I am not able to retrieve the instance. Upon retrieval, several exceptions print to standard output like the following:
A first chance exception of type 'System.Runtime.InteropServices.COMException' occurred in System.Windows.Forms.dll
(... and 9 more just like above)The result of the retrieval is a null reference. There is no crash or halt. The above exceptions are being dealt with internally; I am not able to catch them. The problem is not with the DataObject itself, because I can retrieve my FooNode from it. I just can't retreive my FooNode from the clipboard's DataObject. I am able to add and then retreive other types of objects to the system clipboard, such as strings and System.Guid. Why can I not retrieve an object of my custom type? Following is my test code. Call FooTest.Test() to run.
using System;
using System.Diagnostics;
using System.Windows.Forms;public class FooNode
{
private Guid m_Guid;
private string m_Name = String.Empty;public FooNode( ) { m\_Guid = Guid.NewGuid(); m\_Name = "Foo"; } public Guid Guid { get { return m\_Guid; } set { m\_Guid = value; } } public string Name { get { return m\_Name; } set { m\_Name = value; } }
}
public class FooTest
{
// Entry point for test of using system clipboard.
public static void Test( )
{
FooNode fooNode = new FooNode();// Add a FooNode to the system clipboard. DataObject dob = new DataObject( fooNode ); dob.SetData( typeof( Guid ), fooNode.Guid ); dob.SetData( DataFormats.StringFormat, fooNode.Guid.ToString() ); Clipboard.SetDataObject( dob ); // Retrieve the FooNode from the system clipboard. // \*\*\* Notice that the returned object is null. \*\*\* object raw = Clipboard.GetDataObject().GetData( typeof( FooNode ) ); // This spam function demonstrates what can and cannot be retrieved from the clipboard. Spam( Clipboard.GetDataObject(), new Type\[\] { typeof( FooNode ), typeof( Guid ) } ); } public static void Spam( IDataObje
-
ScrollableControlOverriding ScrollToControl() in my custom UserControl as above almost worked for me. It did prevent the scroll from moving when my UserControl regained focus. But, the scroll would still move unexpectedly when I did something else, such as changing the location of a child of the UserControl. However, returning the AutoScrollPosition, instead of the DisplayRectangle's location, does work for me.
protected override Point ScrollToControl( Control c ) { return AutoScrollPosition; }
I got the clue from http://yue-gao.blogspot.com/2009/02/c-want-scroll-to-stay-still.html -
What would YOU put in the LHC?One of those big jars of olives I can never get opened.
-
Dark Matter mappedHa! That reminds me of something another, wittier programmer here said. He was trying to track down a "Heisenbug"; everytime he tried to trap it, the crash would occur elsewhere.