業務のためのC#・C言語・C++学習

主にC#の文法やWPF周りのアウトプットに利用してます。

初めて学ぶC/C++

C#を業務で回路の制御にC#を利用していました。これに加えC言語/C++を使う必要が出てきましので、基礎文法からアプリケーション開発までを学習することにしました。私と似たような立場の方の役に立てればと思います。 学習計画 ・環境構築 ・基礎文法 ・Atco…

フレームワークとライブラリの違い

フレームワークはアプリケーション開発する上で基礎機能を提供する部分であり、開発の土台となります。フレームワークを使用しないアプリケーション開発もありますが、例えばWindowsのデスクトップアプリケーションであれば.NET Frameworkを選択するとそのル…

Windowsアプリケーション開発に必要なVisual Studioとframeworkについて

私が思う「Visual Studioとフレームワークを使ってWindowsアプリケーション開発するメリット」は簡単にアプリケーション開発が出来る事だと考えます。 初めてGUIアプリケーションを作った際に画面にボタンを配置してvisual studioのボタンを押せばビルドの理…

【C#】GUIアプリケーションからの外部プログラム呼び出し

GUIアプリケーションから外部の実行可能ファイルを直接呼び出すことは一般的なアプローチです。これにより、ユーザーがアプリケーション内で特定の操作を実行できるようになります。以下は、C#のアプリケーションから外部プログラムを呼び出し、その外部アプ…

【WPF】DataGridをMVVMで実装する方法

MVVM(Model-View-ViewModel)は、WPF(Windows Presentation Foundation)などのXAMLベースのアプリケーション開発でよく使用されるデザインパターンです。MVVMはアプリケーションのロジックとUIを分離し、テスタビリティや保守性を向上させることを目的と…

.NET6で開発するアプリケーションの種類

日本マイクロソフトさんから.NET6によるWindowsデスクトップアプリケーションについてYoutube動画とスライドがあがっています。 Windowsユーザとしては非常に興味深い話です。 - YouTube 【BS3】Visual Studio 2022 と .NET 6 での Windows アプリ開発技術の…

【C#-文法】Dictionaryの入れ子

Dictionaryの入れ子を作りその出力を表示する。 入れ子は配列やListで実装することが多いが、あるキーで値を制御したい、あるキーワードだけ値を保存したい場合などにDictionaryの入れ子を利用する。 実装例 Dictionary<string, Dictionary<string, string>> dicout = new Dictionary<string, Dictionary<string, string>>(); var di</string,></string,>…

【C#-文法】Dictionaryの初期化

C#

Dictionaryの初期化は2つの方法がある。 1つはブラケット構文、もう1つはAddメソッドの利用である。 ブラケット構文によるDictionary初期化 static void Main(string[] args) { //ブラケット構文による初期化 var dic = new Dictionary<string, string>() { ["Red"] = "赤"</string,>…

【C#-WPF】ViewModelで写真付きポップアップを表示するには

目標 ・ボタンをクリックしたら適当な写真付きポップアップを表示したい //以下省略 ・ポップアップにはコマンドボタンを実装したい ・ポップアップに実装するボタンによりtrue/false判断をしたい。trueであれば次に進みfalseであればキャンセルしたい 課題 …

【C#-WPF】アプリケーション設定

WPF

WPFのGUIを立ち上げたり閉じる際に何かしらの変数を参照してGUIに反映したいとする。この時方法はいくつかあるが、その内の一つがアプリケーション設定”Properties.Settings.Default”の利用である。 アプリケーション設定”Properties.Settings.Default”の利…

【C#】文字列から文字を一部抜き取る

文字列の中から文字列を抜き取る場合はSubstringメソッドを利用する。 文字列の中から1文字だけを抜き取る場合はブラケット構文を利用する。 Sunstringの利用方法を挙げる。 Sunstring(抜き取り開始位置, 抜き取る文字列の長さ) string a = "0123456789"; v…

【C#】第二回アルゴリズム検定実技検定 過去問解答例

Aエレベータ 問題 下から順に B9, B8, ..., B1, 1F, 2F, ..., 9F と呼ばれる 18 のフロアを持つ建物があります。 この建物のエレベーターは、隣接する 2 つのフロア間の移動に常に 1 秒を要します。例えば、B9 から 9F への移動には 17 秒を要し、反対方向も…

WPFをMVVMパターンで実装する複数の方法

WPFといえばバインディングを思い浮かべやすいですが、MVVM(Model View ViewModel)パターンもその特徴になります。MVVMパターンとは、データ(ロジック)とUI機能を分離するデザインパターンの一種で、開発やデバッグを効率的に行えます。 WPFでもWindows Form…

【C#-文法】2・3次元配列の基礎 配列に配列を入れる

多次元配列について記述する。 多次元配列の特徴は縦と横の長さが等しくある。等しくない配列はジャグ配列という。 2次元配列 【1】初期値を指定した宣言 int[,] data = new[,] { { 10,11,12}, { 20,21,22}, { 30,31,32}, }; 行列として表現 【2】配列のサ…

【C#】第一回アルゴリズム検定実技検定 過去問解答例

C#

C#により記述された第一回アルゴリズム検定実技検定の分析と解答例 A 2倍チェック 問題 解法 B 増減管理 問題 解法 C 3番目 問題 解法 D 重複検査 問題 解法 A 2倍チェック 問題 文字列⇔数値の変換をする問題である。 https://atcoder.jp/contests/past2019…

【C#】csprojファイルとは

csprojファイルとは、C#のソースコードをビルドするために必要なファイルで、C#専用のビルド作業の情報が記載されたプロジェクトファイルのことである。 ビルド作業 ビルド作業とは、プログラムをPCのCPUが処理できる形にする作業のことである。1 一般的に総…

【C#】ディレクトリパスを指定しフォルダ名をreturnするメソッド

自分も含めてですが、何かしらの文字列を入れた配列やコレクションをreturnするメソッドを書く場合、とりあえず処理した各要素を保存するインスタンス変数を作りがちです。 例えばこんな感じに。 DirectoryInfoクラスを利用しディレクトリの情報からファイル…

【C#】WindowsフォームやWPFといったGUIにおけるTaskを用いた非同期処理の問題点とその解決方法

本記事ではC#における非同期処理、WindowsフォームやWPFといったGUIでTaskを用いた非同期処理、それに直面する問題と解決方法について説明する マルチスレッドと非同期処理 マルチスレッド 非同期処理の実現 Task Start()を使った場合どんな処理順番になるの…

【C#】delegateの基礎とActionを用いた応用

C#

delegateは「メソッドの引数にメソッドを代入する仕組み」です。そのメリットは複数あるメソッドの共通部分を抜き出し異なる部分だけメソッドとして定義すれば効率良くコードが書けます。今となってはdelegate→匿名メソッド→ラムダ式と進化し、ラムダ式がを…

【C#-WPF】MVVMパターンとContentControlで画面遷移する方法

WPFで画面遷移しようとしてWEB検索をかけるとPageとFrameを使った画面遷移が上位に表示されます。これらは開発者が実現したい機能がない場合があるため、MVVMパターンとContentControlの利用を推奨します。 コンストラクタで初期画面を反映させる場合 大まか…

【C#-WPF】MVVMパターンにおけるViewとViewModel間のインスタンス生成方法について

MVVMパターンにおけるViewとViewModel間のインスタンス生成方法は主に2つある。 ・Viewのコンストラクタでインスタンスを生成する方法。 ・XAMLのWindow.DataContextにインスタンスを生成する方法である。 準備 ViewModel:MainViewModel.cs View:MainWind…

【C#-WPF】DataTemplateでコントロールのContentをカスタマイズするには

WPFを開発するうえでDataTemplateは必要なわけではない。しかし、DataTemplateを利用するとWPFの外観をより柔軟性をもってカスタマイズできるになり非常に便利になる。DataTemplateは、データ オブジェクトのビジュアル構造と定義されるがここで詳細に解説す…

【C#-WPF】ControlTemplateでコントロールの外観をカスタマイズするには

WPFにおいてControlTemplate(コントロールテンプレート)とは、コントロールの外観を自由にカスタマイズする機能のことである。コントロールテンプレートが利用できるコントロールにはLabel、Window、Frame、Button、CheckBox、ComboBox、RadioButtonなどがあ…

【C#-WPF】XAMLの記述に便利なResourcesとStyleについて

WPFの大きな特長は表示とロジックの分離が可能にするMVVMパターンで設計できることである。 設計者は、開発者が C# をプログラミング ロジックの作業を行っているのと同時に、XAML のみを使用してアプリの外観に関する作業を行うことが可能になる。 そして、…

【C#-WPF】DataGridを用い表形式のデータを表示する方法

WPFにおいて、DataGridを使用して表形式のデータを表示する方法には、XAMLに直接記述する方法とデータバインディングする方法があります。 実用性を考慮した場合、あまり用いることはありません。 例えばデータベースから特定の条件でデータ取得・表示したい…

【C#-WPF】ListViewの項目を選択しメソッドを実行する

前回 前回ListViewのヘッダーにCheckBoxを追加し全ItemのCheck・Uncheckの方法についてご紹介しました。 gaishiengineer.hatenablog.com 前回 目標 XMALコード 全体のロジックコード 解説 目標 前回に続きCheckBoxを使い「Checkされた項目を選択しメソッドを…

【C#-文法】Listの基礎的な使い方

C#

リストListの基礎的な使い方について。 Listの初期化 初期化子を利用することでインスタンス化のタイミングでListを初期化することが可能です。 var list = new List<string>() { "abc", "def", "ghi" } 要素数の取得 配列の要素数はLengthで取得可能だが、Listの要</string>…

【C#-WPF】ListviewのヘッダーにCheckBoxを追加しチェックした場合、全Itemがチェックされる。アンチェックした場合、全Itemを解除する。

前回WPFにおいて、「ListViewにCheckBoxを追加するには」について取り上げました。 gaishiengineer.hatenablog.com 今回は上記のUIにListViewのヘッダーにCheckBoxを追加し全ItemのCheckとUnCheckを行います。 コードが長くなるので2段階に分けて説明します…

【C#-WPF】ListViewにチェックボックスを追加するには

ListViewにチェックボックスを追加したUIについてとりあげます。 UI その1 ButtonをクリックするとListViewにCheckBoxが表示されるUIを作ります。 その1ではXAMLでCheckBoxを表示させます。MainWindowのソースコードではデータバインディングは行いません…

【C#-WPF】ListViewを用い表形式のデータを表示する方法

WPFにおいてListViewを用い表形式のデータを表示するには”XAMLに直接記述する方法”、"コードビハインドに記述"、"MVVMで記述"があります。 一般的には"コードビハインドに記述"か"MVVMで記述"になります。 また表形式の表示にはListViewとDataGridによる方法…