c# winform新手求解答,带滚动条的panel位置问题

TinanBao 2017-04-24 05:45:58
如图所示,winform中一共有两个panel,分别命名为panel1,panel2,panel2放在panel1中,panel2特别大,panel1停靠在父窗体中,设置滚动条可滚动,这样,就可以在panel1中通过滚动条查看panel2了,滚动条滚动的时候,我想获取panel2左上角的坐标,怎么获取啊??
尝试过通过滚动条的值来获取,不行啊。通过滚动条值获取的代码如下。

lastRightPanelVerticalScrollValue = panel.VerticalScroll.Value;


...全文
790 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
Yeacor 2019-12-11
  • 打赏
  • 举报
回复
学习一下,mark
JustWantToFly 2017-04-24
  • 打赏
  • 举报
回复
引用 9 楼 JustWantToFly 的回复:
[quote=引用 8 楼 TinanBao 的回复:] [quote=引用 6 楼 JustWantToFly 的回复:] [quote=引用 5 楼 TinanBao 的回复:] [quote=引用 4 楼 JustWantToFly 的回复:] 不知道你是不是这个意思,当我往下拉滚动条时,我动态获取当前panel2的左上角坐标
是的 我通过滚动条位置确定似乎不管用 你是怎么获得的呢?[/quote]

 //滚动时左上角坐标
            Point location = panel2.Location;
[/quote] 我试试,看了下你的图片,怎么Y值还存在负值呢?[/quote] panel2不是panel1的子控件嘛,panel2的location是获取panel2相对于panel1的左上角的位置,我panel1的dock是向上停靠,相当于固定在窗体上部不动,当滚动滚动条时,panel2的位置是变化的,当它的上面的边开始超过panel1的上边界,Y坐标就开始为负值了[/quote] 你就可以理解为panel1的上边界是X轴,panel2的左上角是一个点,这个点一开始在Y的正半轴,当它不断的向下移动时,点超过X轴之后是不是Y轴就开始变为负值了?这样容易理解吧
TinanBao 2017-04-24
  • 打赏
  • 举报
回复
引用 9 楼 JustWantToFly 的回复:
[quote=引用 8 楼 TinanBao 的回复:] [quote=引用 6 楼 JustWantToFly 的回复:] [quote=引用 5 楼 TinanBao 的回复:] [quote=引用 4 楼 JustWantToFly 的回复:] 不知道你是不是这个意思,当我往下拉滚动条时,我动态获取当前panel2的左上角坐标
是的 我通过滚动条位置确定似乎不管用 你是怎么获得的呢?[/quote]

 //滚动时左上角坐标
            Point location = panel2.Location;
[/quote] 我试试,看了下你的图片,怎么Y值还存在负值呢?[/quote] panel2不是panel1的子控件嘛,panel2的location是获取panel2相对于panel1的左上角的位置,我panel1的dock是向上停靠,相当于固定在窗体上部不动,当滚动滚动条时,panel2的位置是变化的,当它的上面的边开始超过panel1的上边界,Y坐标就开始为负值了[/quote] 恩,是的,我刚刚尝试了一下,应该可以解决问题吧,我试试,谢谢了啊
JustWantToFly 2017-04-24
  • 打赏
  • 举报
回复
引用 8 楼 TinanBao 的回复:
[quote=引用 6 楼 JustWantToFly 的回复:] [quote=引用 5 楼 TinanBao 的回复:] [quote=引用 4 楼 JustWantToFly 的回复:] 不知道你是不是这个意思,当我往下拉滚动条时,我动态获取当前panel2的左上角坐标
是的 我通过滚动条位置确定似乎不管用 你是怎么获得的呢?[/quote]

 //滚动时左上角坐标
            Point location = panel2.Location;
[/quote] 我试试,看了下你的图片,怎么Y值还存在负值呢?[/quote] panel2不是panel1的子控件嘛,panel2的location是获取panel2相对于panel1的左上角的位置,我panel1的dock是向上停靠,相当于固定在窗体上部不动,当滚动滚动条时,panel2的位置是变化的,当它的上面的边开始超过panel1的上边界,Y坐标就开始为负值了
TinanBao 2017-04-24
  • 打赏
  • 举报
回复
引用 6 楼 JustWantToFly 的回复:
[quote=引用 5 楼 TinanBao 的回复:] [quote=引用 4 楼 JustWantToFly 的回复:] 不知道你是不是这个意思,当我往下拉滚动条时,我动态获取当前panel2的左上角坐标
是的 我通过滚动条位置确定似乎不管用 你是怎么获得的呢?[/quote]

 //滚动时左上角坐标
            Point location = panel2.Location;
[/quote] 我试试,看了下你的图片,怎么Y值还存在负值呢?
JustWantToFly 2017-04-24
  • 打赏
  • 举报
回复
private void panel1_Scroll(object sender, ScrollEventArgs e) { //滚动时左上角坐标 Point location = panel2.Location; richTextBox1.Text = richTextBox1.Text + location.ToString() + "\n"; } 是这个事件里面
JustWantToFly 2017-04-24
  • 打赏
  • 举报
回复
引用 5 楼 TinanBao 的回复:
[quote=引用 4 楼 JustWantToFly 的回复:] 不知道你是不是这个意思,当我往下拉滚动条时,我动态获取当前panel2的左上角坐标
是的 我通过滚动条位置确定似乎不管用 你是怎么获得的呢?[/quote]

 //滚动时左上角坐标
            Point location = panel2.Location;
TinanBao 2017-04-24
  • 打赏
  • 举报
回复
引用 4 楼 JustWantToFly 的回复:
不知道你是不是这个意思,当我往下拉滚动条时,我动态获取当前panel2的左上角坐标
是的 我通过滚动条位置确定似乎不管用 你是怎么获得的呢?
JustWantToFly 2017-04-24
  • 打赏
  • 举报
回复

不知道你是不是这个意思,当我往下拉滚动条时,我动态获取当前panel2的左上角坐标
JustWantToFly 2017-04-24
  • 打赏
  • 举报
回复
引用 2 楼 TinanBao 的回复:
[quote=引用 1 楼 JustWantToFly 的回复:] panel不是有个location的属性吗?就是获取它左上角相对于它容器左上角的坐标
你说的是panel在它容器中的位置,我表达的不是这个意思。 我的意思是很长的panel,滚动条滚动时,左上角的位置是变动的,怎么获得左上角的位置[/quote] 你在滚动条滚动触发事件里面使用这个属性不行吗?等下我去写个例子试试
TinanBao 2017-04-24
  • 打赏
  • 举报
回复
引用 1 楼 JustWantToFly 的回复:
panel不是有个location的属性吗?就是获取它左上角相对于它容器左上角的坐标
你说的是panel在它容器中的位置,我表达的不是这个意思。 我的意思是很长的panel,滚动条滚动时,左上角的位置是变动的,怎么获得左上角的位置
JustWantToFly 2017-04-24
  • 打赏
  • 举报
回复
panel不是有个location的属性吗?就是获取它左上角相对于它容器左上角的坐标

110,525

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧