1

こんにちは、いくつかのボタンとそのクリック イベントを、ボタンが実行されるコード ビハインドの Windows フォーム アプリケーションに動的に追加したいのですが、System.Diagnostics.Process.Start(targetURL); どうすればこれを実現できますか?

4

4 に答える 4

4

ボタンを作成し、そのプロパティとイベント ハンドラーを設定してControls、フォームのコレクションに追加するだけです。

var button = new Button();
try
{
    button.Text = "Button 1";
    button.Click += (sender, e) => System.Diagnostics.Process.Start(targetURL);
    //Or if you don't want to use a lambda and would rather have a method;
    //button.Click += MyButton_Click;
    Controls.Add(button);
}
catch
{
    button.Dispose();
    throw;
}

//Only needed when not using a lambda;
void MyButton_Click(Object sender, EventArgs e)
{
    System.Diagnostics.Process.Start(targetURL);
}
于 2012-09-05T08:31:40.250 に答える
2

Controlsフォームのコレクションに任意のコントロールを追加できます。

var targetURL = // ...

try
{
    SuspendLayout();

    for (int i = 0; i < 10; i++)
    {
        var button = new Button();
        button.Text = String.Format("Button {0}", i);
        button.Location = new Point(0, i * 25);
        button.Click += (object sender, EventArgs e) => System.Diagnostics.Process.Start(targetURL);
        this.Controls.Add(button);
    }
}
finally
{
    ResumeLayout();
}

親コントロールに複数のコントロールを追加する場合は、追加するSuspendLayoutコントロールを初期化する前にメソッドを呼び出すことをお勧めします。コントロールを親コントロールに追加した後、ResumeLayoutメソッドを呼び出します。そうすることで、多くのコントロールを持つアプリケーションのパフォーマンスが向上します。

于 2012-09-05T08:32:13.837 に答える
2

ボタン変数を宣言します。

イベント ハンドラーを追加する

それらをフォームの Controls プロパティに追加します。

利益

于 2012-09-05T08:32:45.337 に答える
2

テキストボックス「txbURL」、ボタン「btnNavigateToURL」を含むユーザー コントロールを記述し、ボタンのイベント ハンドラを記述してコードを実行できます (System.Diagnostics.Process.Start(targetURL);)。

これが完了したら、実行時にコントロールをフォームに簡単に追加して、次のようなコードを記述できます (現在 ac# エディターを持っていないため、コードを確認する必要がある場合があります)。

MyControlClassName userControl = new MyControlClassName(string targetUrl);
userControl.Parent = yourForm;
yourForm.Controls.Add(userControl);

それでおしまい。

于 2012-09-05T08:34:41.077 に答える