#c# #visual-studio #winforms
#c# #visual-studio #winforms
Вопрос:
У меня есть две Winforms, где форма 1 используется для ввода данных из первых семи полей, а другие формы используются для ввода для последних трех полей, где у меня есть таблица, хранящаяся на SQL Server, но проблема в том, что всякий раз, когда я пытался сохранить данные во вторых формах, они сохраняются в самой первой строке вместостроки, в которой обновляется первая форма. Может кто-нибудь, пожалуйста, помогите, как связать эти две формы и сохранить их в одной строке?
Это код для сохранения данных во второй форме, и скриншоты прилагаются:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace Windows
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnInsert_Click(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection(cs);
SqlCommand cmd;
con.Open();
string s="insert into Student values(@p1,@p2,@p3)";
cmd = new SqlCommand(s,con);
cmd.Parameters.AddWithValue("@p1",rejectReason1ComboBox.Text);
cmd.Parameters.AddWithValue("@p2",rejectReason2ComboBox.Text);
cmd.Parameters.AddWithValue("@p3",rejectReason3ComboBox.Text);
cmd.CommandType = CommandType.Text;
int i = cmd.ExecuteNonQuery();
con.Close();
MessageBox.Show(i " Row(s) Inserted ");
}
}
}
Комментарии:
1. Вы просто хотите получить входные данные из дочерней формы обратно в родительскую форму?
2. ДА.. Я имею в виду, что я хочу, чтобы данные дочерней формы также сохранялись в источнике данных родительской формы (обе формы имеют источник данных одной таблицы)
Ответ №1:
Вы можете добавить общедоступные свойства в свой ChildForm
подобный:
public string Reason1 {get; set;}
public string Reason2 {get; set;}
private void Combobox1_SelectedIndexChanged(object sender, EventArgs e)
{
Reason1 = (sender as ComboBox).SelectedItem.ToString();
}
private void ButtonOK_Click(object sender, EventArgs e)
{
(sender as Button).DialogResult = DialogResult.OK;
// Or you can set this DialogResult property from Button's property window
}
А затем в ParentForm
, используйте ChildForm
, как это
private void ButtonOpenChildForm_Click(object sender, EventArgs e)
{
using (ChildForm form = new ChildForm())
{
if (form.ShowDialog() == DialogResult.OK)
{
// Receive the Reasons here in any variable
string reason1 = form.Reason1;
string reason2 = form.Reason2;
}
}
}