Life is Really Short, Have Your Life!!

ござ先輩の主に技術的なメモ

C#

Prism8のContainerLocatorへの対応

日本でWPFのPrismやってるの100人いるかどうかじゃないかな。なんでWindowsのデスクトップアプリなんか作ったんだろう。 Prism8が2020年の10月頃にリリースされ、破壊的変更が入った。ServiceLocatorがなくなってContainerLocatorに変わりました。それだけ言…

PC-FAXで初期値に宛先を与えたい

C#

この質問と全く同じ。 detail.chiebukuro.yahoo.co.jp 富士ゼロックスの複合機はパソコンからダイレクトにFAXを送信する機能がありますが、当然ながらFAX番号を指定しなければなりません。 現在つくっている業務アプリでは、FAX送付先をデータとして保有して…

Friendlyで「出来たらいいな」2つ

C#

WPFアプリのE2Eテストを書く必要があり、Friendlyを触ってみた。 ishikawa-tatsuya.hatenablog.com 2つほど出来たらいいな、があった。 1. ViewModelのオブジェクトを取りたい //WindowControl w var vm = w.AppVar.Dynamic().DataContext(); if(vm is Hoge…

Prismに慣れてきた。これがMS標準だったらなぁ・・・

WPFアプリ構築の敷居もグッと下がったと思う。このライブラリがMicrosoft標準でないというのが、WPFの悲劇なのでは。Prismを使ってWindowsのデスクトップアプリを作っているのですが、だいぶ慣れてきた。かずきさんのレポジトリを見て写経すればまずOK。MVVM…

業務系アプリでWPFを使うメリットがなかった件

非常によくわかるお話だった。特にここ。kiwosuke.hatenablog.com MVVMの原則に従って一生懸命、コードビハインドからコードを追い出したところでほとんどメリットが感じられません。 業務系のアプリはデスクトップのテンキーをベースに操作ができることを求…

WPFのXPSDocumentの横向き印字

Programmer's Report: WPF で横長(Landscape)印刷をするを参考にしつつ。こんなコードで横向き出来ました。 var printQueue = new LocalPrintServer().GetPrintQueue( "YOUR PRINTER NAME"); PrintTicket ticket = printQueue.DefaultPrintTicket; ticket.Pa…

C#でプリンタの接続ステータスを拾う

C#

こんな感じで拾えますので、どぞ。System.ManagementのDLLに参照を追加してImportしておいて下さい。 public static bool IsPrinterOffLine(string printerName = "") { ManagementScope scope = new ManagementScope("\\root\\cimv2"); scope.Connect(); //…

Linqで全てのオブジェクトの値を変える

C#

stackoverflow.com collection.ToList().ForEach(c => c.PropertyToSet = value); Linq is Cool.

DataGridのContextMenuでUIElementが取得できない問題

stackoverflow.com The ContextMenu isn't in the same part of the Visual Tree so that's why you can't use ElementName etc. to reference the DataGrid. You'll have to use PlacementTarget of the ContextMenu instead. WPFのXAMLのビジュアルツリー…

Listからオブジェクトが入っているリストの重複を見つけるLinq

C#

簡単にできるんだね... groupbyのx.idは自分が集計したいkeyのオブジェクトを指せばOK。 List<Foo> duplicates = sample_list.GroupBy(x => x.id) .Where(g => g.Count() > 1) .Select(g => g.FirstOrDefault()).ToList();</foo>

WPF DataGridで編集中のセルの値を拾う方法を考える

WindowsFormのDataGridViewだと、こんな感じで拾える。DataGridViewでセルが編集中の時にキーイベントを捕捉する: .NET Tips: C#, VB.NETにあるように、EditingControlShowingというイベントハンドラがあって、その中でDataGridTextBoxColumnの内部にあるTex…

WPFでユーザーコントロールからViewModelを参照する方法

一番簡単な方法はApp.xamlにViewModelをResource定義することです。これで同じプロジェクト内から触れます。すげー簡単でしょw

WPF DataGrid VS Windows Form DataGridView

おおまかなアーキテクチャ設計は出来てきて、MVVMに乗っ取った仕組みでうまいことやろうとしています。で、業務系アプリはグリッド入力がUIの8割を占めるんですけど、組み方がWPFとWindows Formでは結構違うみたい。 セル内イベント捕捉 Windows Formの場合…

WPFのデータバインディングの基礎を学ぶ

現在弊社内で動いている販売管理システムは、使い慣れたWindowsフォームで作りました。最たる理由はドットインパクトプリンタに印字命令を出せることで、ブラウザではその機能がないので、ネイティブなライブラリということで.NETを採用した、という感じ。で…

c#でDataGridViewの背景色が変わらなかった件

フォームのLoadメソッドで、DataGridViewのデータソースにDataTableを入れてから、とある条件にそって背景色を変えるメソッドを実装した。 Regex reg = new Regex("正規表現"); foreach (DataGridViewRow row in DataGridView1.Rows) { if (reg.IsMatch(row.…

C#のWindowsフォームでPasswordCharをリセットしたい

ここに書いてあった。'¥0'を与えるとリセットされる。.NET Framework4で確認しました。 how can i unmask c# password textbox and mask it back to password - Stack Overflow private void checkBox_CheckedChanged(object sender, EventArgs e) { textBox…

ComboBoxのDisplayMemberを取得したい

C#

ValueならSelectedValueで取れるんですが、DisplayMemberの場合はこうやったら取れました。.NET4です。 DataRowView r = ComboBox1.SelectedItem as DataRowView; Console.WriteLine(r.Row["name"].ToString()); 見ての通り、キャストするだけ。簡単ですね。

Convert.ToIntとかParseInt系のNumberFormatExceptionがうっとおしい

C#

まぁさ・・・NULLや文字列を引数に与えた僕が悪いんだけどさ・・・ Exceptionじゃなくて、0でreturnして欲しいかな・・・。無視してよw

DataTableのSelectのソートは、空白行があるとソートしてくれない

C#

DataTable.Selectメソッド。 - 3分間プログラマ。を拝見し、さすがは全開FCさんやと。えーこと知ってはると。 というわけで、僕もソートするロジックを書いたんですが、落とし穴がありました。 僕の場合は品番(itemcodeという列名)でソートしたかったんです…

データバインドしているときのNullValueに注意

C#

.NETFramework4.0の挙動なんですが、データバインドしてる時にNullValueに何か値を与えるとバインドされない場合があるようです。 ユーザーのセルの入力値が"aaa"だとすると、DataGridViewColumn.DefaultCellStyle.NullValueに、入力値と同じ"aaa"って初期値…

通貨記号3桁区切りの文字列をintに変換する

C#

string str = "\14,000"; return int.Parse(str,System.Globalization.NumberStyles.Currency);

Windowsフォーム開発で思ったこと-vol.2

Windowsフォーム開発で思ったこと - Life is Really Short, Have Your Life!!の続きのようなモノ。開発環境はVisualStudio Express 2010 C#で、.NET Frameworkは4.0です。 メソッドやプロパティの一覧が見たい Visual Studioって当該クラスのプロパティやメ…

Windowsフォーム開発で思ったこと

世の中はWPFらしいんですけど、WPF覚えるよりも慣れたWindowsフォームのほうが圧倒的に開発速度が速かったし別に動かないワケじゃないから、Windowsフォームでここ2ヶ月ぐらいアプリを作っています。思ったことをまとめておきます。随時加筆修正予定。 画面…

DataGridViewで編集中のセルのEnterキー押下を捕捉する

C#

DataGridViewでセルが編集中の時にキーイベントを捕捉する: .NET Tips: C#, VB.NET こちらの解説にあるようにDataGridViewのキーイベントは、セルが編集中の場合はイベントが発生せず、「編集中になっているセルのテキストボックス」のキーイベントを捕捉す…

DataGridViewComboBoxColumnで初期値を入れる方法

C#

なんでかわからないのですが、datagridViewにコンボボックスのカラムを追加してデータを入れても、デフォルトでは空白行が挿入されます。初期値を入れたいのが実情じゃないですか。 調べたらこうやったらできた。 DataGridViewComboBoxColumn combo = new Da…