我有2种形式:


Form1包含DataGridView控件
Form2包含Textbox控件(处于只读模式),复选框和按钮。


当我选择DataGridView行时,它将显示Form2并在TextBoxes中显示其值。刚才一切似乎都变好了。
我想知道的是在文本框中显示数据之后,我检查RadioButton,然后单击该按钮,它将返回到所选行的Form1,并自动更改单元格4的值。

这是我的代码:

表格1

private void dataGridView1_RowHeaderMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)
   {
       DataGridViewCell cell = null;
       foreach (DataGridViewCell selectedCell in dataGridView1.SelectedCells)
       {
           cell = selectedCell;
           break;
       }
       if (cell != null)
       {
           DataGridViewRow row = cell.OwningRow;
           string objet = row.Cells[0].Value.ToString();
           string objectif = row.Cells[1].Value.ToString();
           string date = row.Cells[2].Value.ToString();
           string commentaire = row.Cells[3].Value.ToString();
           string client = row.Cells[5].Value.ToString();
           string commercial = row.Cells[6].Value.ToString();

           Détails_RDV détails = new Détails_RDV();

           détails.obj = objet;
           détails.objectif = objectif;
           détails.date = date;
           détails.comm = commentaire;
           détails.clt = client;
           détails.commer = commercial;

           détails.Show();

       }
   }


表格2

public partial class Détails_RDV : Form
{
    public string obj ;
    public string objectif;
    public string date;
    public string comm;
    public string clt ;
    public string commer;

    public Détails_RDV()
    {
        InitializeComponent();

    }

    private void Détails_RDV_Load(object sender, EventArgs e)
    {

        txtObjet.Text = obj;
        txtObjectif.Text = objectif;
        txtDate.Text = date;
        txtCommerci.Text = commer;
        txtClient.Text = clt;
        txtCommentaire.Text = comm;
    }

    private void btnValider_Click(object sender, EventArgs e)
    {
        if (checkEffectue.Checked == true)
        {
           //What should I write here??
             Liste_RDV lrdv = new Liste_RDV();
             lrdv.Show();

        }
    }


我怎样才能做到这一点 ?

最佳答案

Form2的按钮单击事件中,检查是否已选中该复选框,只需将DialogResult设置为OK,否则将其设置为Cancel

if (checkBox1.Checked)
    this.DialogResult = System.Windows.Forms.DialogResult.OK;
else
    this.DialogResult = System.Windows.Forms.DialogResult.Cancel;


Form1中,使用Show而不是ShowDialog并检查结果是否为OK,然后执行所需的更新:

var f2 = new Form2();
//Set values
if(f2.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
    //Perform update here
}


这样,每种形式都有自己的责任,您可以在Form1中编写与Form1相关的代码,而无需在Form2中编写它们。

关于c# - 从其他形式更改DataGridView单元格的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38011808/

10-13 00:55