1

重複の可能性:
リストボックス内の項目をダブルクリックした後、C#テキストが別のフォームに表示されない

私はC#の初心者です。ユーザーがボタンをクリックするたびに、他lblTextのフォームからフォームに存在するラベルを編集したい(これらのボタンはにあります)。subFormmainFormbtnHighbtnLowmainForm

 For btnHigh_Click event  --> lblText should have text "high"
 For btnLow_Click event   --> lblText should have text "low"

私は以下のコードを試しました:(動作していません

btnHigh_Clickイベント

        subForm sf = new subForm ();
        sf.ShowDialog();
        sf.lblText.Text = "High";  // lblText --> modifier is public

私はここで何を間違っていますか?

よろしくお願い
します。

4

3 に答える 3

2

フォームを表示する前に、まず値を変更する必要があります。

    subForm sf = new subForm ();
    sf.lblText.Text = "High";  
    sf.ShowDialog();
于 2012-10-13T09:27:04.003 に答える
1

何を書いたのが間違っている

subForm sf = new subForm (); 
sf.ShowDialog(); 
sf.lblText.Text = "High";  // lblText --> modifier is public 

このShowDialogメソッドは、現在のフォームをブロックし、別のフォームを開きます。これにより、意志が閉じられた後に行 sf.lblText.Text = "High";が「実行」されます。subForm

そのための最善の方法は、テキストボックスを公開しないことですが、次のようにコンストラクターでデータを配信できます。

subFormクラスに、コンストラクターを追加します。

public subForm(string strText)
{
    InitializeComponent();
    this.lblText.Text = strText; // Must be after the InitializeComponent method
}

subFormの呼び出し元に、次のように記述します。

subForm sf = new subForm ("High");              
sf.ShowDialog();   

これはそれを行うための正しい方法です。
この種のものに公的な許可を使用することは避けたほうがよいでしょう。すべての「世界」はsubForm、lblTextと呼ばれるラベルがあることを知る必要がなく、subFormデータへのアクセスを管理する必要がないためです。

于 2012-10-13T09:51:30.823 に答える
0

サブフォームのパブリックプロパティを作成できます:

public string lblText{get;set;}

このプロパティをロードフォームに設定します。

 public subForm()
        {
            InitializeComponent();
    lblText.Text=lblText;
        }

と :

subForm sf = new subForm ();
sf.lblText = "High";  
sf.ShowDialog();
于 2012-10-13T09:29:24.093 に答える