ラベル C# の投稿を表示しています。 すべての投稿を表示

log4net の 使い方

少し今更なのですが…忘れてしまっていて調べなおしを行ったのでメモしておきます。 log4net の 基本的な利用方法を手順に従ってまとめてみました。 とりあえず利用するには以下の手順に従ってコピペしていけば利用できるはずです。 概要 log4net を プロジェクト に組み込み AssemblyInfo.cs へ追記 log4net.config の作成 ログ出力の実装 1. log4net を プロジェクト に組み込み 以前はアセンブリをダウンロードしてきて参照設定して…とありましたが、 現在は NuGet から取得可能です。 プロジェクトを右クリック、「NuGetパッケージの管理」を選択 検索窓に「log4net」を入力 検索結果の log4net の「 ...

C# で string と MemoryStream を 変換 する 方法

Web通信やファイル操作を行う際、文字列(String) と メモリ配列(MemoryStream) を交換が発生します。 今回はそれぞれを相互へんかんする方法をまとめました。 まぁ、実際には「まとめ」に記載しているサンプルコードをコピペして利用すればラクだと思います。 目次 String → MemoryStream 変換 MemoryStream → String 変換 まとめ String → MemoryStream 変換 using System.IO; using System.Text; class Class1 { public MemoryStream GetMemoryStream(string text) { return new MemoryStream(Encoding.UTF8. ...

C# の DataGridView で ソート を 無効化 する 方法

DataGridView ネタ が続いています。。 今回は DataGridView で ソート を 無効化する 方法。 といっても方法は簡単で、 DataGridView の カラム に対して NotSortable を設定するだけです。 具体的な方法は以下で見ていきます。 目次 デザイナ で 設定する コード で 設定する デザイナ で 設定する 以下では Visual Studio の デザイナから修正を行います。 デザイナから修正するとコードが隠れるので、ソート無効化したいカラムが確定しているならこの方法が良いと思います。 ソート無効化したい DataGridView のタスクを開きます。 「列の編集」を選択します。 ソート無効化したいカラムの S ...

C# の DataGridView で カスタムデータ を ソート可能 にする方法

前回の記事 では、カスタムデータを利用して DataGridView を表示する方法をまとめましたが、 今回はその続きで DataGridView で カスタムデータ を ソート可能にする 方法 を見ていきます。 目次 概要 ソート可能なバインディングリスト 実装サンプル 概要 DataGridView で ソート可能 にすることは簡単で、 以下に載せる SortableBindingList を DataGridView.DataSource へ設定するだけです。 なんのひねりもないのでサクッとサンプルコードを見ていきましょう。 ソート可能なバインディングリスト 何と言ってもこのソースコードが必要! これさえあればカスタムデータも DataGridView でソートできる! そんな魔法のようなリストオブジェクトの ...

C# の DataGridView で カスタムデータ を 利用する 方法

Windowsフォームアプリケーションで利用する DataGridView において、 独自に作ったモデルクラスを表示させようとするとひと手間必要。 …といっても BindingSource を挟むだけで表示、追加、削除、変更ができるようになります。 以下ではそのサンプルコードを見ながら実装方法を紹介します。 目次 カスタムデータを設定する コードによる変更を画面へ反映させる 列タイトルをカスタマイズする カスタムデータ を 設定する 作成するコードは「モデルとなるクラス」と「フォームクラス」の2種類だけです。 以下にファイル一覧を記載します。 「モデルとなるクラス」がタイトルにもある カスタムデータ に相当します。 UserModel.cs Form1.cs 自動生成される Form1.Designer.cs は割愛します。 ...

C# で 実行中 アセンブリ の ファイルパス を 取得する 方法

実行中ファイル または 実行中アセンブリ のファイルパスを取得する サンプルコード を以下にまとめます。 以下の サンプルコード では、実行中アセンブリが存在するディレクトリを取得したいます。 実行中アセンブリのファイルパスを取得した後、 Path.GetDirectoryName() を利用してディレクトリパスを取得しています。 サンプルコード namespace Sample { using System.IO; using System.Reflection; public class Config { /// <summary> /// 設定ファイル名 /// </summary> private static string fileName = @"app.co ...

C# で ウィンドウハンドル を 取得する 方法

現在実行中プロセス の ウィンドウハンドル を 取得する 方法 の サンプルコード。 VSTO (Visual Studio Tools for Office) で リボン を作成して、子ウィンドウを Form で作成したはいいが…親ウィンドウの後ろに隠れてしまう問題が発生。 Form で Show するときに、親ウィンドウのハンドルを子ウィンドウに渡せば後ろへ行かなくなるようだったので、 ここではそのサンプルコードを記載します。 namespace AddIn { using AddIn.Dialog; using Microsoft.Office.Tools.Ribbon; using System; using System.Collections.Generic; using System.Diagnostics; ...

ASP.NET で 承認 (Authorization) を 制御する 方法

最近の Webアプリケーション であれば ユーザー認証 を必要とするサイトが普通かと思います。 ユーザー認証の仕組みを作るのと同じように必要となるのがコンテンツに対するアクセス制御です。 ここでは コンテンツに対するアクセス制御 の具体的な実装例をまとめます。 目次 概要 web.config で 制御する 方法 属性 で 制御する 方法 概要 ユーザー認証が終わると、続いてコンテンツにアクセスして良いかどうかの判断(承認)が行われます。 以下では承認の方法別メリット・デメリットおよび一般的な実装概念について述べます。 手法別メリット・デメリット 具体的なアクセス制御方法ですが、ASP.NET の 承認制御 は 「web.config を用いた方法」 と 「ソースコードに属性として記述する方法」 の2パターンがあります。 それぞれのメ ...

C# で SQL Server に パラメタライズドクエリ を 実行する

セキュリティ上の対策として パラメタライズドクエリ (パラメタ化クエリ、パラメータクエリ等呼ばれています) を利用すると思います。 このパラメタライズドクエリ、言語やデータベースによって指定方法が異なるのが厄介。。 C# で SQL Server に対して パラメタライズドクエリ を利用する際は @パラメータ名 でパラメータ指定します。 Command を再利用する場合、パラメータが保存されたままとなるのでパラメータ指定するキー名が被らないように注意します。 サンプルコード using System; using System.Configuration; using System.Data.SqlClient; public void Insert1(string id, string password, string role) { // 接続文字列の ...

C# で SQL Server に対して INSERT文 ・ UPDATE文 ・ DELETE文 を 実行する 方法

C# で SQL Server に対して変更処理(INSERT, UPDATE, DELETE)を実行する方法をまとめてみました。 目次 1行だけ実行 トランザクション処理 [おまけ] DB変更を行うSQL INSERT UPDATE DELETE 1行だけ実行 単一テーブルにしか影響しないようなSQLは1行だけ実行することになると思います。 このようなSQLを実行する場合、トランザクションを考慮せずそのまま ExecuteNonQuery() を実行する方法が簡単です。 using System; using System.Configuration; using S ...

C# で SQL Server から SELECT文 の 実行結果 を 取得する 方法

C# で SQL Server に対して SELECT文 を実行する際のサンプルコードを作成しました。 ここでは「SELECT文 の 実行結果 を DataTable へ投入する方法」と「SELECT文 の 実行結果 を 1行ずつ読み込んで処理していく方法」の2種類を例として取り上げます。 目次 まとめて読み込む (DataTable) 1行ずつ読み込む (SqlDataReader) まとめて読み込む (DataTable) DataTable へ SELECT文 の 結果 を一括読み込みしてしまう方法です。 単純で理解しやすい方法かと思います。 DataSet へ 結果投入してしまってもよいのですが、DataTable を取り出すためにワンクッション必要となるため、個人的には DataTab ...

C# で SQL Server に 接続する 方法

C# の SqlClient を利用して Microsoft SQL Server に接続する方法をまとめます。 どちらかと言うと基本的な実装例となるようにサンプルコードを作成しました。 目次 概要 接続文字列 の 準備 ソースコード上にべた書き ConnectionStringBuilderを利用して生成 app.config または web.config から取得 データベース接続 基本の実装例 try-catchを用いた実装例 using と try-catch を用いた実装例 トランザクション を用い ...

WindowChrome 利用時に アプリ を 最大化 したときの 問題 と 対策方法

WPF で フラットデザイン(メトロデザイン) っぽい ウィンドウ を作成しようとすると WindowChrome を利用することになります。 WindowChrome を使うときに発生する問題点とその対処方法をここではまとめます。 目次 問題点 対応策 [まとめ] サンプルコード 問題点 WindowChrome を利用して最大化したときの問題点は2点あります。 タスクバーの上に被ってしまう ウィンドウを最大化するとタスクバー上まで被ってしまい、タスクバーの操作ができなくなってしまいます。 ストアアプリや全画面表示するゲームであれば良いでしょうが…、通常業務で使うアプリだと不便です。 ウィンドウ枠が画面外にはみ出る ウィンドウを最大化すると画面領域外にウィンドウ枠がはみ出てしまい ...

WPF の Bootstrap っぽい テーマ

WPF の "Bootstrap" っぽい デザイン テーマ を作成しました。 コントロールだけ似せていては物足りなかったので、 メトロデザイン(フラットデザイン?)っぽい Window スタイル も作成しています。 ※ まだ開発中なので足りない部分等あるかもしれません。その際はご意見いただけると嬉しいです。 Twining テーマ ダウンロード V0.0.2 DLLファイル - Twining.dll ZIPファイル (ソース一式) 旧バージョン GitHub - garafu / Twining : releases 外部リンク GitHub - garafu/ ...

WPF で 依存プロパティ が 使える ユーザーコントロール の 作成方法

独自のユーザーコントロールを作成して利用する際、できることなら xaml 上のプロパティ(属性)に値を設定するだけで動くようにしたいと思い… あれやこれやと実現する方法を調べたので、その結果をまとめておきます。 以下のサンプルでは GreetingMessageControl を作成します。 この ユーザーコントロール は 独自プロパティ として Locale があり、この プロパティ に ja や en を設定すると 挨拶 が表示されるコントロールです。 目次 ユーザーコントロールの作成 xaml cs ユーザーコントロールの利用 xaml ...

WPF で 共通リソースファイル(画像ファイル) を 作成/利用する 方法

WPF で 共通するリソース(特に画像) を 別DLL へ切り出して共有利用する方法についてまとめました。 画像ファイルはパス設定をうまくやらないとエラーとなって動かないので、ポイントについて触れながら作成手順を記載します。 サンプルとして名前付きの BitmapImage を作成します。 目次 リソースDLL の 作成 リソースDLL の 利用 おまけ サンプルコード GitHub / samplecode_ResidentApplication ダウンロード リソースDLL の 作成 ここではまず 共通で利用したい リソースDLL の作成を行います。 プロジェクトの作成は 「WPF カスタム コントロール ライブラリ」 を利用します。 空のプロジェクトからもできると思いますが…参照設定が面倒なので前述の「WPF カス ...

WPF で ボタン に 画像 を 使用する 方法

WPF で Button 要素に画像を利用するにはどうしたら良いかについて調べたのでまとめました。 いろいろなサンプルコードを参照しながら検証したのですが…マウスオーバーやマウスプレスを利用する場合に Style と Trigger を利用した xaml の記載が必要になります。 単純に画像だけでよければ Image を利用するだけで事足ります。 画像を使うので リソース でもいくつか問題が発生しましたが… WPF の リソース に関しては 別記事 にします。。 目次 基本の画像ボタン 画像と文字列を含むボタン マウスオーバーで画像変更するボタン サンプルコード GitHub / samplecode_ResidentApplication ダウンロード 基本の画像ボタン ボタン背景として文字列ではなく画像を利用するような入力 ...

C# で AES暗号 (共通鍵暗号) を 利用 する 方法

AES暗号 を 利用して暗号化および復号を行うとき、具体的にどのようなコードを実装すればよいかをまとめてみました。 暗号技術の詳細には触れず、実装する場合にどうしたら良いか、という観点でまとめました。 目次 概要 鍵生成 暗号化 復号 [おまけ] サンプルコード 概要 "AES暗号" は 共通鍵暗号 の一種です。 学術的な詳細は分かりませんが… "DES暗号" よりは安全な暗号方法です。 AES暗号の仕様として以下のルールが決まっているので、利用する際は設定を間違えないように気を付けます。 ブロック長 128bit 鍵長 128/192/256bit 実際に実装で利用する共通鍵は「IV (Initialize Vector/初期化ベ ...