.NET TIPS

[Silverlight 2]ページ表示時にテキストボックスにフォーカスを設定するには?[C#、VB]

デジタルアドバンテージ 遠藤 孝信
2009/12/10

 Silverlightの各コントロールでは、次のようにFocusメソッドを呼び出すことにより、そのコントロールにフォーカスを設定できる。これは、Focusメソッドが、コントロールの基底クラスであるUIElementクラス(System.Windows名前空間)で実装されているためだ。

// ボタンのClickイベント・ハンドラ
private void button1_Click(object sender, RoutedEventArgs e)
{
  this.textBox1.Focus(); // TextBoxにフォーカスを設定
}
' ボタンのClickイベント・ハンドラ
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles Button1.Click
  Me.TextBox1.Focus() ' TextBoxにフォーカスを設定
End Sub
コントロールにフォーカスを設定するコード(上:C#、下:VB)
このコードでは、ボタンがクリックされたときにテキストボックス(textBox1/TextBox1により参照)にフォーカスを設定するという場面を想定している。

 しかしながら、Focusメソッドを呼び出してコントロールにフォーカスが設定できるのは、すでにページ内のSilverlightコントロール自体がフォーカスを持っている場合である(上記のコードの場合ではボタンが押された時点で必然的にそのようになる)。

 このため、あらかじめSilverlightコントロール内のテキストボックスにフォーカスが設定された状態でページを表示しようとして、SilverlightコントロールのLoadedイベント・ハンドラで上記のようにFocusメソッドを呼び出しても、テキストボックスにフォーカスは設定されない。

 ページ表示時にSilverlightコントロールのテキストボックス(TextBoxコントロール)にフォーカスを設定するには、次のようにして、Silverlightコントロール自体にもフォーカスを設定する必要がある。

// SilverlightコントロールのLoadedイベント・ハンドラ
private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
  // Silverlightコントロールにフォーカスを設定
  System.Windows.Browser.HtmlPage.Plugin.Focus();

  this.textBox1.Focus(); // TextBoxにフォーカスを設定
}
' SilverlightコントロールのLoadedイベント・ハンドラ
Private Sub UserControl_Loaded(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles MyBase.Loaded

  ' Silverlightコントロールにフォーカスを設定
  System.Windows.Browser.HtmlPage.Plugin.Focus()

  Me.TextBox1.Focus() ' TextBoxにフォーカスを設定
End Sub
ページ表示時にテキストボックスにフォーカスを設定するコード(上:C#、下:VB)
まずSilverlightコントロール自体にフォーカスを設定し、次にテキストボックス(textBox1/TextBox1により参照)にフォーカスを設定する(順序は逆でも可)。

 ここでは、Silverlightコントロールを参照するのに、HtmlPageクラス(System.Windows.Browser名前空間)のPluginプロパティにあるFocusメソッドを呼び出しているが、このPluginプロパティは、<object>タグで記述されたSilverlightコントロールを参照するためのものだ。End of Article

カテゴリ:Silverlight 2 処理対象:コントロール
カテゴリ:Silverlight 2 処理対象:HTML DOM
使用ライブラリ:UIElementクラス(System.Windows名前空間)
使用ライブラリ:HtmlPageクラス(System.Windows.Browser名前空間)

この記事と関連性の高い別の.NET TIPS
Windowsフォームのロード時に任意のコントロールへフォーカスを設定するには?
[Silverlight 2]JavaScriptコードからSilverlightのオブジェクトを利用するには?
[Silverlight 2]マウス・オーバー時にSilverlightコントロールを大きく表示するには?
[ASP.NET]Webフォーム上のフォーカスを制御するには?
[Silverlight 2]HTML要素にフォーカスを設定するには?
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」

TechTargetジャパン

Insider.NET フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

キャリアアップ

- PR -
@IT Sepcial

イベントカレンダー

PickUpイベント

- PR -
もっと見る
- PR -

お勧め求人情報

ホワイトペーパーTechTargetジャパン

@IT Sepcial
ソリューションFLASH