小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

c# this.topmost不工作

 行走在理想邊緣 2022-11-23 發(fā)布于四川

我是C#的新手,仍然試圖讓我的頭腦(在一些非常耐心的朋友的幫助下)。

我在將新窗體的TopMost屬性設(shè)置為true時(shí)遇到問題。我有兩個(gè)(幾乎)相同的形式; 1工作正常,而工作正常。

兩個(gè)表單都將TopMost屬性設(shè)置為true。

  • Form1顯示窗口,當(dāng)我嘗試在其后面單擊時(shí),表單閃爍幾次并發(fā)出一聲窗口發(fā)出嗶聲。
  • Form2也會(huì)顯示表單,但當(dāng)我在其后面單擊時(shí),表單會(huì)變灰(或失去焦點(diǎn)),我可以在主表單上單擊。

我已經(jīng)搜索了這個(gè)問題的答案,并找到了一個(gè)答案,建議將this.TopMost = true;放在表單的加載事件中,但這不起作用。

我唯一可能改變或者可能沒有影響的是Form1是在屬性中設(shè)置.NET 4.5創(chuàng)建的,在創(chuàng)建Form2之前,我將其更改為.NET 3.5(客戶端配置文件)。我已經(jīng)嘗試過將其更改回來,但它沒有幫助。在我再次刪除并創(chuàng)建Form2之前,有沒有人有任何想法?

非常感謝提前。 (如果您需要更多信息,請(qǐng)告訴我們)

6 個(gè)答案:

答案 0 :(得分:13)

TopMost是一個(gè)屬性,用于確保一個(gè)窗口始終顯示在應(yīng)用程序中的所有其他窗口之上。微軟的例子是一個(gè)查找和替換工具。

您發(fā)現(xiàn)的差異是通過使用ShowDialog將Form1創(chuàng)建為模式對(duì)話框。顯示對(duì)話框確保必須先關(guān)閉表單,然后才能再次使用應(yīng)用程序中的所有其他窗口。例如;使用表單獲取用戶數(shù)據(jù)以進(jìn)入父表單數(shù)據(jù)庫(kù)。

當(dāng)您不介意用戶是否已完成對(duì)話時(shí),使用

Show,例如允許您的用戶有機(jī)會(huì)使用一些輔助功能(例如計(jì)時(shí)器,秒表)程序的功能。

在使用不同的.Net框架時(shí),我能想到的唯一視覺差異是不同的窗口對(duì)話框,例如OpenFileDialog,已在整個(gè)框架中更新

答案 1 :(得分:6)

它可能對(duì)你有幫助;

frm.TopLevel = true;
frm.TopMost = true;

答案 2 :(得分:3)

微軟的這個(gè)鏈接確認(rèn)可能是Windows 7和Windows Server 2008 R2中的一個(gè)Bug我在Windows 7嵌入式系統(tǒng)中遇到過這個(gè)問題,所提供的補(bǔ)丁修復(fù)了這個(gè)問題所以請(qǐng)考慮一下:)

http://support.microsoft.com/kb/2587473/en-us

希望有所幫助!

答案 3 :(得分:1)

大錘方式做到了! 100%工作!

public static class User32
{
    public const int SW_HIDE = 0;
    public const int SW_SHOW = 5;
    public const int SW_SHOWNORMAL = 1;
    public const int SW_SHOWMAXIMIZED = 3;
    public const int SW_RESTORE = 9;

    [DllImport("user32.dll")]
    public static extern bool SetForegroundWindow(IntPtr hWnd);
    [DllImport("user32.dll")]
    public static extern bool AllowSetForegroundWindow(uint dwProcessId);
    [DllImport("user32.dll")]
    public static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
}

User32.AllowSetForegroundWindow((uint)Process.GetCurrentProcess().Id);
User32.SetForegroundWindow(Handle);
User32.ShowWindow(Handle, User32.SW_SHOWNORMAL);

答案 4 :(得分:-1)

我在解決方案中遇到了類似的問題。在使用重載的Show-function之后,它起作用了:

frm.TopLevel = true;
frm.TopMost = true;
frm.Show(this)

答案 5 :(得分:-1)

已顯示事件中添加以下代碼:

this.TopMost = true;
this.Focus();
this.TopMost = true;

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多