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

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

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

Re[4]: ボタン操作でタブと同様の操作を行う


(過去ログ 17 を表示中)

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

■6919 / inTopicNo.1)  ボタン操作でタブと同様の操作を行う
  
□投稿者/ 皆口 (1回)-(2007/08/27(Mon) 14:22:25)

分類:[.NET 全般] 

よろしくお願いします。

C#で、ボタンを押した時にタブと同様の操作をするにはどうすれば
よいでしょうか?
検索したらENTERキーで上記と同様の内容はあったのですが、
ボタン操作のほうは見つかりませんでした。
引用返信 編集キー/
■6920 / inTopicNo.2)  Re[1]: ボタン操作でタブと同様の操作を行う
□投稿者/ はつね (248回)-(2007/08/27(Mon) 14:45:47)
No6919 (皆口 さん) に返信
> C#で、ボタンを押した時にタブと同様の操作をするにはどうすれば
> よいでしょうか?

ボタンをクリックしたときに、Tabキーを押したと時と同様の動作をするという事でしょうか。
ボタンのクリックイベントのなかで、現在フォーカスがあるコントロールの次のコントロールにフォーカスを移動するようなコードを書けば実現できます。
this.SelectNextControl(this.ActiveControl, true, true, true, true);
引用返信 編集キー/
■6925 / inTopicNo.3)  Re[2]: ボタン操作でタブと同様の操作を行う
□投稿者/ 皆口 (2回)-(2007/08/27(Mon) 15:02:30)
下記で試したところ、常にそのボタンの次の場所のみにフォーカスが当たるようになってました。
TabIndex等の値で設定出来れば出来そうなのですが・・

No6920 (はつね さん) に返信
> ■No6919 (皆口 さん) に返信
>>C#で、ボタンを押した時にタブと同様の操作をするにはどうすれば
>>よいでしょうか?
>
> ボタンをクリックしたときに、Tabキーを押したと時と同様の動作をするという事でしょうか。
> ボタンのクリックイベントのなかで、現在フォーカスがあるコントロールの次のコントロールにフォーカスを移動するようなコードを書けば実現できます。
> this.SelectNextControl(this.ActiveControl, true, true, true, true);
引用返信 編集キー/
■6927 / inTopicNo.4)  Re[3]: ボタン操作でタブと同様の操作を行う
□投稿者/ 魔界の仮面弁士 (387回)-(2007/08/27(Mon) 15:28:15)
2007/08/27(Mon) 15:40:08 編集(投稿者)
No6925 (皆口 さん) に返信
> 下記で試したところ、常にそのボタンの次の場所のみにフォーカスが当たるようになってました。

はつねさんは、
> > 現在フォーカスがあるコントロールの次のコントロール
と書かれています。

通常、ボタンを押したときにはそのボタンがアクティブなコントロールになりますので、
どうしてもボタンでやるなら、Windows の[スクリーン キーボード]のような
特殊な対応が必要になるかと思います。

方法は幾つかあるでしょうけれども、たとえば、

 (案1) 直前にアクティブであったコントロールに対して SelectNextControl する。
 (案2) ボタンがフォーカスを受け取らないようにしておく。

とか。


//-------------------
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    Foo[] bar = { new Foo(), new Foo() };
    private void Form1_Load(object sender, EventArgs e)
    {
        bar[0].Text = "Tab";
        bar[0].Size = new Size(80, 30);
        bar[0].Location = new Point(8, 8);
        bar[0].Click += delegate { SelectNextControl(ActiveControl, true, true, true, true); };

        bar[1].Text = "Shift+Tab";
        bar[1].Size = new Size(80, 30);
        bar[1].Location = new Point(88, 8);
        bar[1].Click += delegate { SelectNextControl(ActiveControl, false, true, true, true); };

        Controls.AddRange(bar);
    }
}

class Foo : Button
{
    public Foo() { base.SetStyle(ControlStyles.Selectable, false); }
}

引用返信 編集キー/
■6933 / inTopicNo.5)  Re[4]: ボタン操作でタブと同様の操作を行う
□投稿者/ 皆口 (3回)-(2007/08/27(Mon) 16:31:37)
動きました。魔界の仮面弁士さんのソースを参考にさせていただきたいと思います。
ありがとうございました。

No6927 (魔界の仮面弁士 さん) に返信
> 2007/08/27(Mon) 15:40:08 編集(投稿者)
>
> ■No6925 (皆口 さん) に返信
>>下記で試したところ、常にそのボタンの次の場所のみにフォーカスが当たるようになってました。
>
> はつねさんは、
>>> 現在フォーカスがあるコントロールの次のコントロール
> と書かれています。
>
> 通常、ボタンを押したときにはそのボタンがアクティブなコントロールになりますので、
> どうしてもボタンでやるなら、Windows の[スクリーン キーボード]のような
> 特殊な対応が必要になるかと思います。
>
> 方法は幾つかあるでしょうけれども、たとえば、
>
>  (案1) 直前にアクティブであったコントロールに対して SelectNextControl する。
>  (案2) ボタンがフォーカスを受け取らないようにしておく。
>
> とか。
>
>
> //-------------------
> public partial class Form1 : Form
> {
> public Form1()
> {
> InitializeComponent();
> }
>
> Foo[] bar = { new Foo(), new Foo() };
> private void Form1_Load(object sender, EventArgs e)
> {
> bar[0].Text = "Tab";
> bar[0].Size = new Size(80, 30);
> bar[0].Location = new Point(8, 8);
> bar[0].Click += delegate { SelectNextControl(ActiveControl, true, true, true, true); };
>
> bar[1].Text = "Shift+Tab";
> bar[1].Size = new Size(80, 30);
> bar[1].Location = new Point(88, 8);
> bar[1].Click += delegate { SelectNextControl(ActiveControl, false, true, true, true); };
>
> Controls.AddRange(bar);
> }
> }
>
> class Foo : Button
> {
> public Foo() { base.SetStyle(ControlStyles.Selectable, false); }
> }
解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -