Click here to Skip to main content
15,881,938 members
Articles / Programming Languages / XML

An XML-Driven Menu Strip

Rate me:
Please Sign up or sign in to vote.
4.71/5 (13 votes)
16 Apr 2007CPOL8 min read 127.8K   2.1K   75  
In this article, I'm going to show how to generate a dynamic MenuStrip (.NET 2.0's replacement of the MainMenu control) using recursion in C#. The MenuStrip will be based on XML data which contains all the details about the generated Menu.
<root>
	<TopLevelMenu Name="mnuFile" Text="&amp;File">
		<MenuItem Name="mnuFileLoad" Text="Load" OnClick="_LoadXML">
			<MenuItem Name="mnuFileLoadFile" Text="XML Configuration">
				<MenuItem Name="mnuFileLoadXMLUser1" Text="Anonymous User" OnClick="_LoadFileXMLAnonymous" />
				<MenuItem Name="mnuFileLoadXMLAdministrator" Text="Administrative User" OnClick="_LoadFileXMLAdministrator" />
			</MenuItem>
			<MenuItem Name="mnuFileFileLoadFile" Text="XML from Embedded Resource" OnClick="_LoadResourceXML" />
		</MenuItem>
		<MenuItem Text="-" />
		<MenuItem Name="mnuFileOpen" Text="Open" OnClick="_Open" />
		<MenuItem Name="mnuFileClose" Text="Close" OnClick="_Close" />
		<MenuItem Text="-" />
		<MenuItem Name="mnuFileExit" Text="E&amp;xit" OnClick="_Exit" />
	</TopLevelMenu>

	<TopLevelMenu Name="Administrator" Text="&amp;Administrator">
		<MenuItem Name="Undo" Text="Undo" OnClick="_Undo" />
		<MenuItem Text="-" />
		<MenuItem Name="Cut" Text="Cut" OnClick="_Cut" />
		<MenuItem Name="Copy" Text="Copy" OnClick="_Copy" />
		<MenuItem Name="Paste" Text="Paste" OnClick="_Paste" />
		<MenuItem Text="-" />
		<MenuItem Name="Options" Text="Options">
			<MenuItem Name="mnuEditOptionsDisplay" Text="Display">
				<MenuItem Name="mnuEditOptionsDisplayBackColor" Text="Back Color" />
			</MenuItem>
		</MenuItem>
	</TopLevelMenu>

	<TopLevelMenu Name="mnuEmbeddedResource" Text="Embedded Resource" />
</root>

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Web Developer
United States United States
I've been working with C# since .NET Beta 1 and have been in the development scene since VB3.

I've always had a passion for development, technology, and computer as a whole. I consider myself one of the lucky few who actually love their job.

I've mostly been involed with web development in the corporate world, but I also work with Windows Forms development at home. Over the past 3 years or so the .NET applications I've developed have been backend maintenance applications. Transfering data, manipulating data, or doing some other back-end processes.

Comments and Discussions