C#WinForm中listBox1控件在Form17中,而原TableLayoutPanel1控件在Form15中,通过双击Form17中listBox1控件中XML文件名,会自动打开Form15窗口,并将XML 文件中保存的数据填充到Form15的 TableLayoutPanel1 控件中,包括 TableLayoutPanel1 单元格中的 TextBox 控件和 Panel 控件内的 TextBox 控件。
时间: 2024-03-09 10:48:29 浏览: 84
这是一个描述性的问题,我可以给您一些指导。首先,您需要在Form17中的listBox1控件的DoubleClick事件中编写代码,以便在双击XML文件名时打开Form15窗口。您可以使用以下代码:
```
private void listBox1_DoubleClick(object sender, EventArgs e)
{
//获取所选XML文件名
string fileName = listBox1.SelectedItem.ToString();
//打开Form15窗口
Form15 form15 = new Form15(fileName);
form15.ShowDialog();
}
```
在这个示例中,我们创建了一个名为`fileName`的字符串变量,以获取所选XML文件名。然后,我们创建了一个新的Form15窗口,并将所选文件名作为参数传递给构造函数。最后,我们使用`ShowDialog()`方法打开这个窗口。
在Form15窗口中,您可以使用以下代码来读取XML文件并将数据填充到TableLayoutPanel1控件中的TextBox控件和Panel控件内的TextBox控件中:
```
public Form15(string fileName)
{
InitializeComponent();
//读取XML文件
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(fileName);
//获取TableLayoutPanel1中的所有控件
Control[] controls = tableLayoutPanel1.Controls.Find("", true);
//遍历所有控件,将XML文件中的数据填充到相应的控件中
foreach (Control control in controls)
{
if (control is TextBox)
{
//如果控件是TextBox,则从XML文件中读取数据并填充到控件中
string value = xmlDoc.SelectSingleNode("//" + control.Name).InnerText;
control.Text = value;
}
else if (control is Panel)
{
//如果控件是Panel,则遍历Panel中的所有控件,并将XML文件中的数据填充到相应的控件中
Control[] subControls = control.Controls.Find("", true);
foreach (Control subControl in subControls)
{
if (subControl is TextBox)
{
//如果控件是TextBox,则从XML文件中读取数据并填充到控件中
string value = xmlDoc.SelectSingleNode("//" + subControl.Name).InnerText;
subControl.Text = value;
}
}
}
}
}
```
在这个示例中,我们首先使用`XmlDocument`类读取XML文件的内容。然后,我们使用`TableLayoutPanel1.Controls.Find()`方法获取TableLayoutPanel1中的所有控件,并遍历它们。对于每个控件,我们检查它是一个TextBox还是一个Panel。如果是一个TextBox,我们使用`XmlDocument.SelectSingleNode()`方法从XML文件中读取数据,并将其填充到控件中。如果是一个Panel,我们使用相同的方法遍历Panel中的所有控件,并将XML文件中的数据填充到相应的控件中。
希望这些代码可以帮助您实现您的需求。
阅读全文