【发布时间】:2014-03-17 18:07:00
【问题描述】:
在我的 Windows 窗体中,我有以下 Treeview 控件,它带有四个节点来代表大学课程的学年。
如您所见,我已将小图像添加到节点(以对它们进行颜色编码)图像大小为 8 X 8 像素 png 图像。我使用ImageList 集合将它们内联存储。
我有两个问题
- 节点之间没有间隙,因此图像(颜色代码)看起来不专业
第二个问题参考下图看看我点击一个节点时发生了什么
2.如你所见,绿色的突然变成了橙色
有没有办法解决这些问题?
在treeview控件的当前配置中,我已将showlines设置为false,将hideselection设置为false,其余属性均为默认设置。
这里是代码
在表单的 load() 中我有这个 myImageList 集合变量是全局声明的
private void FrmNewProgram_Load(object sender, EventArgs e)
{
myImageList = new ImageList();
myImageList.Images.Add(new Bitmap(SMSV100.Properties.Resources.year1tagx16));
myImageList.Images.Add(new Bitmap(SMSV100.Properties.Resources.year12tagx16));
myImageList.Images.Add(new Bitmap(SMSV100.Properties.Resources.year3x16));
myImageList.Images.Add(new Bitmap(SMSV100.Properties.Resources.year4x16));
tvcAcdYears.ImageList = myImageList;
}
有一个我没有提到的组合框,但在这里它的作用是,它有 1、2、3、4 个值分别表示第 1、2、3、4 年,所以在我添加的组合框的 SelectedIndexChanged() 事件中此代码,因此它将以下列方式添加节点。如果用户选择 1,则仅将 Year #1 添加到 TreeView 如果用户选择 2,则将 Year #1 和 Year #2 添加到 TreeView,依此类推
private void cmbProgDuration_SelectedIndexChanged(object sender, EventArgs e)
{
if (cmbProgDuration.SelectedIndex > -1)
{
if (cmbProgDuration.SelectedIndex == 0)
{
tvcAcdYears.Nodes.Clear();
TreeNode tnOneYear = new TreeNode("Year #1");
tnOneYear.ImageIndex = 0;
tvcAcdYears.Nodes.Add(tnOneYear);
}
else if (cmbProgDuration.SelectedIndex == 1)
{
tvcAcdYears.Nodes.Clear();
TreeNode tnOneYear = new TreeNode("Year #1");
tnOneYear.ImageIndex = 0;
TreeNode tn2ndYear = new TreeNode("Year #2");
tn2ndYear.ImageIndex = 1;
tvcAcdYears.Nodes.Add(tnOneYear);
tvcAcdYears.Nodes.Add(tn2ndYear);
}
else if (cmbProgDuration.SelectedIndex == 2)
{
tvcAcdYears.Nodes.Clear();
TreeNode tnOneYear = new TreeNode("Year #1");
tnOneYear.ImageIndex = 0;
TreeNode tn2ndYear = new TreeNode("Year #2");
tn2ndYear.ImageIndex = 1;
TreeNode tn3rdYear = new TreeNode("Year #3");
tn3rdYear.ImageIndex = 2;
tvcAcdYears.Nodes.Add(tnOneYear);
tvcAcdYears.Nodes.Add(tn2ndYear);
tvcAcdYears.Nodes.Add(tn3rdYear);
}
else if (cmbProgDuration.SelectedIndex == 3)
{
tvcAcdYears.Nodes.Clear();
TreeNode tnOneYear = new TreeNode("Year #1");
tnOneYear.ImageIndex = 0;
TreeNode tn2ndYear = new TreeNode("Year #2");
tn2ndYear.ImageIndex = 1;
TreeNode tn3rdYear = new TreeNode("Year #3");
tn3rdYear.ImageIndex = 2;
TreeNode tn4thYear = new TreeNode("Year #4");
tn4thYear.ImageIndex = 3;
tvcAcdYears.Nodes.Add(tnOneYear);
tvcAcdYears.Nodes.Add(tn2ndYear);
tvcAcdYears.Nodes.Add(tn3rdYear);
tvcAcdYears.Nodes.Add(tn4thYear);
}
tvcAcdYears.SelectedNode = tvcAcdYears.Nodes[0];
}
}
谢谢
【问题讨论】: