Click here to Skip to main content
13,287,232 members (48,262 online)
Click here to Skip to main content
Add your own
alternative version


28 bookmarked
Posted 20 May 2002

A managed "Send To" menu class

, 20 May 2002
Rate this:
Please Sign up or sign in to vote.
An article on a small managed C++ class which gives ability to use the "Send To" feature of Windows Explorer.

Sample Image


In one of the applications I have created is a "Send To" menu class using MFC which displays a list of the user's "Send To" extensions and sends a file to the extension the user selects. Now I tried to write a Microsoft .NET assembly and I chose the "Send To" menu class as stuff for the assembly. WARNING: The assembly source code may contain errors. Use the source code of the assembly at your own risk.

Visually the "Send To" menu is a menu containing menu sub-items with the graphical representation of the user's "Send To" extensions. The sub-items can be both with and without bitmaps.

The "Send To" menu class is a descendant of the System.Windows.Forms.MenuItem class and contains the following new public properties and methods:

// [C#] 
public bool EnableBitmap [  get,  set ]
public void Replace ( System.Windows.Forms.MenuItem menuItem , 
                      System.EventHandler eventHandler )
public void Restore (  )
' [Visual Basic] 
Public Property EnableBitmap As Boolean
Public Sub Replace(ByVal menuItem As System.Windows.Forms.MenuItem, _
                   ByVal eventHandler As System.EventHandler)
Public Sub Restore()
EnableBitmapGets or sets a value indicating whether the subitems have bitmaps.
ReplaceReplaces an existing menu item by a Send To menu item
RestoreRestores the menu item which is replaced by the Replace method

You can use the given class in two ways. The first one is to replace an existing menu item and the second one is to add a new "Send To" menu item to the application menu manually. Use the first method if you design an application menu using the designer, and the second one - if you create an application menu manually.

To replace an existing menu item you have to:

  1. Declare a form variable based on the SentToMenuItem class.

    // [C#]
    private megaBYTE.SendToMenuItem menuItemSendTo;
    ' [Visual Basic] 
    Friend WithEvents MenuItemSendTo As megaBYTE.SendToMenuItem
  2. Create an instance of the SentToMenuItem class.

    // [C#]
    menuItemSendTo = new megaBYTE.SendToMenuItem();
    ' [Visual Basic] 
    Me.MenuItemSendTo = New megaBYTE.SendToMenuItem()
  3. If it is necessary set the EnableBitmap property.

    // [C#]
    menuItemSendTo.EnableBitmap = false;
    ' [Visual Basic] 
    Me.MenuItemSendTo.EnableBitmap = False
  4. Call the Replace method.

    // [C#]
    menuItemSendTo.Replace(menuItemSendToStub, new EventHandler(menuItemSendToStub_Click));
    ' [Visual Basic] 
    Me.MenuItemSendTo.Replace(Me.MenuItemSendToStub, _
                             New EventHandler(AddressOf Me.MenuItemSendToStub_Click))

The most interesting is point 4. The first parameter of the Replace method is the item to be replaced and the second parameter is a new instance of the EventHandler class. The parameter of the EventHandler class constructor is the click event handler of the replaced item. The click event handler method looks like

// [C#]
private void menuItemSendToStub_Click(object sender, System.EventArgs e)
  if (e.GetType() == typeof(megaBYTE.SendToClickEventArgs)) 
    OpenFileDialog dlg = new OpenFileDialog();
    dlg.CheckFileExists = true;
    if (dlg.ShowDialog() == DialogResult.OK)
      megaBYTE.SendToClickEventArgs se = (megaBYTE.SendToClickEventArgs)e;
      se.FileName = dlg.FileName;
' [Visual Basic] 
Private Sub MenuItemSendToStub_Click(ByVal sender As System.Object, _
                 ByVal e As System.EventArgs) Handles MenuItemSendToStub.Click
  If TypeOf e Is megaBYTE.SendToClickEventArgs Then
    Dim dlg As New OpenFileDialog()
    dlg.CheckFileExists = True
    If dlg.ShowDialog = DialogResult.OK Then
      Dim se As megaBYTE.SendToClickEventArgs
      se = CType(e, megaBYTE.SendToClickEventArgs)
      se.FileName = dlg.FileName
    End If
  End If
End Sub

If you are going to add the "Sent To" menu manually just use the SendToMenuItem class as the System.Windows.Forms.MenuItem class.

The assembly source code contains parts of the Microsoft SENDTO sample.


This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here


About the Author

Alexey Sinutin
Russian Federation Russian Federation
No Biography provided

You may also be interested in...


Comments and Discussions

Generalthe dll is not running with 64 bit operating system please help Pin
mhmad19-Jul-09 21:41
membermhmad19-Jul-09 21:41 
GeneralMonitor Send to Command Pin
eg_Anubhava5-May-09 19:46
membereg_Anubhava5-May-09 19:46 
Generali need to send to menu class Pin
syriast2-Aug-06 3:19
membersyriast2-Aug-06 3:19 
GeneralRe: i need to send to menu class Pin
syriast3-Aug-06 0:29
membersyriast3-Aug-06 0:29 
GeneralPorting to ToolStripMenuItem Pin
nhlpens663-Jul-06 9:34
membernhlpens663-Jul-06 9:34 
GeneralWrite a "Send To" menu class in c# Pin
lin11618-Aug-05 19:36
memberlin11618-Aug-05 19:36 
GeneralCode Explanation Pin
Chris Keeble27-Apr-05 0:25
memberChris Keeble27-Apr-05 0:25 
Generalsendto - mail Pin
yarivNachmias14-Nov-04 18:50
sussyarivNachmias14-Nov-04 18:50 
GeneralNice :-) Pin
Nish - Native CPian21-May-02 19:50
memberNish - Native CPian21-May-02 19:50 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Permalink | Advertise | Privacy | Terms of Use | Mobile
Web04 | 2.8.171207.1 | Last Updated 21 May 2002
Article Copyright 2002 by Alexey Sinutin
Everything else Copyright © CodeProject, 1999-2017
Layout: fixed | fluid