使用c# Windows窗体将类属性绑定到复选框
本文关键字:属性 绑定 复选框 Windows 窗体 使用 | 更新日期: 2023-09-27 18:17:12
我有一个应用程序,允许用户加载由数据点组成的多个文本文件。加载这些文件后,会为每个文件生成一个启用复选框的Node。然后,选择的每个文件都成为"DynoFile"类的实例,所有这些实例都存储在list中。是否有一种方法,我可以绑定节点的复选框到它的"DynoFile"类的特定实例(节点和DynoFile类的实例共享相同的名称)?我之前的方法是遍历所有复选框,并将选中的复选框的名称与列表中DynoFile实例的名称进行比较。我觉得必须有一种方法可以让复选框事件改变相应DynoFile类中的参数。
下面是我到目前为止的代码:
List<DynoFile> AllRuns = new List<DynoFile>();
private void button1_Click(object sender, EventArgs e)
{
TreeNode RunGroup = new TreeNode();
RunGroup.Text = GroupName.Text;
RunGroup.Name = GroupName.Text;
treeView1.Nodes.Add(RunGroup);
OpenFileDialog dlg = new OpenFileDialog();
dlg.Filter = "Text files (*.txt)|*.txt";
dlg.FilterIndex = 0;
dlg.Multiselect = true;
dlg.RestoreDirectory = true;
dlg.Title = "Read .txt Log File";
if (dlg.ShowDialog() == DialogResult.OK)
{
BuildTree(RunGroup,dlg.FileNames);
BuildRuns(GroupName.Text, dlg.FileNames);
}
} // Load the File names into an array
public void BuildTree(TreeNode RunGroup, String[] FileNames)
{
foreach (String file in FileNames)
{
TreeNode run = new TreeNode();
run.Name = Path.GetFileName(file);
run.Text = Path.GetFileName(file);
RunGroup.Nodes.Add(run);
}
} // Parse the array and construct the tree of nodes
public void BuildRuns(String GroupName, String[] FileNames)
{
foreach (String file in FileNames)
{
DynoFile element = new DynoFile(Path.GetFileName(file), GroupName);
AllRuns.Add(element);
}
}
你可以这样做,使用复选框上的"OnDataBinding"方法。在创建复选框时,给它们一个唯一的ID,以便识别它们,以便知道您引用的是哪个节点/DynoFile(如节点位置的ID)。如果你给我比较名字的代码
首先,我将在页面中使用一个中继器来显示复选框,参见这个网站:http://www.sitepoint.com/asp-net-repeater-control/
您的Repeater的源可以是一个Object列表,其中包含节点名和文件名。
<asp:Repeater ID="catlist" runat="server" DataSourceId="ListOfNodeNameAndFile">
<ItemTemplate>
<CheckBox isChecked='<%# Container.NodeName == Container.FileName%>'/>
</ItemTemplate>
</asp:Repeater>