全て
| カテゴリ未分類
| 通常
| 数学
| 投資
| 副業
| 転職・就職
| ブログ
| 株Stock
| VBA
| SharePoint
| REST API
| RenderListDataAsStream
| PowerAutomateDesktop
| Graph API
| PowerApps
| PowerAutomate
| PowerFx
| OfficeScriptオフィススクリプト
| PowerAutomate日時Excel日時相互関係
| PowerShell
| Dataverse
| UiPath
| OneDrive
| LINQ
| VB.NET
| C#.NET
| WPFC#.NET
| Git
カテゴリ:C#.NET
WPFで`TextBox`に対して意図的に`LostFocus`イベントを発生させるためには、テキストボックスのフォーカスを他の要素に移す必要があります。これをプログラムから行うには、`FocusManager`を使用して別の要素にフォーカスを設定します。以下に、これを実現するサンプルコードを示します。 ### サンプルコード #### View (XAML) まず、UIを定義します。ここでは、`TextBox`と別の要素(例えば、`Button`)を配置します。 ```xml <Window x:Class="LostFocusSample.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="200" Width="300"> <StackPanel> <TextBox x:Name="myTextBox" Width="200" Height="30" Margin="10"/> <Button Content="Move Focus" Width="100" Height="30" Margin="10" Click="MoveFocusButton_Click"/> <TextBlock x:Name="dummyElement" Visibility="Collapsed"/> </StackPanel> </Window> ``` #### Code-behind (C#) 次に、`Button`のクリックイベントでフォーカスを別の要素に移動するコードを実装します。 ```csharp using System.Windows; namespace LostFocusSample { public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } private void MoveFocusButton_Click(object sender, RoutedEventArgs e) { // TextBoxのフォーカスを失わせるために、フォーカスをダミーの要素に移動する dummyElement.Focus(); } } } ``` ### 説明 - **XAML**: - `TextBox`に名前 (`x:Name="myTextBox"`) を設定。 - `Button`のクリックイベント (`Click="MoveFocusButton_Click"`) を設定。 - `TextBlock`をダミーの要素として使用し、フォーカスを移動します。`Visibility="Collapsed"`に設定することで、UI上に表示されません。 - **C#**: - `MoveFocusButton_Click`メソッドで、`dummyElement.Focus()`を呼び出すことにより、`TextBox`のフォーカスを失わせます。 - `dummyElement`は、実際には見えない(`Visibility="Collapsed"`)ので、UIには影響しません。 この方法を使用することで、`TextBox`の`LostFocus`イベントを意図的に発生させることができます。`dummyElement`にフォーカスを移すことで、`TextBox`がフォーカスを失い、`LostFocus`イベントがトリガーされます。 ### 応用 別の要素にフォーカスを移すだけでなく、特定のロジックを実行したい場合は、`LostFocus`イベントに対してイベントハンドラーを設定し、その中で必要な処理を行うことも可能です。 ```csharp public MainWindow() { InitializeComponent(); myTextBox.LostFocus += MyTextBox_LostFocus; } private void MyTextBox_LostFocus(object sender, RoutedEventArgs e) { // LostFocusイベント時に実行する処理 MessageBox.Show("TextBox lost focus!"); } ``` このように、`LostFocus`イベントをハンドルし、必要な処理を行うことができます。 お気に入りの記事を「いいね!」で応援しよう
Last updated
2024.05.19 18:15:59
[C#.NET] カテゴリの最新記事
|