2012-05-17 1 views
6

Xin chào, tôi có một ToolStripMenu với trình đơn "Yêu thích" mà tôi muốn thêm các mục con vào trong ứng dụng WinForms của tôi vào lúc chạy. Tôi có một datagridview rằng tôi phải bấm vào để hiển thị một menu ngữ cảnh có một "Thêm vào yêu thích" tùy chọn. Khi sự kiện đó được kích hoạt, tôi muốn thêm một mục bằng cách sử dụng một số văn bản từ hàng đã chọn từ datagriview (điều này tôi biết cách thực hiện) vào menu Ưa thích này. Phần khó nhất là tôi cần tạo mã cho sự kiện newlyCreatedToolStripMenuItem_Click của mình. Tôi sẽ xác định làm thế nào để lưu danh sách yêu thích của tôi sau này.Thêm các mục vào ToolStrip tại RunTime

Vì vậy, chúng ta sẽ cho:

Nhấp chuột phải datagridview hàng cho "John Smith"

Chọn "Add to Favorites" từ ContextMenu

Các Favorites ToolStripMenu có một mục mới được thêm vào nó đọc "John Smith"

Nhấp vào "John Smith" ToopStripMenuItem kích hoạt một hành động (chẳng hạn như chọn hàng đó trong hàng daragridview, v.v.)

Bất kỳ ý tưởng khởi đầu tốt nào?

Trả lời

12

Nếu tôi hiểu bạn đúng, tôi đoán rằng đây là chính xác những gì bạn muốn:

private void buttonAddFav_Click(object sender, EventArgs e) 
    { 
     ToolStripItem item = new ToolStripMenuItem(); 
     //Name that will apear on the menu 
     item.Text = "Jhon Smith"; 
     //Put in the Name property whatever neccessery to retrive your data on click event 
     item.Name = "GridViewRowID or DataKeyID"; 
     //On-Click event 
     item.Click += new EventHandler(item_Click); 
     //Add the submenu to the parent menu 
     favToolStripMenuItem.DropDownItems.Add(item); 
    } 

    void item_Click(object sender, EventArgs e) 
    { 
     throw new NotImplementedException(); 
    } 
4

Điều này khá đơn giản. Bạn chỉ cần thiết lập một phương thức gọi lại được sử dụng cho tất cả các yêu thích của ToolStripMenuItem. Trong phương pháp này, bạn so sánh các thuộc tính item.Text hoặc item.Name và thực hiện các phương thức yêu thích khác nhau.

private void FavoriteToolStriptem_Click(object sender, EventArgs e) { 
    ToolStripMenuItem item = sender as ToolStripMenuItem; 
    MessageBox.Show("You clicked on the menu item called " + item.Name + " shown as " + item.Text); 
} 
+0

này cũng là đúng, cảm ơn! – ikathegreat