private void textEdit1_KeyDown(object sender, KeyEventArgs e) { string path = Application.StartupPath + "\\" + this.textEdit2.Text.Trim(); if (e.KeyCode == Keys.Enter) { if (!File.Exists(path)) { XtraMessageBox.Show("未找相应的文件", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } XElement xele = XElement.Load(path); /*var query = from toolbox in xele.Elements() select toolbox; var query1 = from table in query where table.Value.Contains(this.textEdit1.Text.Trim()) || table.Value.Contains(this.textEdit1.Text.Trim()) select table;*/ IEnumerable<XElement> query1 = from table in xele.Nodes().OfType<XElement>() where table.Value.Contains(this.textEdit1.Text.Trim()) select table; using (DataTable dt = new DataTable()) { DataColumn dc = null; DataRow newRow; //dt.Columns.Clear(); //dt.Rows.Clear(); dt.Clear(); foreach (XElement item in query1.Nodes()) { String columns = item.Name.ToString(); if (!dt.Columns.Contains(columns)) { //XAttribute alias = item.Attribute(columns); dc = dt.Columns.Add(columns, Type.GetType("System.String")); } } foreach (XElement item in query1) { newRow = dt.NewRow(); for (int i = 0; i < dt.Columns.Count; i++) { String col = dt.Columns[i].ToString(); newRow[col] = item.Element(col).Value; } dt.Rows.Add(newRow); } this.grvlist.Columns.Clear(); this.grvlist.KeyDown -= grvlist_KeyDown; if (dt.Rows.Count > 0) { gclist.DataSource = dt; this.grvlist.Focus(); this.grvlist.KeyDown += grvlist_KeyDown; } else { gclist.DataSource = null; } } } }