C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.83837 の関連記事表示

<< 0 >>
■83837  コントロールの番号のみを取得する方法
□投稿者/ NN -(2017/04/13(Thu) 13:16:09)

    分類:[.NET 全般] 


    Formに配置したボタンの名称で
    Button23の23の部分だけを取得したいのですが


    Private Sub Button23_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button23.Click

    Dim button As Integer = CInt(Replace(CType(sender, Control).Name, "Button", ""))

    End Sub

    というようにするしかないですか?
    もっと簡便に取得できる方法があれば教えてください。

親記事 /過去ログ143より / 関連記事表示
削除チェック/

■83838  Re[1]: コントロールの番号のみを取得する方法
□投稿者/ ぶなっぷ -(2017/04/13(Thu) 13:24:16)
    簡便というか考え方の方が重要ですな。
    
    > Dim button As Integer = CInt(Replace(CType(sender, Control).Name, "Button", ""))
    だと、ヘッド部が "Button"でその直後に数字というフォーマットを期待していることになる。
    それで間違いないなら、これで良し。
    
    そうではなく、
      "ListBox23"
    とかもあり得るなら、末尾の数字を取得してCInt()がいいだろう。
    
    特殊な事情が無い限り(究極に処理速度を求めるなど)、重要なのは、汎用性だと思う。
    
記事No.83837 のレス /過去ログ143より / 関連記事表示
削除チェック/

■83839  Re[2]: コントロールの番号のみを取得する方法
□投稿者/ かたぎり -(2017/04/13(Thu) 13:54:56)
    Sender.Nameを^[\w]+([0-9]*)で正規表現かけてとれば「ほぼ汎用」
    (マッチ条件は即興なので、くわしくはちゃんと調べてみてくださいまし)

    VB.NET、正規表現、でぐぐれば色々と情報がとれるかと。
記事No.83837 のレス /過去ログ143より / 関連記事表示
削除チェック/

■83840  Re[1]: コントロールの番号のみを取得する方法
□投稿者/ WebSurfer -(2017/04/13(Thu) 14:20:52)
    No83837 (NN さん) に返信
    >
    > Formに配置したボタンの名称で
    > Button23の23の部分だけを取得したいのですが

    何のためにそういうことがしたいのか(=そもそもの目的)も書いていただけると
    また違った回答(その目的を果たすにはこうした方がいいとかの代案)が得られる
    かもしれません。

    もちろん、目的を果たすのはそれが絶対必要で他に方法はないということが確実で
    あればその限りではありませんが。
記事No.83837 のレス /過去ログ143より / 関連記事表示
削除チェック/

■83841  Re[1]: コントロールの番号のみを取得する方法
□投稿者/ shu -(2017/04/13(Thu) 14:43:02)
    No83837 (NN さん) に返信
    >
    > Formに配置したボタンの名称で
    > Button23の23の部分だけを取得したいのですが
    >
    >
    Button23という名前は意図してそのようにしているのでしょうか?
    そうでなければ提示された方法は危険です。

    取得したいIntegerの値をTagに入れておいたほうがよりよいと思います。

記事No.83837 のレス /過去ログ143より / 関連記事表示
削除チェック/

■83853  Re[2]: コントロールの番号のみを取得する方法
□投稿者/ NN -(2017/04/15(Sat) 11:08:17)
    みなさんご回答ありがとうございます。

    > 取得したいIntegerの値をTagに入れておいたほうがよりよい

    というのはどういう操作のことを指していますでしょうか?
記事No.83837 のレス /過去ログ143より / 関連記事表示
削除チェック/

■83854  Re[3]: コントロールの番号のみを取得する方法
□投稿者/ かたぎり -(2017/04/15(Sat) 11:17:01)
    画面部品コントロールには、tag、というプロパティがあって、Object型をもっています。
    ここに任意の情報を入れておくことができるので、そこを使うのはどうですか?というアイデアですね。

記事No.83837 のレス /過去ログ143より / 関連記事表示
削除チェック/

■83855  Re[4]: コントロールの番号のみを取得する方法
□投稿者/ NN -(2017/04/15(Sat) 11:29:30)
    No83854 (かたぎり さん) に返信


    納得しました、ありがとうございます。

    あと気になっているのですが

    Button23という名前は意図してそのようにしているのでしょうか?
    そうでなければ提示された方法は危険です。

    危険というのは何が危険なのでしょうか?
     
記事No.83837 のレス /過去ログ143より / 関連記事表示
削除チェック/

■83856  Re[5]: コントロールの番号のみを取得する方法
□投稿者/ shu -(2017/04/15(Sat) 12:45:55)
    No83855 (NN さん) に返信
    > ■No83854 (かたぎり さん) に返信
    >


    > Button23という名前は意図してそのようにしているのでしょうか?
    > そうでなければ提示された方法は危険です。
    >
    > 危険というのは何が危険なのでしょうか?
    意図した名前でなければボタンに対する動作が想定していないものになりうるということです。
    例えばButton23の23によって配列の23番目を処理することになるが実際はそのボタンでは14番目を
    処理しなければならなかったということがあります。またボタンを作ったり張りなおしているうちに
    番号が配列の数を超えてしまいExceptionが発生するということも考えられます。
記事No.83837 のレス /過去ログ143より / 関連記事表示
削除チェック/

■83857  Re[6]: コントロールの番号のみを取得する方法
□投稿者/ NN -(2017/04/15(Sat) 13:01:27)
    なるほど納得しました

    ありがとうございました。
     
記事No.83837 のレス / END /過去ログ143より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -