2016-09-07 5 views
1

Я хочу отобразить информацию xml в метке между двумя формами, но я получаю «Ссылка на объект не установлена ​​в экземпляр объекта». Я искал часы, но решения пока нет.LINQ XML Получение значения combobox из другой формы C#

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; } 
    } 
    } 

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

@ Никос обновленный код. –

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