Windows Forms

MSDN コードギャラリーの提供終了

MSDN コードギャラリーのページが無くなり、新しいコードサンプルページが作成されています。 https://code.msdn.microsoft.com/ MSDN コード ギャラリーの提供終了 | Microsoft Docs新しいコードサンプルページ Browse code samples | Microsoft Docs悲しい…

Visual Studio デザインモードの判定

Visual Studioのデザイナーすごい便利ですよね! ただ、デザイン時には実行してほしくないコードが実行されてしまうときもあります。そんなときはコードに実行中かどうかの判定を記述しましょう。 自分は以下のコードを使用しています。 if( System.Componen…

[WinForm] NativeWindowでWinProcの処理を切り分け

WinFormの場合、WinProcからメッセージを受け取って処理を行うという処理をまとめたい場合にNativeWindowと便利になります。 といっても下記URLからの情報なのでこれ以上は無いですマウスのホイールをコロコロした時にマウスオーバー(エンター?)している…

GitHub Microsoft

GitHubにMicrosoft公式のリポジトリがあります。 Microsoft · GitHubいろんなサンプルがあるので参考になりそうです。 GitHub - Microsoft/Windows-classic-samples: This repo contains samples that demonstrate the API used in Windows classic desktop …

クリック範囲、タッチ範囲、ダブルクリックの猶予時間について

ダブルクリック範囲 System.Windows.Forms.SystemInformation.DoubleClickSize https://referencesource.microsoft.com/#System.Windows.Forms/winforms/Managed/System/WinForms/SystemInformation.csタッチ範囲は System.Windows.Input.StylusLogic をリフ…

WindowsForms DataGridView コントロール上でのタッチ操作について

Windows FormsのDataGridViewはタッチ操作(フリック、スワイプっていうらしい)でのスクロールに不具合があります。 もうWindows Formsのバグは修正してくれないので回避コードでいくしかないようです。DataGridView コントロール上でのタッチ操作について …

自分でコントロールを描画する

ControlPaint ControlPaint クラス (System.Windows.Forms) 自分でコントロールを描画したい時に便利なクラスです 参考:コントロールを描画する: .NET Tips: C#, VB.NET Button周りのボーダーグラデーションも指定色から作成することができます。 ControlPa…

テキストボックスに数値型のデータバインドをした時の不正文字入力後のフォーカス変更

TextBoxのTextにデータバインディングをした時に、バインディング元が数値型だと入力エラーになりフォーカスが外せなくなります。FormのAutoValidateプロパティをAutoValidate.EnableAllowFocusChangeにするとフォーカスが外せるようになります。

ウインドウの位置を保存・復元する

プログラムを再度起動した時に前回のウインドウ位置やサイズを保存・復元する方法です。 保存する情報は ・ウインドウのサイズ(Width,Height) ・ウインドウの位置(Location) ・ウインドウの状態(最大化、最小化) になります。また、起動した時に画面か…

リフレクション

最近WPFを触っています。 が、ほしいフィールドやプロパティがプライベートだったりして歯がゆい思いをよくしてます。気に入らないのでリフレクションで持ってきてしまいましょう。 .NET FOLLOWER » C#: How to set or get value of a private or internal p…

[Windows Form] データバインドのやり方

テキストボックスの内容をいちいち変数に入れる処理を書くのはめんどくさいですね。 データバインドを使いましょう。Visual Studioのデザイナーで設定すると簡単にできます。 ※ スクリーンショットではアドイン画面がいくつか含まれています適当にフォームを…

ComboBoxの見た目と中身を別にする

コンボボックスの見た目と欲しいデータが別なんてことはよくあることですね。 簡単な物だったら匿名クラスを使ってちょいちょいです。 this.comboBox1.ValueMember = "value"; this.comboBox1.DisplayMember = "display"; this.comboBox1.DataSource = new[]…

ユーザーコントロールのスナップを自作する

ユーザーコントロールを作成してテキストボックスなんか置いたりすると、スナップ(ピンクの線)が消えてしまって配置するのがめんどくさくなります。 そこで、ユーザーコントロールにもスナップを追加します。とりあえずUserControlを継承したクラスを作成…

自作プロパティを(DataBindings)に追加する方法

Visual Studioで自作プロパティをデザイナー内の(DataBindings)に追加する方法System.ComponentModel.Bindable(true)をプロパティに付けましょう [System.ComponentModel.Bindable(true)] public int プロパティ{ get;set; } デザイナーから直接いじれるのは…

キーが押されているか調べる

Control.MouseButtons とか Control.ModifierKeysを使うだけ2つのキー同時押しはビット演算を使いましょう。 if( ( Control.MouseButtons & MouseButtons.Right ) == MouseButtons.Right ) { if( ( Control.ModifierKeys & ( Keys.Control | Keys.Shift ) )…