0

わかりましたので、1 つのフォームに 6 つの変数があり、ボタンを介してさまざまなメソッドが呼び出されるとすべてが変化します。

別の形式では、6 つの対応するラベルがあります。SomeLabel.text最初のフォームのボタンが押されたときに、最初のフォームから変数を取得し、2 番目のフォームに設定したいと考えています。

私はこの方法でこれをやろうとしてきましたが、うまくいきName=Mainform.InitializeComponent.SomeLabel.Text;ません。InitializeComponentメソッドが非公開であることは知っています。私はそれをパブリックに変更しようとしましたが、それも実りがありませんでした(コーディングも良くありません)。それで、私はこれをどのように行うかを尋ねるためにここに来ました。get と set のセットアップを使用することを考えていましたが、最初のフォームからまだラベルにアクセスできません。何も壊れておらず、必要なすべての部分が投稿にあるため、コードは含めませんでした。

4

4 に答える 4

1

public/internal Method「パブリック/内部プロパティ」を使用または使用して変数を共有できます

using System;
using System.Windows.Forms;

namespace WindowsFormsApplication2
{
    public partial class Form1 : Form
    {
        Form2 frm = new Form2();
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            frm.Show();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            frm.SetTextLabel1("Hello world");
            //or
            frm.Label1Text = "HEllo world again";
        }
    }
}


using System.Windows.Forms;

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

        //using method to set the value of label
        public void SetTextLabel1(string value)
        {

            label1.Text = value;
        }

        //using property to set the value of label
        public string Label1Text
        {
            set { label1.Text = value; }
        }
    }
}
于 2013-09-04T03:49:15.727 に答える
0

さて、すでに提供されている手っ取り早い方法があります。または、この共通データを保持するクラスを作成し、form2 がサブスクライブし、データを読み取り、ラベルを更新するイベントを発生させる form1 のボタンから呼び出すメソッドを追加します。どちらも中間クラスについて知っていますが、どちらも他方について何も知る必要はありません。

于 2013-09-04T03:55:23.880 に答える
0

form2 では、これら 6 つの変数を Public static として使用しないでください。

public partial class Form1 : Form
{        
    private void button1_Click(object sender, EventArgs e)
    {
        Form2.VariableLable1 = "a";
        Form2.VariableLable2 = "b";
    }
}

public partial class Form2 : Form
{  
    public static string VariableLable1,VariableLable2;
    private void form_load(object sender, EventArgs e)
    {
        Lable1.Text = VariableLable1;
        Lable1.Text = VariableLable2;
    }
}
于 2013-09-04T04:59:45.883 に答える