事先道歉,我可能很难说清楚自己。我已经进行了搜索,但是要进行的讨论非常复杂,因此我刚开始使用C#。
项目:C#WindowsForm / .NET 4.5 / Visual Studio 2012
挑战:我想将一个列表框中的项目添加到另一个列表框中(我可以使用Lists和foreach循环轻松地做到这一点),并根据listbox2中所做的选择使最终列表框显示特定的项目。
说明:所选项目将合并在另一个列表框中创建的组,以便在列表框1中选择少数项目时,将它们发送到列表框3,但是只有在列表框2中选择特定项目时,它们才会出现。
想象一下从一个列表中选择游戏,并将其添加到新列表的“ Nintendo”组中,这样当在listbox2中选择Sega时,它们不会与Sega混合在一起。
我可以在所有列表框中添加值,将所需的值从1复制到3,但是我对如何使选择尊重2上的选择感到困惑。
我已经阅读了有关数据绑定等内容,但是示例给出的示例太复杂了(也许存在一些语言障碍),是否有资源可以为一个非常小的项目提供最简单的解决方案?
愿意用外行术语开导一个傻瓜吗?
谢谢
编辑:你们真好(无论您是谁)否决我的问题。很公平。您至少可以告诉我问题出在哪里,或在哪里回答了问题,以便我可以解决我的问题。那不是很好吗?我是C#的入门者,因此第一个问题似乎很荒谬/懒惰是很自然的。
DataBinding将是必经之路。要关注的主要组件是BindingSource。您还可以研究基础数据的数据集,因为它们可以为您提供一些过滤的灵活性。但是,如果这是一个小型应用程序,并且您只是在学习,那么以下示例可能是一个好的开始:
将BindingSource
每个列表框的拖到表单上。然后,将ListBox的每个DataSource
属性连接到相应的BindingSource
。
下面是一个示例代码,显示了如何将基础数据绑定到每个BindingSources
已经绑定到列表框的数据:
namespace WindowsFormsApplication1
{
public class Game
{
public string Name { get; set; }
public string Group { get; set; }
}
public class Group
{
public string Description { get; set; }
}
public partial class Form1 : Form
{
List<Game> _allGames;
public Form1()
{
InitializeComponent();
_allGames = new List<Game>
{
new Game { Name = "Alpha", Group = "" },
new Game { Name = "Bravo", Group = "One" },
new Game { Name = "Charlie" , Group = "One"},
new Game { Name = "Delta", Group = "Two" }
};
bindingSource1.DataSource = _allGames;
listBox1.DisplayMember = "Name";
listBox1.ValueMember = "Name";
var groups = new List<Group>
{
new Group { Description = "One" },
new Group { Description = "Two" },
new Group { Description = "Three" }
};
bindingSource2.DataSource = groups;
listBox2.DisplayMember = "Description";
listBox2.ValueMember = "Description";
}
private void listBox2_SelectedIndexChanged(object sender, EventArgs e)
{
var group = listBox2.SelectedValue.ToString();
bindingSource3.DataSource = _allGames.Where(x => x.Group == group);
listBox3.DisplayMember = "Name";
}
}
}
这些代码所做的全部工作就是将数据绑定到BindingSource,并告诉每个ListBox要显示基础数据的哪个属性。此示例忽略了将listBox1中的每个项目分配给listBox2中的组的机制,因为我假设您知道该怎么做或可以弄清楚。
listBox2更改时的事件处理程序仅获取做出的选择,并从listBox1创建与该项目匹配的项目列表,然后在listBox3中显示这些项目。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句