1

こんにちは、フォーム 1 に datagridview があり、フォーム 1 を介してフォーム 2 を開き、フォーム 2 を介してフォーム 3 を開き、フォーム 1 にstring named vyber_ID_K配置すると、フォーム 3 でアクセスする必要があります (フォーム 3 で値を取得する必要があります)。

これはform1のボタンクリック時に配置されます

 form2 a = new form2 ("Novy");
        string vyber_IDK = (string)dataGridView1.CurrentRow.Cells["ID_K"].Value.ToString();
        a.vyber_ID_K = vyber_IDK;
        a.Show();
        a.Closed += klient_Closed;

にアクセスしたいのですがvyber_ID_K in form 3、どうすればよいですか? 設定してみましたpublic string vyber_ID_K in form2 and pass it similary to form3 but I get null。私はそれを正しくやっていますか?他に良い解決策はありますか?

前もって感謝します。

Servyによると、私のステップバイステップ:

  1. フォーム1のボタンクリック

    Func vyberIDKGetter = () => dataGridView1.CurrentRow.Cells["ID_K"].Value.ToString();

        try
        {
        form2 = new form2 ("Novy");
    
        a.vyberIDKGetter = () => dataGridView1.CurrentRow.Cells["ID_K"].Value.ToString();
        a.Show();
    

    }

  2. form2のボタンクリック

    public Func vyberIDKGetter; private void button1_Click(オブジェクト送信者, EventArgs e) { nova_platba b = new nova_platba("novy"); b.vyberIDKGetter(); b.Show(); b.Closed += klient_Closed; }

  3. フォーム3で

    Func<string> vyberIDKGetter = veberIDK;
    
    
       string vyberIDK = vyberIDKGetter();
             SqlCommand sc = new SqlCommand(@"
                INSERT INTO kliplat (datum,text,castka,akce,subkey,priznak,rocnik) 
                VALUES (@datum,@text,@castka,@akce,@subkey,@priznak,@rocnik);
                SELECT scope_identity();
                ", spojeni);
    
    
         sc.Parameters.AddWithValue("@subkey", vyberIDK);
    
4

3 に答える 3

0

コンストラクターを介してパラメーターを渡すのは本当に奇妙です

form2 a = new form2 ("Novy");

同時に、プロパティを介して別のパラメーターを渡します

a.vyber_ID_K = vyber_IDK;

代わりに、コンストラクターを介してすべてのパラメーターを渡してみませんか?

string vyber_IDK = (string)dataGridView1.CurrentRow.Cells["ID_K"].Value.ToString();
form2 a = new form2 ("Novy", vyber_IDK);

そしてForm2で

public class form2 
{
  private string Name { get; set; }
  private int vyber_IDK { get; set; }

  public form2( string Name, int vyber )
  {
     this.Name = Name;
     this.vyber_IDK = vyber_IDK;
  }

次に、form3fromに何かを渡すform2と、同じように機能します

form3 f = new form3( this.vyber_IDK );
于 2013-08-26T19:14:43.140 に答える
0

文字列の周りに公開ゲッター/セッターを作成する必要があります。

public string Vyber_ID_K 
get
{
    return vyber_ID_K;
}
set
{
    vyber_ID_K  = value
}

Form 2 では Form 1 からの参照が必要であり、Form 3 では Form 2 からの参照が必要であるため、各 Form にアクセスできます。

文字列は不変クラスであるため、参照パラメーターとして使用することはできません。文字列 C#

于 2013-08-26T19:12:51.670 に答える