这有点奇怪,因为我知道如何解决代码中的问题,但它涉及改变"不要改变" form.designer中的代码
我想在表单外创建一个数据集。
Jewels ds = new LoadDataTable().Load();
然后我使用表单设计器制作表单。设置完所有数据后,表格为空。
这是因为在form.designer中的行
this.jewels = new JewelsOfExile.Jewels();
存在,
如果我编辑此代码 this.jewels = ds;
它修复了它并使用我现有的数据集。大!!
但这与设计师混淆并打破了工具。如果我对工具进行任何更改,它将恢复我的更改并生成新变量(jewels1)
如何在不手动更改设计器的情况下加载数据集。
下面的完整代码段
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);
}
}
}
和我不应编辑的代码
private void InitializeComponent(Jewels ds)
{
this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1));
this.jewels = ds;
this.affixesBindingSource = new System.Windows.Forms.BindingSource(this.components);
etc.....
}
感谢Archer,
在表单中添加了一个onload事件,并在main中删除了创建。
private void Form1_Load(object sender, System.EventArgs e)
{
Jewels jewels = new LoadDataTable().Load();
affixesBindingSource.DataSource = jewels;
}
答案 0 :(得分:1)
感谢Archer,
在表单中添加了一个onload事件,并将main中的创建删除到了load事件。
private void Form1_Load(object sender, System.EventArgs e)
{
Jewels jewels = new LoadDataTable().Load();
affixesBindingSource.DataSource = jewels;
}