-3

エラーメッセージが表示されます

オブジェクトがオブジェクトのインスタンスに設定されていません。

これで、このエラー メッセージは、null の値を保持しているオブジェクトを呼び出していることを意味することがわかりました。これがコードのどこで発生しているかはわかっていると思います。修正方法を知る必要があるだけです。form1( MainBox) のクラス内で、form2( ApplicationProperties) への参照を作成しました。form1 内で、form2 のコンボ ボックスの値を .xml ファイルに書き込もうとしています。これは、エラー メッセージが発生する場所です。

CreateNode(ApplicationPropertiesWindow.Portbx.SelectedItem.ToString(),.........

public partial class MainBox : Form
{
    //Making a refernce of Form2 called 'form2'.
    ApplicationProperties ApplicationPropertiesWindow = new ApplicationProperties();
       public void SaveApplicationProperties()
    {
        try
        {
            //CreateNode(everything being referenced. Put text boxes, and drop down boxes here.
            XmlTextWriter writer = new XmlTextWriter(@"C:\ForteSenderv3.0\Properties.xml", System.Text.Encoding.UTF8);
            writer.WriteStartDocument(true);
            //Making the code indeted by 2 characters.
            writer.Formatting = Formatting.Indented;
            writer.Indentation = 2;
            //Making the start element "Table".
            writer.WriteStartElement("Forte_Data_Gatherer_Application");
            //Calling the rst of the .xml file to write.
            CreateNode(ApplicationPropertiesWindow.Portbx.SelectedItem.ToString(), ApplicationPropertiesWindow.BaudRatebx.SelectedItem.ToString(), ApplicationPropertiesWindow.DataBitsbx.SelectedItem.ToString(), ApplicationPropertiesWindow.Paritybx.SelectedItem.ToString(), ApplicationPropertiesWindow.StopBitsbx.SelectedItem.ToString(), ApplicationPropertiesWindow.Handshakingbx.SelectedItem.ToString(), writer);
            writer.WriteEndElement();
            writer.WriteEndDocument();
            writer.Close();
        }
        catch (Exception ex)
        {
            MessageBox.Show("Writing to .xml file failure: " + ex.Message);
        }
    }//End SaveApplicationProperties().

  } 

form2( ApplicationProperties) で、.xml ファイルに書き込むボタンをクリックしています。

    private void CommPortAcceptbtn_Click(object sender, EventArgs e)
    {
        //Making an instance of MainBox.
        var MainBoxWindow = new MainBox();
        //Need to set text boxes to change the values of the comm port.
        //PropertiesHaveChanged();
        MainBoxWindow.SaveApplicationProperties();
        //Hiding the window, because closing it makes the window unaccessible.
        this.Hide();
        this.Parent = null;
    }

イベント ハンドラーの上部で、最初のフォームの新しいインスタンスを作成しているのでCreateNode、form1 の関数にコールバックできます。

したがって、フォーム間でインスタンスを参照して作成する方法が、null値を与えていると思います。これを修正して値を他のフォームに引き継いで、.xml ファイルに書き込めるようにするにはどうすればよいか考えていました。

4

1 に答える 1