0

我有一个应用程序,其中用户 ID 应该在 Wpf 中的所有表单中都可用。我写了这样的代码

在form1我这样写

 var login =
                    context.Logins.FirstOrDefault(
                        x => x.EmailAddress == email && x.Password == password);
                if (login != null)
                {
                    fp.Show();
                    Application.Current.Properties["UserId"] = login.Id; 
                    Close();
                }

在 form2 中,我应该可以访问用户 ID,所以我编写了这样的代码

 var  userid = (int) Application.Current.Properties["UserId"];
        int id = userid;

我收到系统空引用异常:{“对象引用未设置为对象的实例。”}

任何帮助

4

1 回答 1

0

它在一个简单的配置中对我有用,你的代码中还有我不确定的其他事情。这是我的测试代码,看看你能不能破解它。我使用计时器只是为了验证关闭主窗体并没有终止设置。我不确定您的表单 fp 是否是您调用 form2 的表单,但如果是,您需要在显示之前保存您的设置,而不是像现在这样。

主窗口.xaml.cs

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        Application.Current.Properties["UserId"] = 12;

    }

    private void button1_Click(object sender, RoutedEventArgs e)
    {
        Window1 win1 = new Window1();
        win1.Show();
        Close();
    }
}

窗口1

public partial class Window1 : Window
{
    System.Windows.Threading.DispatcherTimer tmr = new System.Windows.Threading.DispatcherTimer();
    public Window1()
    {
        InitializeComponent();
        tmr.Interval = new TimeSpan(0, 0, 10);
        tmr.Tick += new EventHandler(tmr_Tick);
        tmr.Start();
    }

    void tmr_Tick(object sender, EventArgs e)
    {
        tmr.Stop();
        var userid = (int)Application.Current.Properties["UserId"];
        int id = userid;
        this.Title = Application.Current.Properties["UserId"].ToString();
    }


}
于 2012-12-30T04:06:00.087 回答