C#

C#_ 1 行のみの関数 ( expression-bodied ) =>

関数メンバーの関数本体の部分が 1 つの式だけからなる場合に=> を使った簡易文法で関数定義できる。 expression-bodied 関数メンバという。本体が式・式形式。 C# 5.0 以前 public int Hoge ( int x ) { return x * 100; } C# 6 以降 public int Hoge ( int…

C#_DialogResult.OK をキャンセルしたい

※ コントロールのボタンは、DialogResult で OK と設定。 経緯 OK ボタンを押しても、処理が正常に完了などしなかったならばDialogResult.OK を押したことにしたくない ( Form を閉じたくない )。 Form1 if ( form2.ShowDialog() != DialogResult.OK ) { For…

C#_ 「 || 」 と 「 | 」

PHP の型まで判定する === ( 比較演算子 ) 的なものなのかと混乱した。 条件 OR 演算子 と 論理 OR 演算子 という。 || ( 条件 OR 演算子 ) if でよく使う条件の OR。 x || y x が true の場合、 y は評価されない。 | ( 論理 OR 演算子 ) ビットごとの OR …

C#_アセンブリとは

実行ファイルパス取得コードにて、アセンブリという言葉が出てきて意味が分からなかったので。 Microsoft .NETにおけるコード管理の基本単位となるコンパイル済みの実行コードをアセンブリという。 .NET標準の共通中間言語 ( CIL ) で記述されたライブラリ形…

C#_ インターフェース とは

定義だけを記したもの。宣言のみ? interface:抽象メソッドのみを持つ抽象クラスのようなもの。 クラスが実装すべき規約を定めるもの。クラス設計者とクラス利用者との仲介役を担う。 規約:ここでは、どういうメソッドにどういう引数を渡すかなど。 抽象メ…

C#_値型につける readonly

クラス ( 参照型 ) とは対照的に、構造体 ( 値型 ) の場合はデータを直接持つ。故に、readonly を付けると構造体の中身も読み取り専用になる。 但し、メソッドの呼び出しなどを行う際、コピーが発生するという別の注意が必要。※メソッドを呼び出す際、常にコ…

C#_ 参照型につける readonly

readonly は再帰的には働かない。 readonly を付けた場所だけが読み取り専用になり、参照先などについては書き換えが可能。 ex ) class MutableClass { // フィールドを直接公開 public int X; // 書き換え可能なプロパティ public int Y { get; set; } // …

C#_ const と readonly の違い

読み取り専用とだけしか知らなかった。 const readonly ローカル変数にも使える。 クラスのメンバー変数のみ。 変数のように扱える定数。 読み取り専用の代入不可な変数。 常に静的変数と同じ扱い ( 暗黙的 static )。 static の有無を変えられる。 宣言時に…

C#_ enum ( 列挙型 ) とは

enum キーワードは、列挙型を宣言する為に使用。 列挙型:特定の値しかとらないようなものに対して使う型。例えば曜日、月、性別、年号などなど。 書き方 enum Hoge // 列挙型名 { hogege // メンバー名 ,fugaga ,piyopiyo } 利用する時 Console.Write ( Hog…

VisualStudio_エラー個所へ飛ぶショートカット

多分、VisualStudio 全般で使えるはず。C# でしか確認してないが。 Ctrl + Shift + F12 こちらから。 https://qiita.com/kengop/items/ac9b57404d30e0cfdd20 以上。

C#_ 配列において、同じ値での初期化

Enumerable.Repeat<T> を使う。 Enumerable.Repeat <T> ( element, count ); element :繰り返される値。T の型と同じ。 count :値を生成する回数。( この場合配列のサイズとなる ) ex ) int[ ] testHoge = Enumerable.Repeat<int>(100, 5).ToArray(); // サイズ 5 の</int></t></t>…

C#_配列要素を List に入れ替える

ToList 関数 を使う。 結論。 List < T > 変数 = Array.ToList (); 無駄な軌跡 hogeAry : 配列fugaList : List 1 ) 以下のように書いたら次のエラーが表示。 メソッド ' Enumerable.Select< xxx~ ' に対する型引数を使い方から推論することはできません。…

C#_配列の Null チェック ( Array.IndexOf )

配列に Null がある場合、最初に見つかった要素のインデックスを返す。それ以外は、 - 1 。 Array.IndexOf ( ary, null ) 当たり前だが、Array.IndexOf は null 以外にも使える。 Array.IndexOf ( ary, value ) ary :検索対象となる一次配列。value:ary 内…

C#_List・配列要素の Null チェック

Any ( ) を使う。 List.Any(x => x == null) なお if (List.Any()) の様に書くと、List 内に何か要素があれば True となる。要素が Null でも True 。 ex ) null を含んでいたら " is null " を表示。 // is null が表示。 List<string> test = new List<string>() { "hoge",</string></string>…

C#_時間を指定して処理を一時停止する

結論から。 メソッドに async をつけ、その中で await Task.Delay を使う。 ex )データ ( Bitmap 型 ) を pictureBox に順次表示。 private async void test() { pictureBox.Image = hoge[0]; await Task.Delay(1000); pictureBox.Image = hoge[1]; } System…

C#_ファイルを読み込み、置換して書き出す

サクラエディタの Grep 置換が想定通りに動かないので、C# で書いた。 GetFiles で指定ディレクトリ内のファイルパスを取得。サブディレクトリも含むか否かは GetFiles の第三引数にSearchOption 型を指定するもよう。 StreamReader.ReadToEnd でファイル内…

C#_画像の矩形切り取り

Bitmap.Clone 関数を使う。 img.Clone ( Rectangle rect, PixelFormat format );img :切り取る ( 正しくはコピー ) 元の画像。rect :コピーしたい範囲。format:新しく描く画像の形式を指定。( 32 ビット / ピクセル など。ex では元絵と同じ ) ex)クリッ…

C#_ pictureBox 上のラベル背景を透明にする

pictureBox1 と label1 は設置した時の名前。 pictureBox1.Controls.Add( label1 );とlabel1.BackColor = Color.Transparent; が必要。 Form 上の label Form の BackgroundImage に画像を指定してその上に label を設置した場合は、 label1.BackColor = Col…

C#_pictureBox にもドラッグ&ドロップができる

pictureBox.AllowDrop = true; で可能となる。 候補に出てこなかったから出来るとは思わなかった。 一応ソース。 public test() { InitializeComponent(); pictureBox1.AllowDrop = true; } private void pictureBox1_DragEnter(object sender, DragEventArg…

C#_ページ設定とプリンタ設定

設定が反映されるかどうかは試してない。 ページ設定は、PageSetupDialogプリンタ設定は、PrintDialog を使用する。どちらも、ファイル先頭に using System.Drawing.Printing; が必要。 ソース内の pd_PrintPage は略。略したものは「C#_Image の印刷プレビ…

C#_文字を印刷

Graphics.DrawString を使う。 String 印刷でも図形を描く時と同様 Graphics を使い文字を描く。 ex )PrintDocument は省略。省略箇所のソースは 「 Image の印刷プレビューを表示する 」に記載。用紙に合わせているので文字は拡大されてる。 private void p…

C#_印刷時に使う MarginBounds について

ページの余白内側を表す四角形領域を取得する。 PrintPageEventArgs は、印刷処理 ( PrintPage イベント ) に関係するデータを提供してくれる。印刷を行うには、PrintDocument を利用する。 その PrintPageEventArgs プロパティに MarginBounds がある。これ…

C#_Image の印刷プレビューを表示する

pictureBox にある Image を印刷。各プロパティの意味はよく分からない。 PrintDocument と PrintPreviewDialog を使う。using System.Drawing.Printing; が必要。 ex ) private void toolStripMenuItemPrintPreview_Click(object sender, EventArgs e) { us…

C#_Forms.Timer の使い方 ( 追記 )

ソース読んでいて、timer.Tick += new EventHandler( hogaFunction ); がない、と焦ったのでメモ。 以前書いたコードは、デザインのプロパティから設定していた。 故に、デリゲート ( timer.Tick ) がなかった。 どこにあるかというと、デザインのコードに記…

C#_動的に作成したコントロールの判別 ( 追記 )

前に書いたコードの追記。コントロー ルを格納したリストを使用したコード。前とほぼコード変わっていない。 ex )ボタンをクリックすると、そのボタン .text に AAA が追記される。 private int count = 0; private List<Button> buttonList = new List<Button>(); private v</button></button>…

C#_動的に作成したコントロールの判別

前の続き。判別するには、以下のコードを追記すればOK。 Control を配列に入れる。 Control.Tag を使う。 object sender から Tag の値を取り出す。 ※Control を入れた配列は ex) で使用していないが、生成した複数の Control を取得して処理したい時は、配…

C#_プログラムから生成した ( 動的 ) コントロールにイベントをつける

デリゲートというものを標準ライブラリが使っている。自分で デリゲート を定義する必要はなし。delegate:代表、委譲、委託。メソッドを参照するための型。 Control.Click += 自作メソッド; で実現できる。Control.Click は標準ライブラリ。Click 以外にも …

C#_デリゲートとは

動的コントロールにイベントつけようとしてデリゲートにつまずいた。 デリゲートはメソッドを参照するための型。クラスや構造体と同じ 1 つの型として扱われる。delegate:代表、委譲、委託 A という名のメソッドと、 a というデリゲート型の変数があったと…

C#_自動でスクロールバーを一番下に設定 ( 追記 )

コントロー ルを追加していくプログラムにおいて、追加後にスクロールバーを一番下に持ってくるソース。 ※動的コントロー ルの Location を 設定する時、スクロール分を引く必要あり。 スクロールされた状態で ↓ コードを実行すると、 textBox.Location = ne…

C#_プログラムからコントロールを追加 ( 動的に追加 )

panel.Controls.Add ( 追加コントロール ); を使用。form にも追加可。 ex)Add ボタンを押すごとに テキストボックスを 40 間隔で追加。 ※ panel1 設置。AutoScroll:True 、 Dock:Fill 。 private int count = 0; private void buttonAdd_Click(object sen…