web-dev-qa-db-ja.com

アイテムが選択されたときにwinformsツリービューアイコンが変更されないようにする方法

私は小さなC#/ Winformsアプリケーションでツリービューを試しています。プログラムでImageListをツリービューに割り当てましたが、すべてのノードでアイコンが正常に表示されます。butノードをクリックすると、アイコンが(ImageListの最初の画像に)変わります。アイコンを変更しないようにするにはどうすればよいですか?

ところで:「SelectedImageIndex」は「(none)」に設定されています。これは、ノードごとにimage-indexが異なるため、何に設定すればよいかわからないためです(おそらく?)。

[〜#〜] update [〜#〜]:アプリケーションのコードは次のとおりです(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;
        }
    }
}
35
S.C. Madsen

各ノードのSelectedImageIndexをImageIndexと同じ値に設定するだけです。したがって、プログラムでノードを作成している場合は、次のようになります。

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

または、コンストラクターでロット全体を指定できます。

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

設計時にノードを追加する場合は、設計時エディターを使用して同じことを行うことができます。必要なのは、TreeViewレベルではなく、ノードレベルでSelectedImageIndexを設定することだけです。

54
Matt B

こんにちは次のコードも使用できます。

TreeNode Node = eventArgs.Node;
Node.SelectedImageKey = Node.ImageKey;
3
RekhaShanmugam