加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C#为什么在施法后为null

发布时间:2020-12-15 20:50:11 所属栏目:百科 来源:网络整理
导读:大家好请求帮助我,我很困惑为什么我的代码在转换后为空 这是我的xaml代码 Window.Resources Style x:Key="Menu" TargetType="{x:Type Border}" Setter Property="BorderThickness" Value="0" / Setter Property="Background" Value="Transparent" / Setter P
大家好请求帮助我,我很困惑为什么我的代码在转换后为空
这是我的xaml代码

<Window.Resources>
    <Style x:Key="Menu" TargetType="{x:Type Border}">
        <Setter Property="BorderThickness" Value="0" />
        <Setter Property="Background" Value="Transparent" />
        <Setter Property="Width" Value="25" />
        <EventSetter Event="MouseLeftButtonUp" Handler="Menu_MouseLeftButtonUp" />
    </Style>
</Window.Resources>

<Grid>
    <Border Name="BorderCloseWindow" CornerRadius="0,8,0" 
            Style="{StaticResource Menu}">
        <Image Source="pack://application:,/images/icons/CloseSTD.png" />
    </Border>
</Grid>

而这是处理边界的C#

private void Menu_MouseLeftButtonUp(object sender,RoutedEventArgs e)
{
    Border b = e.Source as Border;
    if (b.Name == "BorderCloseWindow")
    {
        this.Close();
    }
}

如果我在边框中按下鼠标按钮会产生这样的错误
你调用的对象是空的.
发生在

if(b.Name == "BorderCloseWindow")

请帮帮我为什么给null?以及如何修复我的程序,以便运行.

解决方法

看来e.Source不是Border,因此e.Source as Border为null.
源可能是边框内的另一个对象,事件路由到边框.

您可以尝试使用测试e.Source的类型

if (e.Source is Border)
{
}

或者您可以通过转发发件人而不是e.Source来获取您的边框对象.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读