C# code
private void ToggleTreeView(object sender,EventArgs e)
{
//设置treeview在textBox之上或下
if(!treeView.Visible)
{
SetTreeViewSizeAndLocation();
try
{
this.btnSelect.Text = "-";
this.Parent.Controls.Add(treeView);
this.treeView.BringToFront();
treeView.Visible = true;
//treeView.Select();
Parent.MouseMove += new MouseEventHandler(ParentMouseMoveHandler);
if(treeView.Width < this.Width || treeView.Height < this.Height)
{
treeView.Width = tvMinWidth;
treeView.Height = 150;
SetHotSpot();
}
}
catch
{
}
}
else
{
try
{
btnSelect.Text = "+";
treeView.Visible = false;
this.Parent.Controls.Remove(treeView);
Parent.MouseMove -= new MouseEventHandler(ParentMouseMoveHandler);
}
catch
{
}
}
}
上面这个函数就是button的单击事件
10 个解决方案
#1
楼主,请先确认个问题。
WM的TreeView支持向上弹出么?
我查了MSDN没发现类似的属性或方法。
关注。
WM的TreeView支持向上弹出么?
我查了MSDN没发现类似的属性或方法。
关注。
#2
不是那个意思,是指设置treeView的弹出位置,可以在textbox之上或是之下
这个贴子如何发图片啊。。
这个贴子如何发图片啊。。
#3
不知道怎么发图片。
如果是这样,就是楼主自己计算的事了,说说思路。
先用textbox的Location判断距离Client的底部距离,与treeView的高度比较。
如果距离<treeView高度就在textbox的上面弹出treeView。
弹出的Location用当前textbox的Location的Y坐标-treeView的高度。
如果距离>treeView高度,就能在textbox下面显示下treeView。
写的比较混乱,不知道楼主能看懂不。
如果是这样,就是楼主自己计算的事了,说说思路。
先用textbox的Location判断距离Client的底部距离,与treeView的高度比较。
如果距离<treeView高度就在textbox的上面弹出treeView。
弹出的Location用当前textbox的Location的Y坐标-treeView的高度。
如果距离>treeView高度,就能在textbox下面显示下treeView。
写的比较混乱,不知道楼主能看懂不。
#4
这个Location如何与Client的底部距离比较,Client没接触过。。
#5
不是放到Form里面么,Form的高
#6
if (this.txtValue.Location.Y - this.Height > this.treeView.Height)
{
//textbox下显示
}
else
{
//textbox显示
Point point = new Point(this.txtValue.Location.X, this.txtValue.Location.Y - this.treeView.Height);
}
#7
好像反了,应该这样
if (this.Height - this.txtValue.Location.Y > this.treeView.Height)
{
//textbox下显示
}
else
{
//textbox显示
Point point = new Point(this.txtValue.Location.X, this.txtValue.Location.Y - this.treeView.Height);
}
#8
颜色没显示出来呢
if ( this.Height - this.txtValue.Location.Y > this.treeView.Height)
{
//textbox下显示
}
else
{
//textbox显示
Point point = new Point(this.txtValue.Location.X, this.txtValue.Location.Y - this.treeView.Height);
}
if ( this.Height - this.txtValue.Location.Y > this.treeView.Height)
{
//textbox下显示
}
else
{
//textbox显示
Point point = new Point(this.txtValue.Location.X, this.txtValue.Location.Y - this.treeView.Height);
}
#9
只需判断一下当前的位置如果是向下显示的空间够不够, 不够就把整个tree向上移一个tree的高度显示.
#10
能不能讲下具体思路?比如与剩余空间的判断
#1
楼主,请先确认个问题。
WM的TreeView支持向上弹出么?
我查了MSDN没发现类似的属性或方法。
关注。
WM的TreeView支持向上弹出么?
我查了MSDN没发现类似的属性或方法。
关注。
#2
不是那个意思,是指设置treeView的弹出位置,可以在textbox之上或是之下
这个贴子如何发图片啊。。
这个贴子如何发图片啊。。
#3
不知道怎么发图片。
如果是这样,就是楼主自己计算的事了,说说思路。
先用textbox的Location判断距离Client的底部距离,与treeView的高度比较。
如果距离<treeView高度就在textbox的上面弹出treeView。
弹出的Location用当前textbox的Location的Y坐标-treeView的高度。
如果距离>treeView高度,就能在textbox下面显示下treeView。
写的比较混乱,不知道楼主能看懂不。
如果是这样,就是楼主自己计算的事了,说说思路。
先用textbox的Location判断距离Client的底部距离,与treeView的高度比较。
如果距离<treeView高度就在textbox的上面弹出treeView。
弹出的Location用当前textbox的Location的Y坐标-treeView的高度。
如果距离>treeView高度,就能在textbox下面显示下treeView。
写的比较混乱,不知道楼主能看懂不。
#4
这个Location如何与Client的底部距离比较,Client没接触过。。
#5
不是放到Form里面么,Form的高
#6
if (this.txtValue.Location.Y - this.Height > this.treeView.Height)
{
//textbox下显示
}
else
{
//textbox显示
Point point = new Point(this.txtValue.Location.X, this.txtValue.Location.Y - this.treeView.Height);
}
#7
好像反了,应该这样
if (this.Height - this.txtValue.Location.Y > this.treeView.Height)
{
//textbox下显示
}
else
{
//textbox显示
Point point = new Point(this.txtValue.Location.X, this.txtValue.Location.Y - this.treeView.Height);
}
#8
颜色没显示出来呢
if ( this.Height - this.txtValue.Location.Y > this.treeView.Height)
{
//textbox下显示
}
else
{
//textbox显示
Point point = new Point(this.txtValue.Location.X, this.txtValue.Location.Y - this.treeView.Height);
}
if ( this.Height - this.txtValue.Location.Y > this.treeView.Height)
{
//textbox下显示
}
else
{
//textbox显示
Point point = new Point(this.txtValue.Location.X, this.txtValue.Location.Y - this.treeView.Height);
}
#9
只需判断一下当前的位置如果是向下显示的空间够不够, 不够就把整个tree向上移一个tree的高度显示.
#10
能不能讲下具体思路?比如与剩余空间的判断