0

私の現在のプロジェクトでは、ユーザーが同じフォームの複数のインスタンスを開くことができる付箋タイプのアプリケーションを作成しています。ただし、C#でform1の新しいインスタンスを作成できるが、新しいフォームのタイトル/テキスト/見出しをform2にする方法があるかどうか疑問に思っていました。

これが達成可能である場合、アプリのその部分をコーディングする方法の正しい方向に微調整したいと思います。

みんな、ありがとう。

- 編集 -

重要なことを追加するのを忘れていたことに気付きました:

現在開いているインスタンスの数を計算できる必要があります。そこから、フォームのテキストに +1 を追加します。

4

2 に答える 2

1

クラスからフォームのプロパティにアクセスしてみてください:

MyForm newForm = new MyForm();
newForm.Show();
newForm.Text = "Form2";

または、現在のフォームからメソッドを呼び出してテキストを設定します。

// In MyForm
public void SetTitle(string text)
{
    this.Text = text;
}

// Call the Method
MyForm newForm = new MyForm();
newForm.Show();
newForm.SetTitle("Form2");

お役に立てれば!

開いているフォームの量を確認するには、次のようにします。

// In MyForm
private int counter = 1;
public void Counter(int count)
{
    counter = count;
}
// Example
MyForm newForm = new MyForm();
counter++;
newForm.Counter(counter);

使い方がわかりにくいかもしれませんが、同じフォームの新しいインスタンスを開くボタンがあるとしましょう。最初に開いているフォームが 1 つあるためですcounter = 1。ボタンをクリックするたびに、フォームに送信counter++または送信さ2れます。別のフォームを開くと、送信counter = 3されます。これを行うためのより良い方法があるかもしれませんが、私にはわかりません。

于 2012-07-20T05:53:45.233 に答える
0

静的フィールドを使用して、開かれたインスタンスの数を数え、それを使用してフォームのキャプションを設定します。

これがスケッチです。別の動作が必要な場合は、OnFormClosed オーバーライドをスキップできます。

public class TheFormClass : Form
{
    private static int _openCount = 0;

    protected override void OnLoad(EventArgs e)
    {
        _openCount++;
        base.OnLoad(e);
        this.Text = "Form" + _openCount;
    }

    protected override void OnFormClosed(FormClosedEventArgs e)
    {
        _openCount--;
        base.OnFormClosed(e);
    }
}
于 2012-07-20T06:12:34.603 に答える