分享

WPF中焦点的问题

 louisasea 2008-12-15
WPF中焦点的问题

在WPF中用Popup来做窗口,但是在切换窗口的时候窗口不能失去焦点,所有的窗口都显示是得到了焦点,但焦点却在系统其他窗口之上
比如我打开两个自己的窗口,当其中一个前端显示时,它调用了GotFocus,但另一个窗口并没有LostFocus。。。这有可能是什么原因造成的呢?望了解的人给予回答!


只看该作者    顶部
离线 juanpeng
中级会员



精华贴数 0
个人空间 0
技术积分 5634 (245)
社区积分 0 (1445858)
注册日期 2007-6-21
论坛徽章:27
开发板块每日发贴之星 开发板块每日发贴之星 开发板块每日发贴之星 生肖徽章2007版:鼠 生肖徽章2007版:鼠 生肖徽章2007版:鼠
生肖徽章2007版:鼠 生肖徽章2007版:鼠 生肖徽章2007版:鼠 生肖徽章2007版:鼠 生肖徽章2007版:鼠 生肖徽章2007版:鼠
发表于 2008-7-4 19:52 
在WPF中,Popup Control是一个不可见的Block,它的PopupRoot才是在你的屏幕内显现的

Popup的Child Window是异步操作的,所以它有一个独立的Open和Close。如果你要设置Popup的Focus,请在Open里面设置,设置其内部内容的Focus,Popup的GotFocus会响应

Give u a sample

XAML code
<StackPanel>
    <Button Click="Button_Click_1"/>
    <TextBlock>
        <StackPanel>
            <TextBlock Text="123"/>
            <Popup Name="pop1">
                <StackPanel>
                    <TextBox Name="txtBox" Text="456" Background="Yellow"/>
                </StackPanel>
            </Popup>
        </StackPanel>
    </TextBlock>
</StackPanel>





C# code
public Window1()
{
    InitializeComponent();
    pop1.Opened += new EventHandler(pop1_Opened);
    pop1.GotFocus +=new RoutedEventHandler(pop1_GotFocus);
}

void pop1_Opened(object sender, EventArgs e)
{
    Popup p = (Popup)sender;
    StackPanel panel = p.Child as StackPanel;
    TextBox tb = (TextBox)panel.FindName("txtBox");
    tb.Focus();
}

void pop1_GotFocus(object sender, RoutedEventArgs e)
{
    //GotFocus when tb.Focus();
}


private void Button_Click_1(object sender, RoutedEventArgs e)
{
    pop1.IsOpen = true;
    bool bRet = pop1.Focus();  // Return false, u can't directly set focus to Popup
}




Hope this helps

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多