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

わんくま同盟

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

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


(過去ログ 17 を表示中)
■6927 / )  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); }
}

返信 編集キー/


管理者用

- Child Tree -