ホームページ  >  記事  >  バックエンド開発  >  C# TabContralタブに表示フォームをロードした後、一方向のパラメータ転送テストのコード例を実装します(写真)

C# TabContralタブに表示フォームをロードした後、一方向のパラメータ転送テストのコード例を実装します(写真)

黄舟
黄舟オリジナル
2017-03-10 14:18:382321ブラウズ

数日前にインターネットで見つけた情報では、フォーム全体をタブに読み込むことができます(前回の記事を参照)。これは非常に簡単に実装でき、マルチウィンドウ表示もはるかに便利です。

すべてのウィンドウを追加した後、クエリパラメータを渡すなど、メインフォーム上のパラメータをタブに読み込まれたフォームに渡すことができるかどうか疑問に思います。

1. メインフォーム Form1、サブフォーム Form2 の 2 つを作成します

Form1 の textBox1 を public に設定し、textBox1 を直接渡すこともできます。 String

まず、前の記事のコードを使用して、form1 のタブに form2 を追加します。ここでは、generatefm ボタンがクリックされたときに実行されるイベントを設定します

 private void generatefm_Click(object sender, EventArgs e)
        {
            tbMobile = new TabPage("中国");

            tbMobile.Name = "tbmobile";
            tabControl1.Controls.Add(tbMobile);

            Form form2 = new Form2(textBox1);             //传递textBox1过去
  
            // Form2 form = new Form2();  
            form2.TopLevel = false;
            form2.BackColor = Color.White;
            form2.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;

            form2.FormBorderStyle = FormBorderStyle.None;
            form2.Show();
            tbMobile.Controls.Add(form2);

            tabControl1.SelectedIndex = 2;
        }

Form2 のコンストラクターを使用してパラメーターを受け取ります。

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

        public Form2(TextBox ts)
        {
            InitializeComponent();

            textBox2.Text = ts.Text;
        }

}

このように、form2を読み込む際に、form1に入力した内容を直接渡すことができます。 これが初期状態です。入力内容を変更し、読み込み後に form2 の内容を変更する場合は、次の手順に進みます。

      private void button1_Click(object sender, EventArgs e)
        {
            form2.textBox2.Text = textBox1.Text;
        }

        private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
        {
            form2.textBox2.Text = textBox1.Text;          
        }

ここで使用する from2 変数は、form1 の先頭で宣言する必要があります。 タブ内の対応するコードは、単純な変更が必要です。 、Form1 の最終コード:

 public partial class Form1 : Form
    {
        private TabPage tbMobile = null;  
        private TabPage tbUnion = null;

        Form2 form2 = null;        //先在这里声明,便于加载后引用

        public Form1()
        {
            InitializeComponent();
        }


        private void button1_Click(object sender, EventArgs e)
        {
            form2.textBox2.Text = textBox1.Text;            //这里就可以引用了,form2的textBox2必须先设置成public
        }

        private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
        {
            form2.textBox2.Text = textBox1.Text;            //切换选项卡时也获取最新的输入参数
        }

        private void generatefm_Click(object sender, EventArgs e)
        {
            tbMobile = new TabPage("中国");

            tbMobile.Name = "tbmobile";
            tabControl1.Controls.Add(tbMobile);

            form2 = new Form2(textBox1);

            // Form2 form = new Form2();  
            form2.TopLevel = false;
            form2.BackColor = Color.White;
            form2.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;

            form2.FormBorderStyle = FormBorderStyle.None;
            form2.Show();
            tbMobile.Controls.Add(form2);

            tabControl1.SelectedIndex = 2;
        }
    }

この例では、一方向のパラメーター転送のみを実装します。次に、パラメーターを読み込まれたフォームのメイン フォームに渡す必要がある場合はどうすればよいでしょうか。研究を続けて、何か良い方法がないか話し合いましょう。


以上がC# TabContralタブに表示フォームをロードした後、一方向のパラメータ転送テストのコード例を実装します(写真)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。