Vb.net-advanced-forms

提供:Dev Guides
移動先:案内検索

VB.Net-高度なフォーム

この章では、次の概念を勉強しましょう-

  • アプリケーションにメニューとサブメニューを追加する
  • フォームに切り取り、コピー、貼り付け機能を追加する
  • フォームでのコントロールの固定とドッキング
  • モーダルフォーム

アプリケーションにメニューとサブメニューを追加する

伝統的に、Menu _、 MainMenu ContextMenu_、および_MenuItem_クラスは、Windowsアプリケーションにメニュー、サブメニュー、およびコンテキストメニューを追加するために使用されていました。

現在、 MenuStripToolStripMenuItemToolStripDropDown 、および ToolStripDropDownMenu コントロールは、以前のバージョンのメニュー関連のコントロールを置き換え、機能を追加します。 ただし、下位互換性と将来の使用の両方のために、古いコントロールクラスは保持されます。

これらのコントロールはまだ古いアプリケーションで多く使用されているため、最初に古いバージョンのコントロールを使用して、典型的なウィンドウのメインメニューバーとサブメニューを作成しましょう。

以下は、ファイル、編集、表示、プロジェクトのメニュー項目を含むメニューバーを作成する方法を示す例です。 「ファイル」メニューには、「新規」、「開く」、および「保存」というサブメニューがあります。

フォームをダブルクリックして、開いたウィンドウに次のコードを配置しましょう。

Public Class Form1
   Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
      'defining the main menu bar
      Dim mnuBar As New MainMenu()
      'defining the menu items for the main menu bar
      Dim myMenuItemFile As New MenuItem("&File")
      Dim myMenuItemEdit As New MenuItem("&Edit")
      Dim myMenuItemView As New MenuItem("&View")
      Dim myMenuItemProject As New MenuItem("&Project")

      'adding the menu items to the main menu bar
      mnuBar.MenuItems.Add(myMenuItemFile)
      mnuBar.MenuItems.Add(myMenuItemEdit)
      mnuBar.MenuItems.Add(myMenuItemView)
      mnuBar.MenuItems.Add(myMenuItemProject)

     ' defining some sub menus
      Dim myMenuItemNew As New MenuItem("&New")
      Dim myMenuItemOpen As New MenuItem("&Open")
      Dim myMenuItemSave As New MenuItem("&Save")

      'add sub menus to the File menu
      myMenuItemFile.MenuItems.Add(myMenuItemNew)
      myMenuItemFile.MenuItems.Add(myMenuItemOpen)
      myMenuItemFile.MenuItems.Add(myMenuItemSave)

      'add the main menu to the form
      Me.Menu = mnuBar

      ' Set the caption bar text of the form.
      Me.Text = "finddevguides.com"
   End Sub
End Class

上記のコードが実行され、Microsoft Visual Studioツールバーで使用可能な[スタート]ボタンを使用して実行されると、次のウィンドウが表示されます-

VB.Netメニューの例

Windowsフォームには、モダンな外観、ルックアンドフィールを持つ独自のカスタムメニューを作成するための豊富なクラスセットが含まれています。 MenuStripToolStripMenuItemContextMenuStrip コントロールは、メニューバーとコンテキストメニューを効率的に作成するために使用されます。

詳細を確認するには、次のリンクをクリックしてください-

Sr.No. Control & Description
1

MenuStrip

フォームのメニューシステムを提供します。

2

ToolStripMenuItem

  • MenuStrip* または *ContextMenuStrip* に表示される選択可能なオプションを表します。 ToolStripMenuItemコントロールは、以前のバージョンのMenuItemコントロールを置き換え、機能を追加します。
3

ContextMenuStrip

ショートカットメニューを表します。

フォームに切り取り、コピー、貼り付け機能を追加する

*ClipBoard* クラスによって公開されるメソッドは、アプリケーションにカット、コピー、およびペースト機能を追加するために使用されます。 ClipBoardクラスは、システムのクリップボードにデータを配置し、そこからデータを取得するメソッドを提供します。

以下の一般的に使用される方法があります-

Sr.No. Method Name & Description
1

Clear

クリップボードからすべてのデータを削除します。

2

ContainsData

指定された形式のデータがクリップボードにあるか、その形式に変換できるかを示します。

3

ContainsImage

クリップボード上にビットマップ形式のデータがあるか、その形式に変換できるデータがあるかを示します。

4

ContainsText

オペレーティングシステムに応じて、テキスト形式またはUnicodeText形式でクリップボードにデータがあるかどうかを示します。

5

GetData

指定された形式でクリップボードからデータを取得します。

6

GetDataObject

現在システムクリップボードにあるデータを取得します。

7

GetImage

クリップボードから画像を取得します。

8

GetText

オペレーティングシステムに応じて、クリップボードからテキストまたはUnicodeText形式でテキストデータを取得します。

9

GetText(TextDataFormat)

指定したTextDataFormat値で示される形式で、クリップボードからテキストデータを取得します。

10

SetData

クリップボードをクリアしてから、指定された形式でデータを追加します。

11

SetText(String)

クリップボードをクリアしてから、オペレーティングシステムに応じて、テキストまたはUnicodeText形式のテキストデータを追加します。

以下は、Clipboardクラスのメソッドを使用してデータを切り取り、コピー、貼り付ける方法を示す例です。 次の手順を実行します-

  • フォームにリッチテキストボックスコントロールと3つのボタンコントロールを追加します。
  • ボタンのテキストプロパティをそれぞれ、切り取り、コピー、貼り付けに変更します。
  • ボタンをダブルクリックして、コードエディターに次のコードを追加します-
Public Class Form1
   Private Sub Form1_Load(sender As Object, e As EventArgs) _
    Handles MyBase.Load
      ' Set the caption bar text of the form.
      Me.Text = "finddevguides.com"
   End Sub

   Private Sub Button1_Click(sender As Object, e As EventArgs) _
      Handles Button1.Click
      Clipboard.SetDataObject(RichTextBox1.SelectedText)
      RichTextBox1.SelectedText = ""
   End Sub

   Private Sub Button2_Click(sender As Object, e As EventArgs) _
       Handles Button2.Click
      Clipboard.SetDataObject(RichTextBox1.SelectedText)
   End Sub

   Private Sub Button3_Click(sender As Object, e As EventArgs) _
    Handles Button3.Click
      Dim iData As IDataObject
      iData = Clipboard.GetDataObject()
      If (iData.GetDataPresent(DataFormats.Text)) Then
         RichTextBox1.SelectedText = iData.GetData(DataFormats.Text)
      Else
         RichTextBox1.SelectedText = " "
      End If
   End Sub
End Class

上記のコードが実行され、Microsoft Visual Studioツールバーで使用可能な Start ボタンを使用して実行されると、次のウィンドウが表示されます-

VB.Net切り取り、貼り付け、コピーの例

テキストを入力して、ボタンの動作を確認します。

フォーム内のコントロールのドッキングとドッキング

*Anchoring* を使用すると、フォームのコンテナコントロールの端にコントロールのアンカー位置を設定できます。 Controlクラスの *Anchor* プロパティを使用すると、このプロパティの値を設定できます。 Anchorプロパティは、コントロールがバインドされているコンテナーのエッジを取得または設定し、親を使用してコントロールのサイズを変更する方法を決定します。

コントロールをフォームにアンカーすると、フォームのサイズが変更されても、コントロールはフォームの端からの距離とアンカー位置を維持します。

あなたは、プロパティウィンドウからコントロールのアンカープロパティ値を設定することができます-

VB.Netコントロールの固定

たとえば、フォームにButtonコントロールを追加し、そのアンカープロパティをBottom、Rightに設定します。 このフォームを実行して、フォームに対するButtonコントロールの元の位置を確認します。

VB.Netアンカーの例

これで、フォームを引き伸ばしても、ボタンとフォームの右下隅との距離は同じままです。

VB.Netアンカーの例

コントロールの*ドッキング*は、コントロールをコンテナの端の1つにドッキングすることを意味します。 ドッキングでは、コントロールはコンテナの特定の領域を完全に埋めます。

Controlクラスの Dock プロパティがこれを行います。 Dockプロパティは、親コントロールにドッキングされるコントロールの境界線を取得または設定し、コントロールが親とともにどのようにサイズ変更されるかを決定します。

あなたは、プロパティウィンドウからコントロールのDockプロパティ値を設定することができます-

VB.Netコントロールのドッキング

たとえば、フォームにButtonコントロールを追加し、そのDockプロパティをBottomに設定してみましょう。 このフォームを実行して、フォームに対するButtonコントロールの元の位置を確認します。

VB.Netドッキングの例

これで、フォームを拡大すると、ボタンはフォームに合わせてサイズ変更されます。

VB.Netドッキングの例

モーダルフォーム

  • モーダルフォーム*は、アプリケーションの残りの部分で作業を続ける前に閉じるか非表示にする必要があるフォームです。 すべてのダイアログボックスはモーダルフォームです。 MessageBoxもモーダルフォームです。

あなたは2つの方法でモーダルフォームを呼び出すことができます-

  • ShowDialog メソッドを呼び出す
  • Show メソッドを呼び出す

モーダルフォーム、ダイアログボックスを作成する例を取り上げましょう。 次の手順を実行します-

  • フォームForm1をアプリケーションに追加し、2つのラベルとボタンコントロールをForm1に追加します
  • 最初のラベルとボタンのテキストプロパティをそれぞれ「Welcome to Tutorials Point」と「Enter your Name」に変更します。 2番目のラベルのテキストプロパティを空白のままにします。 + VB.Net Modal Form Example、width = 282、height = 248
  • 新しいWindowsフォームForm2を追加し、2つのボタン、1つのラベル、およびテキストボックスをForm2に追加します。
  • ボタンのテキストプロパティをそれぞれ[OK]と[キャンセル]に変更します。 ラベルのテキストプロパティを「名前を入力してください」に変更します。
  • ダイアログボックスの境界線を設定するには、Form2の_FormBorderStyle_プロパティを_FixedDialog_に設定します。
  • Form2の_ControlBox_プロパティをFalseに設定します。
  • Form2の_ShowInTaskbar_プロパティをFalseに設定します。
  • [OK]ボタンの_DialogResult_プロパティを[OK]に、[キャンセル]ボタンを[キャンセル]に設定します。

VB.Netモーダルフォームの例

Form2のForm2_Loadメソッドに次のコードスニペットを追加します-

Private Sub Form2_Load(sender As Object, e As EventArgs) _
   Handles MyBase.Load
   AcceptButton = Button1
   CancelButton = Button2
End Sub

Form1のButton1_Clickメソッドに次のコードスニペットを追加します-

Private Sub Button1_Click(sender As Object, e As EventArgs) _
   Handles Button1.Click
   Dim frmSecond As Form2 = New Form2()

   If frmSecond.ShowDialog() = DialogResult.OK Then
      Label2.Text = frmSecond.TextBox1.Text
   End If
End Sub

上記のコードが実行され、Microsoft Visual Studioツールバーで使用可能な Start ボタンを使用して実行されると、次のウィンドウが表示されます-

VB.Netモーダルフォームの例

「名前を入力してください」ボタンをクリックすると、2番目のフォームが表示されます-

VB.Netモーダルフォームの例

[OK]ボタンをクリックすると、コントロールと情報がモーダルフォームから前のフォームに戻ります-

VB.Netモーダルフォームの例