在c#中将现有DataSet调用为winform

时间:2017-12-15 12:33:24

标签: c# winforms dataset

这有点奇怪,因为我知道如何解决代码中的问题,但它涉及改变"不要改变" 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;
    }

1 个答案:

答案 0 :(得分:1)

感谢Archer,

在表单中添加了一个onload事件,并将main中的创建删除到了load事件。

    private void Form1_Load(object sender, System.EventArgs e)
{
    Jewels jewels = new LoadDataTable().Load();
    affixesBindingSource.DataSource = jewels;
}