LINQ XML从另一种形式c#获取组合框值

本文关键字:获取 组合 XML 另一种 LINQ | 更新日期: 2023-09-27 18:05:56

我想在两个表单之间的标签中显示xml信息,但我正在获得"对象引用未设置为对象的实例"。我已经找了好几个小时了,但还没有找到答案。

cbFromcbTo是我需要将它们的值从一个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;

LINQ XML从另一种形式c#获取组合框值

试一下,希望对你有帮助:

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();

try this:

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