1

下の画像を参照してください - 私のデータベースには、Windows フォームを介して結果を表示することに関心のある 3 つの列があります。この例では、データベースから「スパゲッティ ミートボール」のレシピを選択し、[取得] ボタンをクリックすると、右側に配置した 2 つのテキスト ボックスに材料が入力され、もう 1 つは調理手順が入力されます。 . 当分の間、データを保存した方法は私の問題ではないので無視してください。

質問

私が望む基本的な機能は、ドロップダウンメニューからのユーザー選択に関連する基本的な情報を表示できるという意味で機能していますが、うまくいきません。ただし、ユーザーが取得ボタンをクリックすると、新しいウィンドウがポップアップして、そのレシピのタイトル、写真、材料、および手順が表示されます。さて、私はすでに 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);

        }
    }

[取得] ボタンのコードで 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 に答える