[Mono-winforms-list] Some basic questions on Winforms.

Wei Weng wweng@kencast.com
Wed, 13 Apr 2005 12:02:12 -0400


This is a multi-part message in MIME format.
--------------080609080904070908030301
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

Jordi Mas wrote:
>>2: How do I bind a shortcut key to an action/function without using the
>>setting the shortcut key in MainMenu/ContextMenu? (Can not set menu in my 
>>current mono setup either. Always complains about set_Menu method, throwing 
>>a NullReferenceException)
> 
> 
> Hello Wei,
> 
> Can you provide a small sample that reproduces this problem?
> 
> Thanks!
> 

I have attached the small sample to this email. The environment is mono 
1.1.6, OSX 10.3. I could mono the same program on fedora 2, however, the 
menu never really showed.


The error message I got is:

[wweng@NEWTON TestMono]$ mono Test.exe
Mono System.Windows.Forms Assembly [Revision: 41731; built: 2005/2/15 5:56:12]
Keyboard: United States keyboard layout (phantom key version)

Unhandled Exception: System.NullReferenceException: Object reference not set to
an instance of an object
in <0x0007c> System.Windows.Forms.Form:set_Menu (System.Windows.Forms.MainMenu)
in <0x00084> (wrapper remoting-invoke-with-check) System.Windows.Forms.Form:set_
Menu (System.Windows.Forms.MainMenu)
in <0x000d8> Form1:InitializeComponent ()
in <0x0006c> (wrapper remoting-invoke-with-check) Form1:InitializeComponent ()
in <0x00024> Form1:.ctor ()
in <0x00048> (wrapper remoting-invoke-with-check) Form1:.ctor ()
in <0x0002c> Form1:Main ()


--------------080609080904070908030301
Content-Type: text/plain;
 name="Test.cs"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
 filename="Test.cs"

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;

public class Form1 : System.Windows.Forms.Form
{
	private System.ComponentModel.Container components = null;

	public Form1()
	{
		InitializeComponent();
	}

	protected override void Dispose( bool disposing )
	{
		if( disposing )
		{
			if (components != null) 
			{
				components.Dispose();
			}
		}
		base.Dispose( disposing );
	}

	private void InitializeComponent()
	{
		MainMenu mBar = new MainMenu();

		MenuItem item1 = new MenuItem();

		item1.Text = "File";

		mBar.MenuItems.Add(item1);

		this.Menu = mBar;
		this.SuspendLayout();
		// 
		// Form1
		// 
		this.AutoScaleBaseSize = new System.Drawing.Size(5, 14);
		this.ClientSize = new System.Drawing.Size(316, 214);
		this.Name = "Form1";
		this.Text = "Form1";
		this.ResumeLayout(false);

	}

	static void Main() 
	{
		Application.Run(new Form1());
	}
}

--------------080609080904070908030301--