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

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

C# と VB.NET の入門サイト

Re[2]: ユーザコントロールのデフォルトボタンについて


(過去ログ 63 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■36402 / inTopicNo.1)  ユーザコントロールのデフォルトボタンについて
  
□投稿者/ unun (1回)-(2009/05/28(Thu) 15:05:16)

分類:[C#] 

環境:VS2008
言語:C#(VB.NETでも可)

テキストボックス、ラジオボタン等とボタンが乗っているユーザコントロールがあります。
このユーザコントロール上でEnterを押した際に、このボタンを押させたと扱わせるデフォルトボタン設定はできないでしょうか?

フォームの場合は、
this.AcceptButton = ボタン名;
で上手く行くのは分かりましたが、ユーザコントロールにはそれがないようです。

また、このユーザコントロールをフォームに貼り付けた場合に、フォーム上でEnterを押した場合にユーザコントロールをデフォルトとさせることは可能でしょうか?
AcceptButtonはその名の通り、ボタンしか設定することが出来ませんでした。

ご教示のほど、宜しくお願いいたします。
引用返信 編集キー/
■36435 / inTopicNo.2)  Re[1]: ユーザコントロールのデフォルトボタンについて
□投稿者/ やじゅ (1017回)-(2009/05/28(Thu) 23:18:37)
やじゅ さんの Web サイト
No36402 (unun さん) に返信
> 環境:VS2008
> 言語:C#(VB.NETでも可)
>
> フォームの場合は、
> this.AcceptButton = ボタン名;
> で上手く行くのは分かりましたが、ユーザコントロールにはそれがないようです。
>
> ご教示のほど、宜しくお願いいたします。

ユーザコントロールの中のボタンをセットすればどうでしょうか?未検証です。
this.AcceptButton = userCtrl.Controls["Button1"];
http://dobon.net/vb/dotnet/control/findcontrolbyname.html
引用返信 編集キー/
■36439 / inTopicNo.3)  Re[1]: ユーザコントロールのデフォルトボタンについて
□投稿者/ たくボン (162回)-(2009/05/29(Fri) 00:49:47)
No36402 (unun さん) に返信
> 環境:VS2008
> 言語:C#(VB.NETでも可)
> 
> テキストボックス、ラジオボタン等とボタンが乗っているユーザコントロールがあります。
> このユーザコントロール上でEnterを押した際に、このボタンを押させたと扱わせるデフォルトボタン設定はできないでしょうか?

ユーザコントロールじゃ、キーのフックはできないみたいだから、適当なタイミングでユーザコントロールに配置されているコントロールのKeyDownイベントをフック。

Private Sub UserControl1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    For Each c As Control In Me.Controls
        AddHandler c.KeyDown, AddressOf KeyDownFook
    Next
End Sub

Protected Sub KeyDownFook(ByVal sender As Object, ByVal e As KeyEventArgs)
    If e.KeyCode = Keys.Enter Then
        Me.Button1_Click(Nothing, e)
    End If
End Sub



> また、このユーザコントロールをフォームに貼り付けた場合に、フォーム上でEnterを押した場合にユーザコントロールをデフォルトとさせることは可能でしょうか?
> AcceptButtonはその名の通り、ボタンしか設定することが出来ませんでした。

んじゃ、ユーザコントロールの描画領域外にボタンを配置しておいてFormのAcceptButtonにセットするとかは?:-)

フォームにユーザコントロールが貼り付けられたら、フォームかどうか検証してフォームならAcceptButtonを設定する。

Private Sub UserControl1_ParentChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.ParentChanged
    If Me.Parent IsNot Nothing Then
        If Me.Parent.GetType.IsSubclassOf(GetType(Form)) Then
            DirectCast(Me.Parent, Form).AcceptButton = Me.Button1
        End If
    End If
End Sub

引用返信 編集キー/
■36462 / inTopicNo.4)  Re[2]: ユーザコントロールのデフォルトボタンについて
□投稿者/ unun (2回)-(2009/05/29(Fri) 11:18:02)
No36435 (やじゅ さん) に返信

ありがとうございます。
this.AcceptButton = (Button)this.userCtrl.Controls["button1"];
とすることで出来ました。

引用返信 編集キー/
■36464 / inTopicNo.5)  Re[2]: ユーザコントロールのデフォルトボタンについて
□投稿者/ unun (3回)-(2009/05/29(Fri) 11:25:15)
No36439 (たくボン さん) に返信

ありがとうございます。
こちらの方法でも出来ました。
ParentChangedイベントについての理解が出来ていないため、調査して今後に生かします。
勉強になりました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -