我有一个应用程序,其中userid应该在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;
我收到系统空引用异常:{“对象引用未设置为对象的实例。”}
任何帮助
答案 0 :(得分:0)
它适用于我的简单配置,你的代码中还有其他一些我不确定的东西。这是我的测试代码,看看你能不能破解它。我使用计时器只是为了验证关闭你的主表单没有杀死设置。我不确定你的表格fp是否是你打电话给form2的表格,但如果是你需要在你展示它之前保存你的设置,而不是像你现在所做的那样。
<强> 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();
}
}
<强>窗口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();
}
}