Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public partial class Form1 : Form
- {
- public Form1()
- {
- InitializeComponent();
- }
- private void button1_Click(object sender, EventArgs e)
- {
- var button = sender as Button;
- // create fake items list
- List<string> strings = new List<string>();
- for (int i = 0; i < 36; i++)
- strings.Add("ITEM " + (i+1));
- var listViewItems = strings.Select(x => new ListViewItem(x, 0)).ToArray();
- // create a new list view
- ListView listView = new ListView();
- listView.View = View.SmallIcon;
- listView.SmallImageList = imageList1;
- listView.MultiSelect = false;
- // add items to listview
- listView.Items.AddRange(listViewItems);
- // calculate size of list from the listViewItems' height
- int itemToShow = 18;
- var lastItemToShow = listViewItems.Take(itemToShow).Last();
- int height = lastItemToShow.Bounds.Bottom + listView.Margin.Top;
- listView.Height = height;
- // create a new popup and add the list view to it
- var popup = new ToolStripDropDown();
- popup.AutoSize = false;
- popup.Margin = Padding.Empty;
- popup.Padding = Padding.Empty;
- ToolStripControlHost host = new ToolStripControlHost(listView);
- host.Margin = Padding.Empty;
- host.Padding = Padding.Empty;
- host.AutoSize = false;
- host.Size = listView.Size;
- popup.Size = listView.Size;
- popup.Items.Add(host);
- // show the popup
- popup.Show(this, button.Left, button.Bottom);
- }
- }
- // change some properties (for selection) and subscribe the ItemActivate
- // event of the listView
- listView.HotTracking = true;
- listView.Activation = ItemActivation.OneClick;
- listView.ItemActivate += new EventHandler(listView_ItemActivate);
- // the click on the item invokes this method
- void listView_ItemActivate(object sender, EventArgs e)
- {
- var listview = sender as ListView;
- var item = listview.SelectedItems[0].ToString();
- var dropdown = listview.Parent as ToolStripDropDown;
- // unsubscribe the event (to avoid memory leaks)
- listview.SelectedIndexChanged -= listView_ItemActivate;
- // close the dropdown (if you want)
- dropdown.Close();
- // do whatever you want with the item
- MessageBox.Show("Selected item is: " + item);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement