#自己紹介
大学を卒業して、とある開発会社に就職し、そこでVB6での開発、Accessでの開発に携わりました。
その後、まったく別畑の社会に属していましたが、プログラミングは縁があって続けていました。
数年前にアプリを作ることになり、最初は簡単な内容だったので、Accessで作りました。
でも、その後、もう少し拡張したものを作る必要があり、Accessのままでは、面倒・・・限界があるなと感じ、改めてプログラミングの勉強ついでに開発をしてみようと思いました。
以下はどんなふうに勉強していったのかを履歴として書いたものです。
これはC#, WPFで開発での勉強です。
参考になったサイトなどのリンクも記載しています。当時のものなので、リンク切れがあったらすみません。
もし、初めてプログラミングに携わるという方がいたら、こんな風に技術を身に着けていったという履歴としてご参考になればと思います。
#勉強の履歴
・C#を使ってみよう(決意)
・基本文法の勉強
・WPFやUWPがあることを知る
・WPFで開発してみることにしてみた:理由データベースとの接続や、外部ファイルとのやりとりがUWPでは難しいと感じたから
・WPFについてはOkazukiさんのブログが参考になった(これまじで神でした)
https://blog.okazuki.jp/
https://github.com/runceel
・Prismを採用:面倒くさいプロパティなどが楽になった
・データベースについてEntityFrameworkについて学ぶ CodeFirstで開発することに
・リレーションのあるテーブルについて学ぶ virtualキーワード
・データの更新等の処理について学ぶ
・ObservableCollection, ObservableCollection, IQuerableなどを学ぶ
・ReactivePropertyの勉強
・AutoMapperを知る AutoMapperConfiguration作成
・画面遷移について調査:Regionの使い方を学ぶ Modules作成。
・Region同士のやりとりについて調査:EventAggregatorを知る
・画面のRadioButtonの選択値について検討:Converterを作ることを知る BoolToEnumConverter作成
・イベントの処理について検討:ReactiveCommand.Subscribe, EventTrigerの使用を学ぶ
・CSVファイルの入力について学ぶ CsvHelper
・非同期処理を学ぶ async await ProgressBarの表示
MahApp.MetroでProgressRingの表示
・TreeViewについて学ぶ
・Enterでのフォーカス移動を学ぶ:添付ビヘイビアを学ぶ AttachedBehavior作成 https://tnakamura.hatenablog.com/entry/20090812/attached_behavior
→EventManagerでの処理に変更 https://techxmag.com/questions/moving-to-next-control-on-enter-keypress-in-wpf/
・ふりがな自動入力ついに検討:WindowsFormsHostを知る。ImeFuriganaConversion作成
・ふりがなについてViewのコードビハインドを検討
・入力フォーマット(郵便番号)を検討 Extended.Wpf.Toolkitを知る MaskedTextBoxの利用
・MaskedTextBoxを使用して、郵便番号、時刻入力を使用したが、エラーが起きることが判明。
コピー・ペースト、右クリックでの文字変換をすると、クリップボード関連のエラーが起きる
→使用中止
→添付ビヘイビアでMask処理を作ることとした
参考 https://blindmeis.wordpress.com/2010/06/01/wpf-masked-textbox-behavior/
System.ComponentModel の MaskedTextProvider を知る。
・DatePickerのカスタムコントロールを作成 フォーマット、入力時/非選択時の表示状態をカスタム
参考 http://www.tawamuredays.blog.fc2.com/blog-entry-213.html
https://stackoverflow.com/questions/1104006/how-to-style-a-datepicker
https://docs.microsoft.com/ja-jp/dotnet/framework/wpf/controls/datepicker-styles-and-templates
・ComboBox.IsEditable プロパティを True にすると、IsTabStop プロパティを False にしてもタブストップが有効になってしまう。
そのため、ComboBoxのLoadedイベントで、ComboBox内の"PART_EditableTextBox"のTabStopプロパティを親(ComboBox)プロパティを継承するようにしました
参考 https://stackoverflow.com/questions/6579918/wpf-combobox-istabstop-behavior
・AutoMapperでプロパティに違いがある場合の対応:日時⇔日付・時刻
参考 http://www.atmarkit.co.jp/ait/articles/1503/24/news062.html
・ReactivePropertyの変更フラグ処理 拡張メソッドを使用することを学ぶ
参考 https://blog.okazuki.jp/entry/2015/11/07/215008
・WPF + MVVM でキーイベントを扱う方法
参考 https://qiita.com/koara-local/items/02d214f0b6fbf26866ec
・リフレクションを使用し、ManualMapperクラスを作成
参考 https://rksoftware.hatenablog.com/entry/2017/08/22/024122
・Login情報(コンピューター名など)の取得
参考 https://garafu.blogspot.com/2015/08/local-machine-information.html?m=1
・検索用にPATINDEX関数を使用
参考 https://ichiroku11.hatenablog.jp/entry/2015/06/14/222311
・多重起動の禁止
Mutexを利用
https://dobon.net/vb/dotnet/process/checkprevinstance.html
・Prism7.2のダイアログへの対応
これまではInteractionRequestを使用し、UserControlに作成して呼び出しをしていたが、IDialogServiceが実装されたため、それに対応
・UserContorolで、TextBoxにテキストを入力すると、自動的に拡大してしまう問題にぶつかる
⇒TextBoxをBoderコントロールで囲み、BoderのWidthをTextBoxにリンクさせることで解決
・DatePicker(EX含む)の表示を年月のみとする
https://stackoverflow.com/questions/41690478/wpf-datepicker-display-and-selection
・DataGridComboBoxColumnのItemsSourceのバインド方法
ResourcesにCollectionViewSourceを使って、DataContextのコレクションをStaticResourceで参照出来るようにDataGridComboBoxColumnのItemsSourceにバインドする
https://blog.okazuki.jp/entry/2015/03/19/203219
・RichTextBoxに表示するフォント色をHTMLで指定(Displaying HTML in a WPF RichTextBox)
https://www.codeproject.com/Articles/1097390/Displaying-HTML-in-a-WPF-RichTextBox
https://github.com/microsoft/WPF-Samples/tree/master/Sample%20Applications/HtmlToXamlDemo
・ファイル属性を読み取り専用にする
https://www.atmarkit.co.jp/fdotnet/dotnettips/360filereadonlly/filereadonlly.html
・DataGridのItemsSourceを動的に変更する
CollectionViewSourceを利用する
https://social.msdn.microsoft.com/Forums/netframework/ja-JP/6dbbcf38-609f-4f07-ba76-e21814d415ea/datagrid12391itemssource123981249612452125311248920808124342120530340?forum=wpfja
・DataGridグループ化
https://docs.microsoft.com/ja-jp/dotnet/framework/wpf/controls/how-to-group-sort-and-filter-data-in-the-datagrid-control
・enum値に文字列情報を紐付ける方法
http://gacken.com/blog/program/csharp-308_20180710/
・説明属性(Description)から列挙(enum)を取得
https://www.it-swarm-ja.tech/ja/c%23/%E8%AA%AC%E6%98%8E%E5%B1%9E%E6%80%A7%E3%81%8B%E3%82%89%E5%88%97%E6%8C%99%E3%82%92%E5%8F%96%E5%BE%97/970590211/