1

これが私のプロジェクトで達成したいことです:

ユーザーがボタンを押すと、テキストボックス、ラジオボタン、選択メニューを含むフォームがポップアップし、ユーザーが情報を入力できるようになります。

[OK] をクリックすると、フォーム データがメイン プログラム フォームのテキスト ボックスに渡されます。 [キャンセル] をクリックすると、サブフォームが消えます。

これはVBで可能ですか?

プロンプトと入力ボックスを試しましたが、制限があります

私はVBが初めてなので、質問を明確にしなかったら申し訳ありません

4

3 に答える 3

3

より簡単な方法は、使用する形式の変数を宣言してから、showdialog を呼び出すことです。これで、フォーム上のすべてのコントロール プロパティにアクセスできます。form2 のオブジェクトを使用しているため、フォームを閉じてもオブジェクトが破棄されないため、すべてが利用可能になります。

    Dim NewForm2 As New Form2
    Dim Result As DialogResult = NewForm2.ShowDialog
    If Result = Windows.Forms.DialogResult.OK Then
        MsgBox(Newform2.TextBox1.Text)
    End If

Form2 でこれを追加します。

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    Me.DialogResult = Windows.Forms.DialogResult.OK
    Me.Close()
End Sub
于 2013-06-21T08:06:30.717 に答える
1

このサンプルを使用して、コードを少しクリーンアップしました: http://www.dreamincode.net/forums/topic/103846-custom-inputbox/

ラジオボタンと選択メニューを実装する方法がわかりませんでしたが、難しい部分はポップアップフォームからテキストを取得して呼び出しフォームに戻すことであり、ここで行われるため、おそらく理解できるでしょう。その部分でサポートが必要な場合はお知らせください。UI のスクリーン ショットを提供していただけないでしょうか。

したがって、呼び出しフォームから、ボタンをクリックしてプロンプトを表示します。

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    Dim result = frmPrompt.Show("The Title", "The Prompt", "Default", TextBox1.Text, False)
End Sub

これは、カスタム プロンプト フォームに貼り付けるコードです。

Imports System.Windows.Forms

Public Class frmPrompt

Protected m_BlankValid As Boolean = True
Protected m_ReturnText As String = ""

Public Overloads Function ShowDialog( _
  ByVal TitleText As String, _
  ByVal PromptText As String, _
  ByVal DefaultText As String, _
  ByRef EnteredText As String, _
  ByVal BlankValid As Boolean) As System.Windows.Forms.DialogResult
    m_BlankValid = BlankValid
    Me.Lbl_Prompt.Text = PromptText
    Me.Text = TitleText
    Me.Txt_TextEntry.Text = DefaultText
    Me.ShowDialog()
    EnteredText = m_ReturnText
    Return Me.DialogResult
End Function

Public Overloads Shared Function Show(ByVal TitleText As String, ByVal promptText As String, ByVal DefaultText As String, ByRef TextInputted As String, Optional ByVal IsEmptyValid As Boolean = True) As System.Windows.Forms.DialogResult
    Dim tmp As New frmPrompt
    Return tmp.ShowDialog(TitleText, promptText, DefaultText, TextInputted, IsEmptyValid)
End Function

Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Txt_TextEntry.TextChanged
    If Me.Txt_TextEntry.Text = "" Then
        Me.But_Ok.Enabled = m_BlankValid
    Else
        Me.But_Ok.Enabled = True
    End If
End Sub

Private Sub OK_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles But_Ok.Click
    Me.DialogResult = System.Windows.Forms.DialogResult.OK
    m_ReturnText = Me.Txt_TextEntry.Text
    Me.Close()
End Sub

Private Sub Cancel_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles But_Cancel.Click
    Me.DialogResult = System.Windows.Forms.DialogResult.Cancel
    m_ReturnText = ""
    Me.Close()
End Sub
End Class
于 2013-06-21T02:57:52.073 に答える