Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / ndp / fx / src / WinForms / Managed / System / WinForms / MainMenu.cs / 1 / MainMenu.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Windows.Forms {
using System.Diagnostics;
using System;
using System.ComponentModel;
using System.Drawing;
using Microsoft.Win32;
using System.Security.Permissions;
///
///
///
/// Represents
/// a menu structure for a form.
///
[ToolboxItemFilter("System.Windows.Forms.MainMenu")]
public class MainMenu : Menu
{
internal Form form;
internal Form ownerForm; // this is the form that created this menu, and is the only form allowed to dispose it.
private RightToLeft rightToLeft = System.Windows.Forms.RightToLeft.Inherit;
private EventHandler onCollapse;
///
///
/// Creates a new MainMenu control.
///
public MainMenu()
: base(null) {
}
///
///
/// Initializes a new instance of the class with the specified container.
///
public MainMenu(IContainer container) : this() {
container.Add(this);
}
///
///
/// Creates a new MainMenu control with the given items to start
/// with.
///
public MainMenu(MenuItem[] items)
: base(items) {
}
///
///
/// [To be supplied.]
///
[SRDescription(SR.MainMenuCollapseDescr)]
public event EventHandler Collapse {
add {
onCollapse += value;
}
remove {
onCollapse -= value;
}
}
///
///
/// This is used for international applications where the language
/// is written from RightToLeft. When this property is true,
/// text alignment and reading order will be from right to left.
///
// VSWhidbey 94189: Add an AmbientValue attribute so that the Reset context menu becomes available in the Property Grid.
[
Localizable(true),
AmbientValue(RightToLeft.Inherit),
SRDescription(SR.MenuRightToLeftDescr)
]
public virtual RightToLeft RightToLeft {
get {
if (System.Windows.Forms.RightToLeft.Inherit == rightToLeft) {
if (form != null) {
return form.RightToLeft;
}
else {
return RightToLeft.Inherit;
}
}
else {
return rightToLeft;
}
}
set {
//valid values are 0x0 to 0x2
if (!ClientUtils.IsEnumValid(value, (int)value, (int)RightToLeft.No, (int)RightToLeft.Inherit)){
throw new InvalidEnumArgumentException("RightToLeft", (int)value, typeof(RightToLeft));
}
if (rightToLeft != value) {
rightToLeft = value;
UpdateRtl((value == System.Windows.Forms.RightToLeft.Yes));
}
}
}
internal override bool RenderIsRightToLeft {
get {
return (RightToLeft == System.Windows.Forms.RightToLeft.Yes && (form == null || !form.IsMirrored));
}
}
///
///
/// Creates a new MainMenu object which is a dupliate of this one.
///
public virtual MainMenu CloneMenu() {
MainMenu newMenu = new MainMenu();
newMenu.CloneMenu(this);
return newMenu;
}
///
///
///
///
protected override IntPtr CreateMenuHandle() {
return UnsafeNativeMethods.CreateMenu();
}
///
///
/// Clears out this MainMenu object and discards all of it's resources.
/// If the menu is parented in a form, it is disconnected from that as
/// well.
///
protected override void Dispose(bool disposing) {
if (disposing) {
if (form != null && (ownerForm == null || form == ownerForm)) {
form.Menu = null;
}
}
base.Dispose(disposing);
}
///
///
/// Indicates which form in which we are currently residing [if any]
///
[UIPermission(SecurityAction.Demand, Window=UIPermissionWindow.AllWindows)]
public Form GetForm() {
return form;
}
internal Form GetFormUnsafe() {
return form;
}
///
///
///
///
internal override void ItemsChanged(int change) {
base.ItemsChanged(change);
if (form != null)
form.MenuChanged(change, this);
}
///
///
///
///
internal virtual void ItemsChanged(int change, Menu menu) {
if (form != null)
form.MenuChanged(change, menu);
}
///
///
/// Fires the collapse event
///
protected internal virtual void OnCollapse(EventArgs e) {
if (onCollapse != null) {
onCollapse(this, e);
}
}
///
///
/// Returns true if the RightToLeft should be persisted in code gen.
///
internal virtual bool ShouldSerializeRightToLeft() {
if (System.Windows.Forms.RightToLeft.Inherit == RightToLeft) {
return false;
}
return true;
}
///
///
/// Returns a string representation for this control.
///
///
public override string ToString() {
// VSWhidbey 495300: removing GetForm information
return base.ToString();
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- Stylus.cs
- SmiMetaData.cs
- EdmSchemaAttribute.cs
- MultipartContentParser.cs
- Section.cs
- FormattedText.cs
- ScriptReferenceBase.cs
- ListControl.cs
- SoapSchemaImporter.cs
- HttpProfileBase.cs
- X509KeyIdentifierClauseType.cs
- ObjectList.cs
- RubberbandSelector.cs
- Focus.cs
- Nodes.cs
- MdiWindowListStrip.cs
- PathData.cs
- URI.cs
- ObjectStateEntryDbUpdatableDataRecord.cs
- Debug.cs
- CacheMemory.cs
- CompensationDesigner.cs
- XmlParser.cs
- TemplateBaseAction.cs
- WindowsSlider.cs
- X509CertificateEndpointIdentity.cs
- BinaryMessageEncoder.cs
- RegexTree.cs
- TimeoutTimer.cs
- DataBindingHandlerAttribute.cs
- HostingEnvironmentException.cs
- NativeCompoundFileAPIs.cs
- UInt64Storage.cs
- TypeLibConverter.cs
- DBCSCodePageEncoding.cs
- SessionEndingEventArgs.cs
- DockPattern.cs
- DesignerObject.cs
- ManagementObject.cs
- SByteStorage.cs
- FrameworkObject.cs
- DependencySource.cs
- State.cs
- LogicalExpr.cs
- IdentitySection.cs
- ISAPIRuntime.cs
- ColumnWidthChangingEvent.cs
- ReceiveCompletedEventArgs.cs
- ProgressBar.cs
- DetailsViewUpdatedEventArgs.cs
- PostBackOptions.cs
- StrokeNodeEnumerator.cs
- HitTestResult.cs
- TraceListener.cs
- SqlDataReader.cs
- CommonDialog.cs
- WebDescriptionAttribute.cs
- TextEndOfParagraph.cs
- StubHelpers.cs
- ChangeInterceptorAttribute.cs
- DataSourceProvider.cs
- updatecommandorderer.cs
- PointCollectionConverter.cs
- HtmlTitle.cs
- WrappedIUnknown.cs
- ChildTable.cs
- StateManager.cs
- LineServicesCallbacks.cs
- WebResourceUtil.cs
- RemotingConfigParser.cs
- Vertex.cs
- TextFormatterImp.cs
- RegexCompilationInfo.cs
- TimeSpan.cs
- followingquery.cs
- FormViewModeEventArgs.cs
- PipeConnection.cs
- TextElementCollectionHelper.cs
- ConnectionPoint.cs
- Buffer.cs
- IconBitmapDecoder.cs
- XmlnsDefinitionAttribute.cs
- HttpPostClientProtocol.cs
- UpdateExpressionVisitor.cs
- ListenerSessionConnectionReader.cs
- BinaryUtilClasses.cs
- SpeechAudioFormatInfo.cs
- PartialList.cs
- QilName.cs
- XMLSyntaxException.cs
- TraceHandler.cs
- StyleHelper.cs
- Oid.cs
- Control.cs
- EmptyEnumerator.cs
- ParameterToken.cs
- _ListenerRequestStream.cs
- DbConnectionPoolIdentity.cs
- SpecialFolderEnumConverter.cs
- WebServiceHandlerFactory.cs