C# 在c中将现有数据集调用到winform中#
这有点奇怪,因为我知道如何修复代码中的问题,但它涉及到更改form.designer中的“请勿更改”代码 我有一个数据集,我想在表单外部创建C# 在c中将现有数据集调用到winform中#,c#,winforms,dataset,C#,Winforms,Dataset,这有点奇怪,因为我知道如何修复代码中的问题,但它涉及到更改form.designer中的“请勿更改”代码 我有一个数据集,我想在表单外部创建 Jewels ds = new LoadDataTable().Load(); 然后,我使用表单设计器生成表单。设置所有数据后,该表为空 这是因为在form.designer中 this.jewels = new JewelsOfExile.Jewels(); 存在 如果我将此代码编辑为 这个。珠宝=ds 它修复了它并使用了我现有的数据集。太好了 但这
Jewels ds = new LoadDataTable().Load();
然后,我使用表单设计器生成表单。设置所有数据后,该表为空
这是因为在form.designer中
this.jewels = new JewelsOfExile.Jewels();
存在
如果我将此代码编辑为
这个。珠宝=ds
它修复了它并使用了我现有的数据集。太好了
但这会让设计师大吃一惊,破坏工具。如果我对工具进行任何更改,它将恢复我的更改并生成新变量(1)
如何在不手动更改设计器的情况下加载数据集
下面是完整的代码片段
using System;
using System.Windows.Forms;
using JewelsOfExile.Tables;
namespace JewelsOfExile
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Jewels ds = new LoadDataTable().Load();
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1(ds));
}
}
}
using System.Windows.Forms;
namespace JewelsOfExile
{
public partial class Form1 : Form
{
public Form1(Jewels ds)
{
InitializeComponent(ds);
}
}
}
多亏了阿切尔 在表单中添加了一个onload事件,并删除了main中的创建
private void Form1_Load(object sender, System.EventArgs e)
{
Jewels jewels = new LoadDataTable().Load();
affixesBindingSource.DataSource = jewels;
}
多亏了阿切尔 在表单中添加了一个onload事件,并删除了加载事件的main创建
private void Form1_Load(object sender, System.EventArgs e)
{
Jewels jewels = new LoadDataTable().Load();
affixesBindingSource.DataSource = jewels;
}
为什么不干脆把
Jewels ds=new-LoadDataTable().Load()放进去呢在InitializeComponent()
中的code>(或者在表单加载事件中,就像它应该是的那样)?您是否使其变得比需要的复杂得多?好的-在设计器中打开表单(可视化,而不是代码),然后单击它,以便在“属性”窗口中选择表单本身。在该窗口的顶部有一个按钮,看起来像一个闪电-单击该按钮。然后向下查看列表并找到“加载”。双击该列旁边的右列,将为load事件创建一个空事件处理程序,并在代码中显示它。将用于加载数据集的所有代码都放在该函数中。它将在加载表单时执行。然后删除之前添加的所有其他数据加载代码。否-如果它有效,则它将显示在您正在显示的任何内容中。这里有太多的未知数,我无法有效地提供帮助,但您最好删除以前加载数据时使用的所有代码(在Main和InitializeComponent中),并让它在表单加载事件处理程序中工作。没有理由认为它在那里不起作用,所以是其他原因造成了问题。完成所有这些之后,在加载数据的行上放置一个断点,运行应用程序并检查它是否正确加载。在这种情况下,绑定就是问题所在。你应该可以直接说dataGridView1.DataSource={a related data source}
,然后它就可以工作了。试着养成习惯,缩小代码片段的实际职责范围。例如,Main()。如果Form1(或其名称)需要创建另一个同样需要数据集的表单,那么您可以始终向另一个表单添加构造函数,该表单将数据集作为参数,就像您最初使用主表单时一样。很多好的编程都是处理看似不重要的事情,但经过一定的时间,这些事情就会变得清晰而有价值。
private void Form1_Load(object sender, System.EventArgs e)
{
Jewels jewels = new LoadDataTable().Load();
affixesBindingSource.DataSource = jewels;
}