add MRU List o Contextmenustrip in vb.net

Hi Experts,
My Windows desktop application has menu to open database files. I want to display 5 most recently used files as a contextmenustrip items. I have code to add it as a File Menu Item. But i am not using any menus. It is all graphical with big buttons and the button has contextmenustrip attached to it. How do I read these MRU files names and assign them dynamically to contextmenustrip? I am using Visual Studio 2008.
I will appreciat your help.
Thank you
RekhaShahAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

nepaluzCommented:
where are you storing the file paths? In an array, list of string ....?
0
RekhaShahAuthor Commented:
I am storing my list in a public array. But how do i trigger the event to open the file?
0
RekhaShahAuthor Commented:
in the form load even, I call LoadMRUList. Then I add those list items to my contextMenustrip

For i = 1 To 5
            If MRUListArray(i) <> "" Then
                Me.MRUContextMenuStrip.Items.Add(MRUListArray(i))
            End If
Next
So i can add 1 file. But next time I open a different file, I need to add this to mru list. If kind of replaces the first one and I always have only one entry.
If you have a sample code, will be great. Thanks

Private Sub LoadMruList()
        Dim file_name As String
        For i As Integer = 1 To m_NumEntries
            ' Get the next file name and title.
            file_name = GetSetting(m_ApplicationName, _
                "MruList", "FileName" & i, "")

            ' See if we got anything.
            If file_name.Length > 0 Then
                ' Save this file name.
               MRUListArray(i) = file_name
            End If
        Next i
    End Sub

Open in new window

0
Cloud Class® Course: Microsoft Windows 7 Basic

This introductory course to Windows 7 environment will teach you about working with the Windows operating system. You will learn about basic functions including start menu; the desktop; managing files, folders, and libraries.

nepaluzCommented:
Click on the context menu and then double click on the menu item, you should get this:

   Private Sub ToolStripMenuItem1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripMenuItem1.Click

    End Sub

and trigger your routine inside here, or you could add a handler everytime you add a menu (ie file path) to the menu

0
nepaluzCommented:
the handler you can make for that islike:

AddHandler ToolStripMenuItem1.Click, AddressOf sButton

and sButton will be just like above

   Private Sub sButton(ByVal sender As System.Object, ByVal e As System.EventArgs)

    End Sub
0
RekhaShahAuthor Commented:
let me get back to you tomorrow on it after trying out your suggestion. Thanks
0
RekhaShahAuthor Commented:
I have 3 buttons. 1. Open New File:  
2. Open Existing File:I show OpenFileDialog
3. 3rd button would have Recently used database list(as a contextmenustrip). So when I click on this third button, it would display MRU, and upon clicking on one of the files, it would open this existing file.  
it seems preety straightforward, but I can't seem to get it to work the way I want. If I had it as a menu item it would be very simple. i will appreciate if you have sample code(comlete code) to handle the click even on mru button.
0
nepaluzCommented:

Dim MRUListArray As Array = Nothing
'populate your array here then
Dim MRUContextMenuStrip As New ContextMenuStrip
For i = 1 To 5
If MRUListArray(i) <> "" Then
MRUContextMenuStrip.Items.Add(MRUListArray(i))
End If
Next
AddHandler MRUContextMenuStrip.ItemClicked, AddressOf sButton1
 

Private Sub sButton1(ByVal sender As System.Object, ByVal e As System.EventArgs)
Dim sItem = DirectCast(sender, ContextMenuStrip)
'now you can get the value of the item clicked by
File.Open(sItem.Text, FileMode.Open)
'or
File.Open(sItem.Name, FileMode.Open)
'depending on where you saved the full path
End Sub
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
RekhaShahAuthor Commented:
Hi,
I got it to work. Your solution was partially correct, instead of adding handler to button, I was suppose to add handler to ToolStripItem.  Attaching the code for reference. This works. Thak you for guiding to the correct direction.

Here is the correct code that works.
Hi,
I got it to work. Your solution was partially correct, instead of adding handler to button, I was suppose to add handler to ToolStripItem.  Attaching the code for reference. This works. Thak you for guiding to the correct direction.
0
RekhaShahAuthor Commented:
Here is the correct solution that works.

Private Sub MDIParent1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim tsi As ToolStripItem
        m_MruList = New MruList(APP_NAME)
        For i As Integer = 1 To 5
            If MRUListArray(i) <> "" Then
                tsi = MRUContextMenuStrip.Items.Add(MRUListArray(i))
                tsi.Name = "P" & i.ToString("00000")
                AddHandler tsi.Click, AddressOf tsi_Click
            End If
        Next i
        btnMRU.ContextMenuStrip = MRUContextMenuStrip
    End Sub

    Private Sub tsi_Click(ByVal sender As Object, ByVal e As System.EventArgs)
        Dim tsi As ToolStripItem = CType(sender, ToolStripItem)
        Debug.Print(tsi.Name & ", " & tsi.Text)
        MsgBox(tsi.Text)
    End Sub

Open in new window

0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
.NET Programming

From novice to tech pro — start learning today.