2016-09-07 18 views
1

2つのフォーム間のラベルにxml情報を表示したいが、オブジェクト参照がオブジェクトのインスタンスに設定されていない。私は何時間も探していますが、まだ解決策はありません。LINQ XML別のフォームからコンボボックスの値を取得するC#

cbFromCBTO私は別のに1 FORM1から値を送信する必要が私の2 textboxs FORM2

public partial class FORM1 : Form 
{ 
    public string combofrom 
    { 
     get { return cbFrom.Text; } 
     set { cbFrom.Text = value; } 
    } 

    public string comboto 
    { 
     get { return cbTo.Text; } 
     set { cbTo.Text = value; } 
    } 
    } 

FORM2

事前に
public partial class FORM2 : Form 
{ 
public FORM2() 
    { 
     InitializeComponent(); 
    } 

    private FORM1 = new FORM1(); 

    public FORM1(FORM2 form) 
    { 
     this.form = form; 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     XDocument xmlDoc = XDocument.Load("schedulemanager.xml"); 

     var n = from ep in xmlDoc.Descendants("Aircraft") 
       where ep.Attribute("mdy").Equals(form.combofrom.ToString()) 
       select ep; 

     label8.Text = n.FirstOrDefault().ToString();// ****Object reference  
             //not set to an instance of an object 

    } 

感謝しています!

更新日 最後に解決策が見つかりました。

FORM1

 public void FORM1(object sender, EventArgs e) 
    { 
    FORM2 f2 = new FORM2(this); 
    } 
    /**You don't need any getter or setter 

FORM2

 private FORM2 f2; 
    public frmScheduleResult(frmReservation f) 
    { 
     InitializeComponent(); 
     f2 = f; 

    } 

    var name = xmlDoc.Descendants("Aircraft") 

     .Where(n => n.Attribute("Source").Value == f1.cbFrom.Text) 
     .Select(n => (string)n) 
     .FirstOrDefault();  
     label7.Text = name; 

答えて

0

はこれを試してみてください。

if(form.combofrom!=null) 
{ 

    var n = (from ep in xmlDoc.Descendants("Aircraft") 
        where ep.Attribute("mdy").Equals(form.combofrom.ToString()) 
        select ep).FirstOrDefault(); 

    if(n!=null) 
    { 
    label8.Text = n.FirstOrDefault().ToString(); 
    } 
} 
+0

に「オブジェクト参照 」というオブジェクトのインスタンスが設定されていないというエラーメッセージが表示される – user46000

+0

他のアイデア? – user46000

+0

@Nikos私はコードを更新しました。 –

1

はこれを試してみてください、私はあなたのためにそれが役に立つことを願っています:

String name = xmlDoc.Descendants("Aircraft") 
       .Elements("Name") 
       .Where(n => (string)n.Attribute("mdy") == form.combofrom.ToString()) 
       .Select(n => (string)n) // get element's value 
       .FirstOrDefault();  // select only first value, if any 

label8.Text = name.ToString(); 
+0

ありがとうございます、このコードはうまくいくようですが、ラベルは値を表示する代わりに消えてしまいます!非常にbizzare。ほかに何ができますか? – user46000

+0

@Nikosこのコードを試してみよう –

+0

name.toString()と "オブジェクト参照がオブジェクトのインスタンスに設定されていません"を試しました:/実際に何が間違っているのか分かりません。コードロジックが正しい。 – user46000

関連する問題