.net column
.NET開発者のためのブログメディア

C#における関数を使ったコンテキストの作成方法|メニューの作り方など

 
C#における関数を使ったコンテキストの作成方法|メニューの作り方など
SE
コンテキストメニューについて詳しく教えてください。
PM
ここではC#のコンテキストメニューについて詳しく見ていきましょう。

コンテキストとは?


マウスを右クリックする際に現れるボックスがコンテキストメニューです。標準タイプのコンテキストメニューは既に備わっていますが、ご自身で作成するも可能です。今回はC#を使ったコンテキストメニューの作り方を含め、ご紹介します。

C#のコンテキストメニューの作成方法5選

コンテキストメニューは標準搭載されていますが、ご自身で作成する事も出来ますし、非表示にしたり、左クリックで表示する様に変更したり出来ます。

ご自身でどういうコンテキストメニューを表示させるかで標準搭載されているものを使うか自作するかを選んでください。

1:標準のコンテキストメニュー

TextBoxではデフォルトでコンテキストメニューが表示されます。

実際のソースコードを見てみましょう。

TextBox上で右クリックするとコンテキストメニューが表示され、コンテキストメニューからのコピーや貼り付けなどが行えます。また、Ctrl-CやCtrl-Vも使用できます。

2:コンテキストメニューの非表示

C#では、ShortcutsEnabledプロパティをfalseにすると、コンテキストメニューを非表示にできます。

実際のソースコードを見てみましょう。

コンテキストメニューが表示されないことが分かります。また、Ctrl-CやCtrl-Vは使用できません。

C#では空のコンテキストメニューを設定することで、コンテキストメニューを非表示にできます。

実際のソースコードを見てみましょう。

コンテキストメニューが表示されないことが分かります。この場合、Ctrl-CやCtrl-Vは使用できます。

3:自作のコンテキストメニュー(ContextMenu)


C#では、ContextMenuコントロールを使用すれば、コンテキストメニューを自作できます。

実際のソースコードを見てみましょう。

TextBox上で右クリックすると、独自のコンテキストメニューが表示され、コンテキストメニューを選択すると、コンソールに出力されます。

4:自作のコンテキストメニュー(ContextMenuStrip)

ContextMenuStripコントロールは、ContextMenuコントロールの後継バージョンです。ContextMenuコントロール以上の機能を提供します。

実際のソースコードを見てみましょう。

TextBox上で右クリックすると、独自のコンテキストメニューが表示されます。また、C#では多階層のコンテキストメニューにしたり、チェックを付けたりできます。

5:左クリックでコンテキストメニュー表示

C#では、MouseClickのイベントハンドラを利用すれば、左クリックでコンテキストメニューを表示できます。

実際のソースコードを見てみましょう。

Showメソッドでは、座標を指定すれば任意の場所にコンテキストメニューを表示でき、クリック座標を取得して、クリック座標からコンテキストメニューを表示しています。

このように、C#ではMouseClickのイベントハンドラを利用すれば、左クリックでコンテキストメニューを表示できます。

コンテキストキーワードを使用して特定の意味を付与する20の方法


C#ではaddやyieldなど様々なデータ型を使うことができ、外部からオブジェクトにアクセス出来たり特定の値のみを抽出したりする事が出来ます。ここで紹介する20のデータ型を活用し、コンテキスト作成に役立てて下さい。

1:andの使い方

このコンテキストキーワードは、C#においてnullとnotの両方が式に一致する場合はandを使って組み合わせる事が出来ます。

以下のコードでは、関連性のあるパターンを合体させる事で、値が-40から20という指定した領域内に入っているかを確認させ、値によって指定されて文字を出力させています。

2:addの使い方

addは、外部からオブジェクト内にある変数にアクセスする際に必要なオブジェクト指向が高いC#のコンテキストキーワードの1つです。addは指示した内容通りにプログラムが実行される際に、双方向のデータを同期させたい場合に利用されます。

c

3:asyncの使い方

asyncはC#の修飾子の1つで、メソッドまたは式を同期させたくない場合に使用されるコンテキストキーワードです。「非同期メソッド」としても有名で、以下のコードではExampleMethodAsync というメソッドを同期させない様にしています。

4:getの使い方

getを使う事で、プログラム処理に欠かせないメソッドや値、構文の結果を出力させる事が出来ます。以下のコードでは、getを使ってSecondsプロパティの値を返しています。

5:awaitの使い方

await 演算子は、値や変数が非同期的な処理を終えるまで、外側にあるメソッドの処理が行われない様にする事が出来るC#のコンテキストキーワードです。 処理が完了された後は、メソッドによる操作の結果が出力されます。

以下のコードでは、非同期操作が完了した後にバイト配列が作成される様にプログラミングされています。 awaitは非同期処理が完了されるまで、Async メソッドの実行を抑制する事が出来ます。

6:initの使い方

initはプロパティ内やインデクサー内の値や構文などに外部からアクセス出来るC#のコンテキストキーワードです。 オブジェクトの作成している、プロパティまたはインデクサー要素に値を割り振れます。

以下の構文では、Seconds というプロパティに getとinitを割り振り、外部からでもこのプロパティにアクセス出来る様にしています。

7:dynamicの使い方

dynamic 型は、ある変数を宣言する際に並列して記述する事で働きを持つメソッドを連携させられる動的型付け変数の事です。 代わりに、演算は実行時に解決されます。 これにより、動的APIやHTML ドキュメントオブジェクトモデルにアクセスしやすくなり操作が楽になります。

8:notの使い方

否定されたパターンが式に一致しない事を感知出来るC#のコンテキストキーワードです。 以下のコードでは、入力された式の中身がnullでないかどうかをチェックしています。

9:nintの使い方

このコンテキストキーワードは、C#内でSystem.UIntPtr として示されている整数の値を、nintによって出力に適する様に値の演算と変換を行います。

10:globalの使い方

globalはC#の演算子の1つであり、NETのSystem 名前空間によって定義されたエイリアスが、他の名前空間やクラスを修飾する事が出来るコンテキストキーワードです。 これにより、任意の名前空間内に新規のエイリアスを作成する事が出来ます。

11:partialの使い方

C#において、partialはクラスやインターフェイスなどを複数のファイルに分割することが出来るコンテキストキーワードの事です。以下のコードでは、Aというクラスをいくつかのファイルに分割しています。

12:nuintの使い方

nuintは、C#においてプログラムを稼働させるビットプロセスに合わせた整数型を出力させる事が出来るコンテキストキーワードです。 特に、整数演算を主とするプログラムにおいて使用すると、パフォーマンスを最適化させられます。

注意点としては、C#では以下のコードの様に整数型を取得する為にはsizeof()を使う必要があるという事です。

13:removeの使い方

removeは、addと同様に外部からオブジェクト内に含まれている変数にアクセスする際に必要なC#のコンテキストキーワードです。ただし、addと違う点は、外部ユーザーがプログラムへのアクセスを解除する際に活躍します。

removeとaddとは働きが非常に似ているという事もあり、C#ではremoveを稼働させたい時は以下のコードの様にaddも使う必要があります。

14:recordの使い方

recordは、2つのオブジェクトが同じ値を持っているかを検証する為のC#のコンテキストキーワードであり、classと非常に似た働きをします。 C#では、record型を作成する際に、位置指定パラメーターまたは標準のプロパティ構文を使う事が出来ます。

15:valueの使い方

value は、プロパティ及びインデクサー内でsetを宣言する際に用いられるC#のコンテキストキーワードです。 C#ではvalue に値を格納させ、更にその値をプロパティまたはインデクサーに割り当てる事も可能です。

16:setの使い方

setは、格納された値をプロパティまたはインデクサーに割り振る際に活用出来るC#のコンテキストキーワードです。以下の構文では、get及びsetを使ってSecondsプロパティに値を割り振っています。

17:whenの使い方

whenは、catchなどのステートメントと共に使う事でフィルター条件を設定する事が出来るC#のコンテキストキーワードです。以下のコードでは、catchステートメントで特定の例外のハンドラーを実行することでtrueの条件のみを抽出する事が出来ます。

18:varの使い方

Varは、指定される事によってデータ方を推測し、コンパイラに出力することが出来るC#のコンテキストキーワードで、この状態を暗黙的にローカル変数を型指定していると言います。また、以下のコードの様に暗黙的な型指定でも厳格な型指定でも両者の機能は同じになります。

19:yieldの使い方

yieldは、C#においてIEnumerator またはIEnumerableの値を返す場合に用いられます。また、yieldを使うとメソッドや演算子等に対して同じ操作を繰り返し行う事が出来ます。更に、C#では 以下のコードの様にIEnumeratorを省略する事も可能です。

20:whereの使い方

whereでは、配列内に格納されている数値の中から奇数だけを抽出するなど、フィルターを設けたい際に役立つC#のコンテキストキーワードです。

以下のコードでは、Aクラス内のデータをフィルタリングするのか否かをしっかりと定義した上で、返し値を戻すかも指定しています。

C#のコンテキストにおけるコマンドキューとは?


C#のコンテキストにおけるコマンドキューとは、GPUにあるバッファー上のデータを書き直したり計算したりする事が出来るオブジェクトの1種です。更にC#ではメソッドがカプセル化された状態でGPUを操作出来ます。

コマンドキューの生成方法

clCreateCommandQueue関数を使用する事で、C#においてデバイスとコンテキストからコマンドキューを生成する事が出来ます。

コマンドキューの破棄方法

C#ではコマンドキューを使い終えて破棄する際には、clReleaseCommanndQueue関数を使用します。関数によって参照カウントを段々と減らしていき、0になったら破棄するという仕組みになっています。

SE
コンテキストメニューは自作もできるのですね。
PM
実際のソースコードを参考にして自作し、より理解を深めていきましょう。

C#の様々なコンテキストを作成してみよう

C#では、コンテキストメニューは表示させなくしたり自分で作成する事も出来ます。また、C#では様々なデータ型が存在するので自由自在に指示を出す事が出来ます。

更に、パッケージ化されたオブジェクト型「コマンドキュー」を作成すればGPU内の編集も可能です。是非様々なコンテキストを作成してみて下さい。


.NET分野でのキャリアアップをお考えの方は、現在募集中の求人情報をご覧ください。

また、直接のエントリーも受け付けております。

エントリー(応募フォーム)

Search

Popular

reccomended

Categories

Tags