VB - 変換.tokyo | henkan.tokyo

【VB】フォームが最大化された時の位置とサイズを設定


■【VB】フォームが最大化された時の位置とサイズを設定


フォームが最大化された時の位置とサイズを設定するには、MaxmizedBounds プロパティを使用します。
MaximumSize プロパティが MaxmizedBounds プロパティの Size より小さい場合は、MaxmumSize の大きさになりますので注意してください。



■サンプルコード

' 最大化した時の位置を X=32, Y=16 に、サイズを 512 x 256 に設定する

Me.MaximizedBounds = New Rectangle(32, 16, 512, 256)


' Point 構造体と Size 構造体で指定しても良い

Me.MaximizedBounds = New Rectangle(New Point(32, 16), New Size(512, 256))





  
















【VB】フォームで現在アクティブなコントロールを取得または設定する


■【VB】フォームで現在アクティブなコントロールを取得または設定する


フォームで現在アクティブなコントロールを取得または設定するには、ActiveControl プロパティを使用します。
ActiveControl プロパティは、フォームに限らず IContainerControl インターフェイスを実装しているすべてのコントロールで使用できます。

ActiveControl に任意のコントロールを指定すると、そのコントロールをアクティブにすることができますが、本来は コントロールにフォーカスを設定する のように、コントロール側の Focus メソッドで行うようにするべきです。



■サンプルコード

' このフォームで現在アクティブなコントロールを取得する

Dim cControl As Control = Me.ActiveControl


' 取得できた場合のみ、そのコントロールの名前を表示する

If Not cControl Is Nothing Then

MessageBox.Show(cControl.Name)

End If


' TextBox1 をアクティブなコントロールに設定する

Me.ActiveControl = Me.TextBox1


' どのコントロールもアクティブでない状態にする

Me.ActiveControl = Nothing



  










【VB】フォームでもキーイベントを受け取るようにする


■【VB】フォームでもキーイベントを受け取るようにする


フォームでも、キーイベントを受け取るようにするには、KeyPreview プロパティを True に設定します。

これにより、フォームの KeyDown, KeyPress, KeyUp イベントが発生するようになります。

フォームでキーイベントを受けれるようになったからと言って、フォーム内のコントロールのキーイベントが発生しなくなるわけではありません。

通常は、デザイナで初期値として設定します。


' フォームでもキーイベントを受け取る

Me.KeyPreview = True































【VB】「VB.NET←→C#」コード変換ツール

  
■【VB】「VB.NET←→C#」コード変換ツール

既存のVB.NETコードをC#コードに移し替えるような場合には、「VB.NET←→C#」コード変換ツールが便利です。
「VB.NET←→C#」コード変換ツールには次のようなものがあります。


●ソフトウェアをダウンロードして実行

・SharpDevelop(の一機能) 
http://www.icsharpcode.net

SharpDevelop


左がC#(変換前)で、右がVB.NET(変換後)のコードです。
お勧めですが、コメントが一部なくなります。

メニューの[Tools]-[Convert buffer C# to VB.NET](日本語では、[ソースをC#からVB.NETに変換])や[Convert buffer VB.NET to C#]を選ぶと変換できます。


●VB.NET→C#のコード変換

・The Code Project「GBVB - Converting VB.NET code to C#」
http://www.codeproject.com


★New!!(2014/09追記)
・.NET Reflector
http://www.red-gate.com

逆コンパイラ「.NET Reflector」によるコード変換になります。
.NET Reflectorは本来、.NETのアセンブリ(実行ファイルやDLLファイル)からソース・コードへの逆コンパイルを行うツールですが、逆コンパイルを行う際に、生成するコードの言語をC#やVBなどから選択できます(ほかにもIL、Delphi、マネージC++、Chrome(現Oxygene)からも選択可です)。

この機能を利用すれば、例えば、C#のコードをVisual Studioなどでコンパイルしてアセンブリを作成し、それを.NET ReflectorによりVBのコードへ逆コンパイルできるようになります。
これによりC#のコードをVBに変換できる、という仕組みです。

以下の画面は、MSDNのFileStreamクラスの解説ページにあるC#のサンプル・プログラムを、.NET ReflectorによりC#およびVBのコードに逆コンパイルした結果になります。


【サンプル】コンパイルしたC#のサンプル・プログラムからC#のソース・コードを復元

【VB】「VB.NET←→C#」コード変換ツール1

.NET Reflectorでアセンブリを開くには、画面左のペインにエクスプローラからファイルをドラッグ&ドロップするのが簡単です。

【VB】「VB.NET←→C#」コード変換ツール2

コンパイルしたC#のサンプル・プログラムからVBのソース・コードを復元します。


●Web上で可能なコード変換

・Convert C# to VB.NET, Convert VB.NET to C# - Developer Fusion

「Convert C# to VB.NET」と「Convert VB.NET to C#」は、Developer Fusionで提供されているサービスです。
Web上で変換できます。
テキストボックスにコードを入力し、その下にある「Convert to VB.NET(または、C#)」ボタンをクリックすると、コードが変換されます。

.NET Framework 2.0まで対応しているようですが、3.0以上はまだのようです。
精度はよく、お勧めです。ちなみに、SharpDevelopを基に作成されているということです。


・C# to VB.NET Translator - AspAlliance
C# to VB.NET Translator
2012/07/12現在、サイトが開けません。

「C# to VB.NET Translator」もWeb上で提供されているサービスで、C#からVB.NETへの変換に対応しています。
テキストボックス(「Paste C# code below:」と書かれている下)にC#のコードを入力し、「Translate」ボタンをクリックすると、VB.NETのコードに変換されます。
.NET Framework 2.0以上には対応していませんが、1.1以下であれば、かなり役に立ちます。


「C# to VB.NET Translator」を使用するに当たり、注意すべき点
・配列の大きさを指定して初期化するコードは正しく変換されません。
 例:「int[] i = new int [10] {};」は「Dim i(10) As Integer」と変換されます。
・条件式の「&&」や「||」は、「And」「Or」と変換されます。正しくは、「AndAlso」「OrElse」です。
・条件式が多少複雑になると、間違えて変換することもあります。
・文字列リテラルで@を使っている時にエラーが出ます。@をとり、""内の\もとってから変換した方が良いでしょう。
・try...catch...finally文で、catch文とfinally文の中身が削除されてしまうことがあります。

ただし、これらのツールで完璧にコードを変換できるわけではありません。
いくらVB.NETとC#の文法などが類似しているといっても、「言語の壁」は予想以上に厚いのです。

重要なのは「言語の壁」を熟知することです。
この本にはコードを変換する際の「言語の壁」が余すところなく書かれており、非常に重宝します。


【VB】文字列の前後の空欄(スペース)を削除する

  
■【VB】文字列の前後の空欄(スペース)を削除する

・文字列の前後・先頭・末尾の空欄(スペース)を削除するには、

 String.Trimメソッド

 String.TrimStartメソッド

 String.TrimEndメソッド を使用します。


VB文字列空欄削除Trim

■サンプルコード
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim Text1 As String = TextBox1.Text

'・前後の空白を除く:
Label1.Text = "「" & Text1.Trim() & "」"

'・先頭の空白を除く:
Label2.Text = "「" & Text1.TrimStart() & "」"

'・末尾の空白を除く:
Label3.Text = "「" & Text1.TrimEnd() & "」"

End Sub