C# 获取可滚动屏幕的左下角位置
说明在Winform C#应用程序中创建了一个表单C# 获取可滚动屏幕的左下角位置,c#,winforms,C#,Winforms,说明在Winform C#应用程序中创建了一个表单 添加了一个面板(PBack),带有坞式填充。(可滚动) 然后在面板(PBack)中添加一个picturebox(pbDraw),其高度取决于图像大小 我想在当前屏幕视图的左下角添加一个控件。(假设客户端已向下滚动) 我尝试的 rect=Screen.GetWorkingArea(pbDraw) ctrl.Top=rect.Top+rect.Height ctrl.Top=Screen.PrimaryScreen.WorkingArea.Top+
rect=Screen.GetWorkingArea(pbDraw)代码>
ctrl.Top=rect.Top+rect.Height代码>
ctrl.Top=Screen.PrimaryScreen.WorkingArea.Top+Screen.PrimaryScreen.WorkingArea.Height代码>
ctrl.Top=Screen.FromControl(pbDraw).WorkingArea.Top+Screen.FromControl(pbDraw).WorkingArea.Height代码>
pBack
及其客户端视图相关的坐标:
ctrl.Top = pBack.Height - ctrl.Height;
假设ctrl
是pBack
的子项,则此代码应将其放置在pBack
更新:
正如您在评论中所说,ctrl
实际上是pbDraw
的子项。在这种情况下,您需要考虑滚动。为此,您可以使用:
如果我是你,我会将
ctrl
添加到图片框顶部的面板中。这将使计算相对于面板的偏移更容易。首先,您说“我想在当前屏幕视图的左下角添加一个控件”,然后说“…控件不在当前屏幕的顶部”。要将此控件粘贴到屏幕的顶部还是底部?是否希望此组件在滚动期间保持在位?你能给我们看看这张照片吗?我承认这是我的错。实际上,我想在当前边界的左下角显示控件。没问题,只需解决您的问题。据我所知,您希望在图像的底部添加此控件,因此用户只有在向下滚动图像时才能看到它。我说得对吗?同样,一些截图将非常感谢。我添加了描述图片。希望这会有帮助。我想在当前视图的左下角添加控件。当您向已经滚动的面板添加控件时,您必须调整其位置。添加面板的AutoScrollPosition。我恐怕不能说它不起作用。ctrl.Top=pBack.Height-ctrl.Height;第一次控制添加到我想要的确切位置。但在滚动并单击按钮再次添加控件后,其添加位置与第一次添加的位置相同。@ZohaibWaqar我已经创建了一个示例应用程序,它运行良好。您确定ctrl
是pBack
的子项(即,您是这样添加的:pBack.Controls.Add(ctrl);
)?不是在pBack中,而是在pDraw中添加,它是pBack及其dock fill的子项,因此:pBack(fill dock)->pDraw,然后是pDraw.Controls,Add(ctrl)PBack可滚动,PDraw高度取决于图像height@ZohaibWaqar好!!祝你今天愉快!:)
//scroll position + panel height - control height
ctrl.Top = pBack.VerticalScroll.Value + pBack.Height - ctrl.Height;