1

i am listing files from directories on click on that specific folder name, when files show in datagridview. Now using context menu i want to add this sendto option in that context menu and want to send that file to any removable media.

Mujtaba
  • 85
  • 2
  • 10

2 Answers2

2

The shortcuts to programs that you see in windows 'send-to' menu are stored in %APPDATA%\Microsoft\Windows\SendTo folder.

Read the contents of this folder and show the options in your Grid's context menu.

The shortcuts are .LNK files. Resolve the name of the EXE from the LNK file and call the EXE using System.Diagnostics.Process.Run

Here is how you can resolve the EXE location from the LNK files

http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/8d0f33a3-af4d-498f-a37b-e6fc84136c4a/

Unmesh Kondolikar
  • 9,256
  • 4
  • 38
  • 51
0

try to midify this example, it enables different options on different columns:

//Define different context menus for different columns
private ContextMenu contextMenuForColumn1 = new ContextMenu();
private ContextMenu contextMenuForColumn2 = new ContextMenu();

Add the following line of code in the form load event:

private void Form_Load(object sender, EventArgs e)
{
    // Load all default values of controls 
    populateDataGridView();

    // Add context mneu items
    contextMenuForColumn1.MenuItems.Add("Make Active", new     EventHandler(MakeActive));
    contextMenuForColumn2.MenuItems.Add("Delete", new     EventHandler(Delete));
    contextMenuForColumn2.MenuItems.Add("Register", new     EventHandler(Register));
}

Add the following code to mouseup event of the gridview:

private void dataGridView_MouseUp(object sender, MouseEventArgs e)
{
    // Load context menu on right mouse click
    DataGridView.HitTestInfo hitTestInfo;
    if (e.Button == MouseButtons.Right)
    {
        hitTestInfo = dataGridView.HitTest(e.X, e.Y);
        // If column is first column
        if (hitTestInfo.Type == DataGridViewHitTestType.Cell && hitTestInfo.ColumnIndex == 0)
            contextMenuForColumn1.Show(dataGridView, new Point(e.X, e.Y));
        // If column is second column
        if (hitTestInfo.Type == DataGridViewHitTestType.Cell && hitTestInfo.ColumnIndex == 1)
            contextMenuForColumn2.Show(dataGridView, new Point(e.X, e.Y));
    }
} 

Similar questions on SO:

Community
  • 1
  • 1
CloudyMarble
  • 36,908
  • 70
  • 97
  • 130