确定窗体是否受阻

时间:2010-06-23 20:23:56

标签: c# winforms activation topmost

是否有可能在.Net(或通过pinvoke)确定窗体是否被遮挡视线(即其他窗户已被移动到其上方,因此无法看到)?我正在做的是检查表单是否最小化,然后闪烁任务栏上的窗口(如果是)。但问题是如果它没有最小化,但只是移动到后台,我还想通过闪烁任务栏上的窗口来通知用户。我不想自动将窗口移动到前台(即使没有激活)。我希望他们点击它以最大化和/或显示表单。想法?

以下是一些代码:

                    // See if we already have a conversation going with this person
                    var frm = theApp.GetConversationByUID(fromuid);
                    if (frm == null)
                    {
                        frm = theApp.NewConversation(fromuid, fromname);
                    }
                    else
                    {
                        bool withinView = frm.WindowState != FormWindowState.Minimized;
                        if (withinView)
                        {
                            // Determine if window is just obstructed
                            //TODO
                        }

                        // If the conversation window is not within view, then flash it
                        if (!withinView)
                        {
                            FlashWindow.Flash(frm);
                        }
                    }

1 个答案:

答案 0 :(得分:1)

尝试this code