こんにちは、いくつかのボタンとそのクリック イベントを、ボタンが実行されるコード ビハインドの Windows フォーム アプリケーションに動的に追加したいのですが、System.Diagnostics.Process.Start(targetURL);
どうすればこれを実現できますか?
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);
}
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
メソッドを呼び出します。そうすることで、多くのコントロールを持つアプリケーションのパフォーマンスが向上します。
ボタン変数を宣言します。
イベント ハンドラーを追加する
それらをフォームの Controls プロパティに追加します。
利益
テキストボックス「txbURL」、ボタン「btnNavigateToURL」を含むユーザー コントロールを記述し、ボタンのイベント ハンドラを記述してコードを実行できます (System.Diagnostics.Process.Start(targetURL);)。
これが完了したら、実行時にコントロールをフォームに簡単に追加して、次のようなコードを記述できます (現在 ac# エディターを持っていないため、コードを確認する必要がある場合があります)。
MyControlClassName userControl = new MyControlClassName(string targetUrl);
userControl.Parent = yourForm;
yourForm.Controls.Add(userControl);
それでおしまい。