0

まず、これについて同様の Q&A があることを知っています。探している答えが見つからないようですが、見逃している可能性があります。第二に、私はほとんど C++ で作業してきたため、C# 言語は初めてなので、これがばかげた質問である場合はご容赦ください。

私が達成しようとしていることの背景を少し説明します。私はペイントアプリケーションを作成中です。最初のフォーム (Form1 と呼ぶことにします) は、アプリケーションのすべての UI があり、ユーザーが描画する場所です。ユーザーがさまざまなブラシの種類とサイズを選択できるようにしたいと考えています。Form1 には、ユーザーがこれらのオプションを変更するためにクリックするボタンがあります。このボタンをクリックすると、Form2 と呼ばれるものが開始されます。Form2 にはブラシの種類とサイズのオプションがあり、ユーザーがそれらを選択して [OK] ボタンをクリックすると、サイズとブラシの種類が返されます。Form2 ではなく Form1 がこれを知る必要があるため、ブラシの種類とブラシのサイズを保持するために 2 つの int 変数を使用して物事を単純にしています。

私が見つけたすべての情報は、Form2 から Form1 に情報を渡したいときに、Form1 から Form2 に情報を渡すためのものです。これを行う簡単な方法はありますか?このような情報を他のいくつかのボタンにも渡すので、複雑になりすぎないようにします。

ありがとうございました!!! :)

これはForm2を呼び出すForm1にあります

private void brushBtn_Click(object sender, EventArgs e)
{
    //New form which will ask which brush type and the size 
    Form2 paintInfo = new Form2() ;
    paintInfo.ShowDialog();  
}

これはForm2です

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

    int typeOfBrush;   

    //User picked the circle brush 
    private void circleBrushBtn_Click(object sender, EventArgs e)
    {
        typeOfBrush = 1 ; 
    }

    //User picked the square brush 
    private void squareBrushBtn_Click(object sender, EventArgs e)
    {
        typeOfBrush = 2 ;
    }

    private void okBtn_Click(object sender, EventArgs e)
    {
        //PASS THE BRUSH TYPE & SIZE BACK TO FORM1 WHEN USER HITS OK BUTTON

        this.Close() ;

    }
}
4

2 に答える 2

1

これを考えすぎないでください。フォームは単なるオブジェクトです。Form1 内から、Form2 型の新しいオブジェクトを作成します。Form2 には、必要に応じて設定できる任意のプロパティ (この場合は 2 つの int) を設定できます。WinForms を使用していると仮定すると、おそらく、ブロッキング コールである ShowDialog() を介して Form2 を表示したいと思うでしょう。ShowDialog() が返されたら、Form2 の任意のプロパティについて問い合わせることができます (Form1 のオブジェクトへのハンドルはまだあります)。

これで始めるのに十分でない場合は、他の誰かがコード化されたソリューション全体を投稿すると確信しています。

于 2014-08-14T19:42:01.183 に答える