我在主wpf窗口中有这段代码:
private void ButtonChangePermissions_Click(object sender, RoutedEventArgs e)
{
if (ComboBoxSelectedProfile.SelectedIndex != -1)
{
ChangePermissionsWindow cpWindow = new ChangePermissionsWindow { parent = this };
cpWindow.Show();
}
else
{
MessageBox.Show("Please choose a profile first.");
}
}
这是子wpf窗口代码:
public partial class ChangePermissionsWindow : Window
{
private readonly string dbConnectionString = Properties.Settings.Default.dbConnectionString;
public postLoginWindow parent { get; set; }
public ChangePermissionsWindow()
{
InitializeComponent();
ComboBoxValuesToShow();
}
private void ComboBoxValuesToShow()
{
using (SqlConnection connection = new SqlConnection(dbConnectionString))
{
try
{
connection.Open();
if (TableFunctions.doesTableExist("ProfilePermissions", dbConnectionString))
{
string selectQuery = "SELECT Permissions from ProfilePermissions where ProfileName = @ProfileName";
using (SqlCommand command = new SqlCommand(selectQuery, connection))
{
command.Parameters.AddWithValue("@ProfileName", parent.ComboBoxSelectedProfile.Text);//This line produces the Null reference error
...Does not matter from here
}
由于某种原因,该行:
command.Parameters.AddWithValue("@ProfileName", parent.ComboBoxSelectedProfile.Text)
会导致NullReferenceException
。
这是例外文件:
System.NullReferenceException:未将对象引用设置为实例 一个物体 在WpfApplication1.Windows.ChangePermissionsWindow.ComboBoxValuesToShow() 在c:\ Users \ Censored \ Documents \ Visual Studio中 2013 \ Projects \ WpfApplication1 \ WpfApplication1 \ Windows \ WindowChangePermissions.xaml.cs:第38行}
System.Exception {System.NullReferenceException
非常感谢你的帮助!
答案 0 :(得分:1)
在非常高级别使用Object初始化语法遵循以下步骤...
ComboBoxValuesToShow ,但基于列出的步骤, parent 属性(在方法中使用)直到构造函数返回后才会设置,因为在创建实例之后才会调用属性setter。因此,在这种情况下,parent属性将始终为null。
有几种方法可以解决这个问题......
或者