做網(wǎng)站用動(dòng)易siteweaver cms還是phpcms精準(zhǔn)客戶信息一條多少錢
一、透明窗口全屏?xí)r,鼠標(biāo)不穿透
問題描述
我有一個(gè)透明窗口,它是一個(gè)全屏置頂窗口,窗口里面有一個(gè)工具條,可以通過鼠標(biāo)拖動(dòng)工具條的位置,程序啟動(dòng)后,在不點(diǎn)擊工具條的時(shí)候,鼠標(biāo)是可以穿透的,當(dāng)點(diǎn)擊一次工具條后,在點(diǎn)擊其余透明的地方,就不能穿透了
問題原因分析
通過排查,導(dǎo)致這個(gè)原因是窗口在初始化的時(shí)候設(shè)置了ResizeMode=“NoResize”,通過測(cè)試,設(shè)置為NoResize或者CanMinimize都存在問題
解決辦法
辦法1
取消窗口的ResizeMode設(shè)置或者顯示設(shè)置為:CanResize或者CanResizeWithGrip
辦法1遇到的問題
鼠標(biāo)穿透已經(jīng)沒有問題了 ,但是在拖動(dòng)工具條或者鼠標(biāo)從工具條上經(jīng)過的時(shí)候,控件呈現(xiàn)顯示緩慢或者抖動(dòng)的問題,體驗(yàn)很不好,重新將ResizeMode還原,則沒有這個(gè)問題
辦法2(正確辦法)
窗口在初始化的時(shí)候,不設(shè)置ResizeMode參數(shù),在窗口的Loaded事件里面在設(shè)置ResizeMode:
public partial class MainWindow : Window{public MainWindow(){InitializeComponent();this.ResizeMode = ResizeMode.CanResize;this.Loaded+= OnLoaded;}private void OnLoaded(object sender, RoutedEventArgs e){this.ResizeMode = ResizeMode.NoResize;}}
通過這個(gè)方法設(shè)置后,既能解決鼠標(biāo)穿透問題,也沒有發(fā)現(xiàn)拖動(dòng)問題。
備注:
WPF程序在其它一些設(shè)置也會(huì)導(dǎo)致初始化和Loaded事件呈現(xiàn)出的結(jié)果不一樣,目前我已知的有著2個(gè)屬性:
- TopMost
- ResizeMode
建議:如果需要調(diào)整這些屬性,可以在Loaded事件里面再設(shè)置他們,這樣可以避免一些千奇百怪的問題。
一、窗口最小化或者隱藏后,再顯示后鼠標(biāo)不穿透
問題描述
我有一個(gè)透明窗口,它是一個(gè)全屏置頂窗口,窗口里面有一個(gè)工具條,可以通過鼠標(biāo)拖動(dòng)工具條的位置,程序啟動(dòng)后,正常操作后,窗口穿透狀態(tài)是正確的,但是當(dāng)窗口最小化或者隱藏后,然后再顯示后,出現(xiàn)了鼠標(biāo)不穿透的問題。
問題原因分析
問題發(fā)現(xiàn)在重新顯示窗口后
解決辦法
目前暫時(shí)沒有找到很好的解決這個(gè)問題的辦法,只能采用迂回策略,在需要隱藏或者最小化窗口時(shí),采用隱藏窗口下的控件來處理。