この記事は2019年07月04日に投稿しました。
目次
エッセンシャルWPF:Windows Presentation Foundation (Programmer's SELECTION)
- 作者: Chris Anderson,星睦
- 出版社/メーカー: 翔泳社
- 発売日: 2007/10/31
- メディア: 大型本
- 購入: 6人 クリック: 128回
- この商品を含むブログ (32件) を見る
1. はじめに
こんにちは、iOSのエディタアプリPWEditorの開発者の二俣です。
今回は業務で使用しているWPFでウィンドウを最小化で起動する方法についてです。
2. WPFでウィンドウを最小化で起動する
WPFでウィンドウを最小化で起動する方法ですが、以下の方法で行います。 実際には一旦ウィンドウを非表示にして、その後表示しています。
- LoadedイベントハンドラとContentRenderedイベントハンドラを追加します。
- Loadedイベントハンドラの開始で、ウィンドウを非表示(Hide)にします。
- ContentRenderedイベントハンドラの終了で、ウィンドウを表示(Show)にします。
ただしこの方法では一瞬ウィンドウが表示された後、ウィンドウが非表示になり、その後表示されます。
実装例
MainWindow.xaml.cs
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; namespace WPFHideShow { /// <summary> /// MainWindow.xaml の相互作用ロジック /// </summary> public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } /** * @brief ウィンドウのロード時に呼び出されます。 * * @param [in] sender ウィンドウ * @param [in] e イベント */ private void Window_Loaded(object sender, RoutedEventArgs e) { // 画面を非表示にします。 Hide(); // ウィンドウが最小化している間の処理 // 例では3秒スリープしています。 Thread.Sleep(3 * 1000); } /** * @brief ウィンドウのコンテンツがレンダリングされた後呼び出されます。 * * @param [in] sender ウィンドウ * @param [in] e イベント */ private void Window_ContentRendered(object sender, EventArgs e) { // 画面を表示します。 Show(); } } }
3. おわりに
現在のアプリは起動時のデータ処理に時間がかかるため、空のウィンドウが表示された後、データが埋め込まれた画面が表示される状態でした。
そのためデータ処理が終わるまで画面が表示されない方法を調査してみました。
実戦で役立つ C#プログラミングのイディオム/定石&パターン
- 作者: 出井秀行
- 出版社/メーカー: 技術評論社
- 発売日: 2017/02/18
- メディア: 大型本
- この商品を含むブログ (1件) を見る
紹介している一部の記事のコードはGitlabで公開しています。
興味のある方は覗いてみてください。
私が勤務しているニューラルでは、主に組み込み系ソフトの開発を行っております。
弊社製品のハイブリッドOS Bi-OSは高い技術力を評価されており、特に制御系や通信系を得意としています。
私自身はiOSモバイルアプリやウィンドウズアプリを得意としております。
ソフトウェア開発に関して相談などございましたら、お気軽にご連絡ください。
また一緒に働きたい技術者の方も随時募集中です。
興味がありましたらご連絡ください。
EMAIL : info-nr@newral.co.jp / m-futamata@newral.co.jp
TEL : 042-523-3663
FAX : 042-540-1688