LINQ XML Получение значения поля со списком из другой формы С#

Я хочу отобразить информацию 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() и появилась ссылка на объект, не установленная на экземпляр объекта: / Я действительно не могу понять, что не так. Логика кода правильная. - person user46000; 07.09.2016
comment
@Никос Супер :))) - 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