0

私はメインフォーム名 fmMain を持っています

画像

黒いマークは、datagridview へのブラウズ ファイル パスを示しています

赤いマークはdatagridviewへの表示フォームです。

datagridview へのパスを送信しようとしましたが、成功しました。ここにコードがあります

namespace tstIniF
{
    public partial class fmMain : Form
    {
        string ConfigFileName = "app.cfg";

        CFileConfig cFileConfig;

        public fmMain()
        {
            InitializeComponent();
            cFileConfig = new CFileConfig();

        }



        private void btnQuit_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void btnDirectort_Click(object sender, EventArgs e)
        {
            if (dlgFolder.ShowDialog() != DialogResult.OK) return;
            string s = dlgFolder.SelectedPath;
            txtDirectory.Text = s;


            /*p = (string)dgvConfigFile.Rows[idx++].Cells[1].Value; cFileConfig.cfgContourFile = p;
            p = (string)dgvConfigFile.Rows[idx++].Cells[1].Value; cFileConfig.cfgConnectionString = p;*/
        }



        private void btnDirectBase_Click(object sender, EventArgs e)
        {
            if (dlgFile.ShowDialog() != DialogResult.OK) return;
            string s = dlgFile.FileName;
            int idx = 0;
            dgvConfigFile.Rows[idx++].Cells[1].Value = cFileConfig.cfgBaseMapFile = s;
        }

        private void btnDirectCont_Click(object sender, EventArgs e)
        {
            if (dlgFile.ShowDialog() != DialogResult.OK) return;
            string s = dlgFile.FileName;
            int idx = 1;
            dgvConfigFile.Rows[idx++].Cells[1].Value = cFileConfig.cfgContourFile = s;
        }

        private void btnDirectConn_Click(object sender, EventArgs e)
        {
            fConn op = new fConn();

            op.ShowDialog();
        }
}
}

btnDirectConn として赤いマーク i はこのような新しいフォームを表示します

画像2

ここに私のフォームがあります fConn

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace tstIniF
{
    public partial class fConn : Form
    {
        public fConn()
        {
            InitializeComponent();
        }

        private void btnSave_Click(object sender, EventArgs e)
        {
            if (txtServ.Text.Trim() == "" || txtDb.Text.Trim() == "" || txtUid.Text.Trim() == "" || txtPwd.Text.Trim() == "")
            {
                MessageBox.Show("Mohon diisi semua field....");
            }
            else
            {
                //string textAll = this.txtServ.Text + this.txtDb.Text + this.txtUid.Text + this.txtPwd.Text;
                fmMain frm = new fmMain();
                frm._textBox = _textBox1;
                this.Close();
                //Close();
                //frm.Show();
            }
        }

        public string _textBox1
        {
            get { return txtServ.Text + txtDb.Text; }
        }
    }
}

問題は、フォーム fConn で fmMain datagridview にデータを表示する方法です。fConn エントリを入力し、閉じて fmMain に戻るので、結果は次のようになります。

画像3

4

2 に答える 2

1

これを処理するにはデリゲートを使用します。

fConn以下のようにフォームを変更します

public partial class fConn : Form
{
    public SaveDelegate SaveCallback;

    public fConn()
    {
        InitializeComponent();
    }

    public void btnSave_Click(object sender, EventArgs e)
    {
        SaveCallback("set text what you need to send to main form here...");
    }
}

そしてfmMain以下のように

パブリック デリゲート void SaveDelegate(文字列テキスト);

public partial class fmMain
{
    public fmMain()
    {
        InitializeComponent();
    }

    private void btnDirectConn_Click(object sender, EventArgs e)
    {
        fConn op = new fConn();

        op.SaveCallback += new SaveDelegate(this.SavemCallback);
        op.ShowDialog();
    }

    private void SavemCallback(string text)
    {
        // you have text from fConn here ....
    }
于 2013-09-05T03:26:19.207 に答える
0

frmMain で、クラス レベルで fConn フォームを宣言して、フォームが閉じたときに破棄されないようにします。これで、frmMain は fConn のパブリック オブジェクトにアクセスできるようになりました。

fConn で frmMain を再宣言しないでください。_textBox = op._textBox1直後に使用op.ShowDialog();

于 2013-09-05T03:05:15.763 に答える