簡體   English   中英

C#LocationChanged事件未觸發

[英]C# LocationChanged event not firing

我有一個表格可以用來疊加那些我不想讓用戶在給定時間弄亂的東西。 當我使用此覆蓋表單來覆蓋整個表單時,一切工作都很漂亮。 但是,當我用它覆蓋面板時,LocationChanged事件永遠不會觸發! 我嘗試更改面板的屬性,以查看是否有某種原因阻止了它。 我嘗試使用Dock = Fill,也嘗試匹配其父控件的大小並使用錨點...全部無濟於事。

我缺少什么可以阻止LocationChanged事件觸發的東西嗎?

疊加形式:

Panel PanelToCover = new Panel();

public Overlay(Panel paneltocover)
{
    PanelToCover = paneltocover;


    this.StartPosition = FormStartPosition.Manual;
    this.AutoScaleMode = AutoScaleMode.None;
    this.Location = paneltocover.PointToScreen(Point.Empty);
    this.ClientSize = paneltocover.ClientSize;
    paneltocover.LocationChanged += PanelCover_LocationChanged;
    paneltocover.ClientSizeChanged += PanelCover_ClientSizeChanged;
    this.Show(paneltocover);
    paneltocover.Focus();
}

private void PanelCover_LocationChanged(object sender, EventArgs e)
{
    this.Location = PanelToCover.PointToScreen(Point.Empty);
}
private void PanelCover_ClientSizeChanged(object sender, EventArgs e)
{
    // This works without an issue
    this.ClientSize = PanelToCover.ClientSize;
}

編輯:我很傻。 面板的位置不會因其所有者而改變。 我正在檢查PointToScreen的值,觀察它的變化,想知道為什么從未觸發LocationChanged事件。

面板的位置是相對於表單的,因此,如果您移動表單,則不會在面板上觸發location_changed事件。 這就是事件未觸發的原因。

面板的Location屬性代表面板在其包含控件(窗體)上的位置。 面板不會相對於窗體移動,因此LocationChanged不會觸發。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM