// Loading image from disk byte[] bytes = System.IO.File.ReadAllBytes(filename); myPictureBox.Image = Image.FromStream(new MemoryStream(bytes));
TreeView, ListView, and
ToolStrip use an ImageList
ImageList by itself doesn't display anything on the screen
PictureBox to display an image on the screen
// Loading image from disk imageList1.Images.Add(Bitmap.FromFile(@"c:\happy1.png")); imageList1.Images.Add(Bitmap.FromFile(@"c:\happy2.png"));
Images in your project
// Loading images happy1.png, happy2.png, ... happy5.png
for (int i = 1; i <= 5; i++)
{
imageList1.Images.Add(new Bitmap(GetType(), "Images.happy" + i + ".png"));
}
TreeNode has a Nodes collection for storing children
Add() method
treeView1.Nodes.Add("A");
treeView1.Nodes.Add("B", "B"); // Give key
treeView1.Nodes["B"].Nodes.Add("B1");
treeView1.Nodes["B"].Nodes.Add("B2");
treeView1.Nodes["B"].ExpandAll();
treeView1.Nodes.Add(new TreeNode("C"));
// Remove A
treeView1.Nodes.RemoveAt(0);
// Remove B and all its children
treeView1.Nodes["B"].Remove();
// or
treeView1.Nodes.RemoveByKey("B");
// Delete all
treeView1.Nodes.Clear();
ImageList
// ImageList from above
treeView1.ImageList = imageList1;
treeView1.Nodes.Add("A"); // Uses default image (first from image list)
treeView1.Nodes.Add("B", "B"); // Uses default image
treeView1.Nodes["B"].Nodes.Add("B1", "B1", 3); // Use image 3 when not selected
treeView1.Nodes["B"].Nodes.Add("B2", "B2", 4, 4); // Use image 4 when selected and not
treeView1.Nodes["B"].ExpandAll();
treeView1.Nodes.Add(new TreeNode("C", 2, 1)); // Use image 2 when not selected, 1 when selected
TreeNode Tag property to attach extra info to each node
treeView1.Nodes.Add("A");
treeView1.Nodes[0].Tag = "First Node";
// Use object initializer to specify tag
TreeNode node = new TreeNode("C", 2, 1) { Tag = "Last Node" };
treeView1.Nodes.Add(node);
private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{
// Send to debug Output window
Debug.WriteLine("You selected " + treeView1.SelectedNode.Text);
Debug.WriteLine("Tag = " + treeView1.SelectedNode.Tag);
}
ListView onto your form
// Create three items with sets of subitems for each item
ListViewItem item1 = new ListViewItem("item1", 0); // Text and image index
item1.SubItems.Add("1"); // Column 2
item1.SubItems.Add("2"); // Column 3
item1.SubItems.Add("3"); // Column 4
ListViewItem item2 = new ListViewItem("item2", 1);
item2.SubItems.Add("4");
item2.SubItems.Add("5");
item2.SubItems.Add("6");
ListViewItem item3 = new ListViewItem("item3", 2);
item3.SubItems.Add("7");
item3.SubItems.Add("8");
item3.SubItems.Add("9");
// Create columns (Width of -2 indicates auto-size)
listView1.Columns.Add("Column 1", -2, HorizontalAlignment.Left);
listView1.Columns.Add("Column 2", -2, HorizontalAlignment.Left);
listView1.Columns.Add("Column 3", 40, HorizontalAlignment.Right);
listView1.Columns.Add("Column 4", 40, HorizontalAlignment.Center);
// Add the items to the list view
listView1.Items.AddRange(new ListViewItem[] { item1, item2, item3 });
// Show default view
listView1.View = View.Details;
View.SmallIcon, View.List) or large images (View.LargeIcon, View.Tile) are displayed
// Create two ImageLists
ImageList imageListSmall = new ImageList();
ImageList imageListLarge = new ImageList();
// Set to a larger size since default is 16 x 16
imageListLarge.ImageSize = new Size(32, 32);
// Load happy1.png, happy2.png, etc. resources
for (int i = 1; i <= 5; i++)
{
imageListSmall.Images.Add(new Bitmap(GetType(), "Images.happy" + i + ".png"));
imageListLarge.Images.Add(new Bitmap(GetType(), "Images.happy" + i + ".png"));
}
// Assign the ImageLists to the ListView
listView1.LargeImageList = imageListLarge;
listView1.SmallImageList = imageListSmall;
// Assign each ListView item's image
for (int i = 0; i < listView1.Items.Count; i++)
{
listView1.Items[i].ImageIndex = i;
}
listView1.View = View.SmallIcon;
listView1.View = View.LargeIcon;
listView1.View = View.List;
listView1.View = View.Tile;
private void myListView_ItemActivate(object sender, EventArgs e)
{
foreach (ListViewItem item in myListView.SelectedItems)
{
MessageBox.Show(item.Text);
}
}
false so user can only activate one item at a time
Standard so double-clicking activates the item