0

Wpf のすべてのフォームでユーザー ID を使用できるアプリケーションがあります。私はこのようなコードを書きました

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;

システム null 参照例外が発生しています:{"オブジェクト参照がオブジェクトのインスタンスに設定されていません。"}

どんな助けでも

4

1 に答える 1

0

それは単純な構成で私のために働きます、私が確信していない何か他のものがあなたのコードで起こっています。これは私のテストコードです、あなたがそれを破ることができるかどうか見てください。メインフォームを閉じても設定が無効にならないことを確認するために、タイマーを使用しました。フォームfpがform2と呼んでいるフォームであるかどうかはわかりませんが、フォームfpの場合は、現在のように表示した後ではなく、表示する前に設定を保存する必要があります。

MainWindow.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();
    }
}

Window1

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 に答える