.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」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間