私は複数のボタンを持つWindowsフォームアプリケーションを持っています。私はデータベースにクエリを作成するためにクリックされた任意のボタンのテキストプロパティを取得する必要があります。私が知っている唯一の方法は、ボタンのクリックイベントを作成して送信者をボタンとしてキャストし、各ボタンのIDを非常に忙しいように見せかけることです。アプリケーション全体に100以上のボタンがある可能性が高いからです。だから私の質問はフォーム上で押された/クリックされたボタンのテキストプロパティを取得できる汎用のキープレスメソッドです。もしその質問があまり明確でないなら、私を許してください。任意のヘルプが歓迎されます1つの方法でWindowsフォームでクリックしたボタンのテキストを取得する方法
答えて
すべての同様の種類のボタンに対して単一のクリックイベントハンドラを使用します。この方法では、すべてのボタンに対してクリックイベントが登録されますが、すべてのボタンに対して実行されるメソッドは1つだけです。どのボタンが押されたかは次のように判断できます。 送信者オブジェクトを次のように使用します。
private void button_Click(object sender, EventArgs e)
{
var buttonText = ((Button)sender).Text;
//Query using buttonText
}
更新:答え上記 はまだ各ボタンのイベントをクリックしてサブスクライブする必要がします。あなたがそれを望んでいないなら、次のアプローチを見てください。
ClickTransparentButtonまたは)(Enabled=false)
これらのボタンをすべて無効にし、親フォームにclickイベントを追加することができます。クリックイベントを取得すると、次のようにクリックされたボタンを取得できます。
private void Form1_Click(object sender, EventArgs e)
{
var p = PointToClient(Cursor.Position);
var control = GetChildAtPoint(p);
if(control is Button)
{
var buttonText = ((Button)control).Text;
//Query using buttonText
}
}
しかし、これはキーボードを使用してこれらのボタンを操作することができないなど、いくつかの欠点があります。 など...
こんにちは、早急な答えのためにありがとう。上記のコードでは、私が正しく理解していれば、このイベントにアタッチするための各ボタンのコード行を書く必要があります。または、このカスタムハンドラにすべてのボタンを割り当てることができる単一のメソッドまたはコード行がありますか? –
答えを更新しました。それがあなたのために今働くかどうかを見ますか? –
ボタンをクリックハンドラとして、いくつかの関数を作成します:
private void buttonClickHandler(object sender, EventArgs e) { string buttonName = (sender as Button).Text; }
2Aを。接続このハンドラへのすべてのボタンのイベントをクリックします。
2B。ボタンのクリックハンドラの接続を自動化するためにそのようなものを使用します。
private void connectButtonsHandlers()
{
foreach(var c in this.Controls)
{
if(c is Button)
{
(c as Button).Click += buttonClickHandler;
}
}
}
は、プログラム開始時に接続を行うために、コンストラクタを形成するために、このコードを追加します。
なので、このハンドラに接続するために各ボタンのコードを書く必要があることを意味していますか?私はこのイベントハンドラにすべてのボタンを登録できるメソッドを探していますか?それは可能ですか? –
回答が更新されました。 – fat
- 1. クリックされたボタンのテキストを取得する方法
- 2. ボタンのテキストを取得する方法
- 3. 別のフォームから1つのフォームのボタンをクリックする方法は?
- 4. ボタンのクリックでgridviewのitemtemplateでhiddenfieldを取得する方法
- 5. クリックしたリンクのテキスト値を取得する方法は?
- 6. Javafx:クリックしたテキスト要素のIDを取得する方法
- 7. リスナーをクリックした後でリストビューからアイテムを1つ取得する方法
- 8. ボタンがクリックされたときにクラス内のテキストを取得する方法
- 9. フォームのボタンをクリックしたときのボタンの変更方法
- 10. selenium:ボタンをクリックした後にページソースコードを取得する方法
- 11. jquery:ボタンをクリックしたラベルを取得する方法は?
- 12. ReactJSのクリックで入力テキスト値を取得する方法
- 13. GTKでボタンのテキストを取得する方法は?
- 14. ボタンをクリックすると、特定のテキストを取得する方法は?
- 15. Windowsフォームでフォームをクリックした後にボタンの黒いアウトラインを削除する方法
- 16. PHPでHTMLボタンのdata-value = "1"を取得する方法は?
- 17. 1言語でタブレットのテキストを取得する方法
- 18. ボタンをJavaでクリックしたときにtextArea(java)のテキストを取得する方法
- 19. ボタンのクリックでtextViewテキストの色を変更する方法
- 20. OSMでクリックしたItemizedIconOverlayのインデックスを取得する方法
- 21. Vue.jsでクリックした要素の親を取得する方法
- 22. ListViewでクリックしたアイテムのIDを取得する方法は?
- 23. ボタンをクリックしたときにテキストを表示する方法
- 24. 1つのフォームで2つのボタンを処理する方法は?
- 25. 動的に塗りつぶした値から値を取得する方法ボタンでボタンをクリック
- 26. ボタンの1行目と2行目のテキストを取得する方法
- 27. 2つのトークンの間でテキストを取得する方法
- 28. Symfony3フォーム:どのボタンがフォーム内でクリックされたかを知る方法?
- 29. Windowsフォームでリストアイテムのテキストを設定する方法
- 30. Xamarin.Forms - ボタンをクリックする方法ボタンをクリックする方法
送信者をButtonとしてキャストできたら、簡単にcontrol.Textプロパティにアクセスできます。なぜあなたは私によれば不要なスイッチを必要としたのですか? –
私は同じ質問があります。なぜあなたはできないのですか((ボタン)送信者)。テキストを取得するためのテキスト?なぜスイッチが必要ですか? – GuidoG