1

见下图 - 在我的数据库中,我有 3 列我有兴趣通过我的 windows 窗体显示结果。在这个例子中,我从数据库中选择了“Spaghetti Meatballs”食谱并点击了 Retrieve 按钮,然后会出现我放置在右侧的两个文本框,一个带有配料,一个带有烹饪步骤. 请暂时忽略我存储数据的方法,因为这不是我当前的问题。

问题

我想要的基本功能是在某种意义上工作,即我可以从下拉菜单中显示与用户选择相关的基本信息,尽管不是很好。然而,我想要的是当用户单击检索按钮时,将弹出一个新窗口并显示该食谱的标题、图片、成分和步骤。现在,我已经在名为 Pop_up.cs 的项目中添加了一个新表单,但是我不确定如何更改“检索”方法以首先显示该表单,然后填充我将放置的文本框/图片框使用 form1 中用户指定的数据并从我的数据库中检索的表单。

检索方法

   //R E T R I E V E     B U T T O N 
        private void button3_Click(object sender, EventArgs e)
        {

            DataTable dataTable = dset.Tables[0];

            if (pictureBox2.Image != null)
            {
                pictureBox2.Image.Dispose();
            }

            FileStream FS1 = new FileStream("image.jpg", FileMode.Create);

            foreach (DataRow dataRow in dataTable.Rows)
            {

                if (dataRow[0].ToString() == comboBox1.SelectedItem.ToString())
                {

                    byte[] blob = (byte[])dataRow[1];
                    FS1.Write(blob, 0, blob.Length);
                    FS1.Close();
                    FS1 = null;
                    label5.Text = dataRow[3].ToString();
                    label6.Text = dataRow[2].ToString();
                    pictureBox2.Image = Image.FromFile("image.jpg");
                    pictureBox2.SizeMode = PictureBoxSizeMode.StretchImage;
                    pictureBox2.Refresh();
                }
            }
        }

在此处输入图像描述

4

2 回答 2

2

修改 Pop_up 类的构造函数以获取参数。并编写一个 FillData() 方法从数据库中加载配方数据

public partial class Pop_up : Form
    {
        public Pop_up(string recipe)
        {
            InitializeComponent();
            FillData(recipe);

        }
    }

在 Retrive 按钮的代码中显示 Pop_up 。将收据名称作为参数传递

 //R E T R I E V E     B U T T O N 
    private void button3_Click(object sender, EventArgs e)
    {
      string recipeName = comboBox1.SelectedItem.ToString();
      Pop_up p = new Pop_up(recipeName);
      p.Show();
    }
于 2013-11-09T13:36:00.713 回答
1

假设 Pop_up.cs 有以下控件

PictureBox pictureBox;
Label labelIngredients;
Label labelCookSteps;

那么 Pop_up.cs 可能看起来像:

public partial class Pop_up : Form
{
    public Pop_up()
    {
        InitializeComponent();        
    }

    public Pop_up(string recipeName, DataSet dset)
    {
        InitializeComponent();
        BindDataContext(recipeName, dset);

    }

    private void BindDataContext(string recipeName, DataSet dset)
    {
        DataTable dataTable = dset.Tables[0];

        if (pictureBox.Image != null)
        {
            pictureBox.Image.Dispose();
        }

        FileStream FS1 = new FileStream("image.jpg", FileMode.Create);

        foreach (DataRow dataRow in dataTable.Rows)
        {

            if (dataRow[0].ToString() == recipeName)
            {
                byte[] blob = (byte[])dataRow[1];
                FS1.Write(blob, 0, blob.Length);
                FS1.Close();
                FS1 = null;
                labelIngredients.Text = dataRow[3].ToString();
                labelCookSteps.Text = dataRow[2].ToString();
                pictureBox.Image = Image.FromFile("image.jpg");
                pictureBox.SizeMode = PictureBoxSizeMode.StretchImage;
                pictureBox.Refresh();
            }
        }
    } 
}

然后 Form1.cs 中的检索按钮可能如下所示:

public partial class Form1 : Form
{
    //R E T R I E V E     B U T T O N 
    private void button3_Click(object sender, EventArgs e)
    {
      string recipeName = comboBox1.SelectedItem.ToString();
      Pop_up p = new Pop_up(recipeName, dset);
      p.Show();
    }
}
于 2013-11-11T12:20:46.017 回答