LINQ XML Получаване на стойност от падащ списък от друга форма c#

Искам да покажа xml информация в етикет между два формуляра, но получавам „Препратката към обект не е зададена на екземпляр на обект“. Търся с часове, но все още няма решение.

cbFrom и cbTo са моите две текстови полета, които трябва да изпратя стойностите си от един 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; }
    }
  }

ФОРМУЛЯР2

   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

    }

Благодаря предварително!

АКТУАЛИЗАЦИЯ Най-накрая намерих решение.

ФОРМУЛЯР1

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

ФОРМУЛЯР2

     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;

person user46000    schedule 07.09.2016    source източник


Отговори (2)


Опитайте това, надявам се, че ще ви бъде полезно:

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();
person Subash B    schedule 07.09.2016
comment
Благодаря ви, този код изглежда работи, но етикетът изчезва, вместо да показва стойността! Много странно. Какво друго мога да направя?? - person user46000; 07.09.2016
comment
Опитах name.toString() и Object reference not set to an instance of an object show up :/ Наистина не мога да разбера какво не е наред. Логиката на кода е правилна. - person user46000; 07.09.2016
comment
@Nikos Супер :))) - person Subash B; 08.09.2016

Опитайте тази:

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();
    }
}
person Ganesh_Devlekar    schedule 07.09.2016
comment
все още има съобщение за грешка Препратката към обект не е зададена на екземпляр на обект...но защо?? - person user46000; 07.09.2016
comment
Благодаря за отговора, но актуализираният код не промени нищо. Сега се опитвам по друг начин да предавам стойности между формуляри. Мисля, че form.combofrom винаги е нула - person user46000; 08.09.2016
comment
Благодаря на всички за отговорите, намирам го. наздраве! - person user46000; 08.09.2016