2016-09-07 77 views
1

我想在兩個窗體之間的標籤中顯示xml信息,但我得到「未將對象引用設置爲對象實例」。我一直在尋找幾個小時,但沒有解決方案。LINQ XML從另一個表單獲取組合框值#

cbFromcbTo是我的兩個textboxs,我需要從一個FORM1發送他們的價值觀到另一個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 

    } 

謝謝!

UPDATE 最後我找到了一個解決方案。

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

謝謝,這段代碼似乎可行,但標籤消失而不是顯示價值!非常棒。我還可以做些什麼?? – user46000

+0

@Nikos現在試試這個代碼 –

+0

我試過name.toString()和「對象引用未設置爲對象的實例出現」:/我真的不明白什麼是錯的。代碼邏輯是正確的。 – user46000