You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何初始化鼠标悬停弹出窗体相对于父窗体的起始位置?

解决方案

问题根源在于弹窗窗体的StartPosition属性默认值为WindowsDefaultLocation,系统会先将弹窗定位到屏幕左上角,之后才执行你设置的位置代码,所以出现了短暂的位置闪烁。

解决步骤:

  1. 设置弹窗的StartPosition为Manual
    你可以在设计器中选中rolloverpopup,找到StartPosition属性并改为Manual;也可以在代码初始化弹窗的位置添加:

    rolloverpopup.StartPosition = FormStartPosition.Manual;
    
  2. 保留并简化位置计算逻辑
    你基于主窗体位置偏移的计算逻辑是可行的,修改后的事件代码可以更简洁:

    private void lblQuestionMark_MouseEnter(object sender, EventArgs e)
    {
        rolloverpopup.Location = new Point(this.Location.X + 280, this.Location.Y + 220);
        rolloverpopup.Show();
    }
    

设置完成后,弹窗会直接以你指定的位置显示,不会再出现屏幕左上角闪烁的问题。如果后续主窗体位置变动,还可以监听主窗体的LocationChanged事件,同步更新弹窗位置。

内容的提问来源于stack exchange,提问作者Guy 4678

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 20:22:17