2010-08-05 40 views
25

Tôi đang thử nghiệm với một số lần xem trang trong một ứng dụng C#/Winforms nhỏ. Tôi đã chỉ định một chương trình ImageList cho treeview và tất cả các nút hiển thị biểu tượng của chúng tốt, nhưng khi tôi nhấp vào nút, biểu tượng của nó thay đổi (thành hình ảnh đầu tiên trong ImageList). Làm cách nào để biểu tượng không thay đổi?Làm thế nào để tránh các thay đổi biểu tượng của biểu tượng hình thu nhỏ khi mục được chọn

BTW: "SelectedImageIndex" được đặt thành "(none)", vì tôi không thực sự biết phải đặt nó thành gì, vì chỉ mục hình ảnh khác với các nút (tôi đoán?).

CẬP NHẬT: Đây là mã của ứng dụng (Tôi đang sử dụng Visual Studio Express 2008):

namespace WindowsFormsApplication1 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
      treeView1.BeginUpdate(); 
      treeView1.Nodes.Clear(); 
      treeView1.Nodes.Add("root","Project", 0); 

      treeView1.Nodes[0].Nodes.Add("Foo", "Foo", 2); 
      treeView1.Nodes[0].Nodes[0].Nodes.Add("Fizz", "Fizz", 3); 
      treeView1.Nodes[0].Nodes[0].Nodes.Add("Buzz", "Buzz", 3); 

      treeView1.Nodes[0].Nodes.Add("Bar", "Bar", 1); 
      treeView1.Nodes[0].Nodes[1].Nodes.Add("Fizz", "Fizz", 2); 
      treeView1.Nodes[0].Nodes[1].Nodes[0].Nodes.Add("Buzz", "Buzz", 3); 

      treeView1.EndUpdate(); 
      treeView1.ImageList = imageList1; 
     } 
    } 
} 

Trả lời

41

Đơn giản chỉ cần thiết lập các SelectedImageIndex cho mỗi nút với giá trị tương tự như ImageIndex. Vì vậy, nếu bạn đang tạo nút của bạn programatically:

 TreeNode node = new TreeNode("My Node"); 
     node.ImageIndex = 1; 
     node.SelectedImageIndex = 1; 

Hoặc bạn có thể chỉ định toàn bộ rất nhiều trong các nhà xây dựng:

 TreeNode node = new TreeNode("My Node" ,1, 1); 

Bạn có thể làm điều tương tự bằng cách sử dụng trình soạn thời gian thiết kế nếu bạn' thêm các nút vào thời gian thiết kế. Bạn chỉ cần đặt SelectedImageIndex ở cấp độ nút chứ không phải ở mức TreeView.

+0

Tuyệt vời, tôi biết đây sẽ là dead-đơn giản, chỉ cần không biết nơi để tìm. Cảm ơn! (Tôi không thể chấp nhận điều này như là giải pháp trong 7 phút nữa, sẽ làm như vậy khi tôi có thể). –

3

Hi Bạn cũng có thể sử dụng đoạn mã sau:

TreeNode Node = eventArgs.Node; 
Node.SelectedImageKey = Node.ImageKey; 
Các vấn đề liên quan