พร้อมต์กล่องโต้ตอบใน Windows Forms


115

ฉันใช้System.Windows.Formsแต่แปลกมากพอไม่มีความสามารถในการสร้างมันขึ้นมา

ฉันจะรับบางสิ่งเช่นกล่องโต้ตอบพรอมต์จาวาสคริปต์โดยไม่ใช้จาวาสคริปต์ได้อย่างไร

MessageBox เป็นสิ่งที่ดี แต่ไม่มีทางที่ผู้ใช้จะป้อนอินพุตได้

ฉันต้องการให้ผู้ใช้ป้อนข้อความที่เป็นไปได้


คุณสามารถโพสต์ตัวอย่างโค้ดของสิ่งที่คุณกำลังพยายามทำได้หรือไม่?
Andrew Cooper

คุณกำลังมองหาข้อมูลประเภทใดให้รายละเอียดเพิ่มเติมเล็กน้อย CommonDialogดูที่คลาสที่สืบทอดมาพวกเขาดูเหมาะกับคุณหรือไม่?
Sanjeevakumar Hiremath

21
มันเป็นเรื่องตลกว่าสามคนถาม OP ที่จะให้รายละเอียดเพิ่มเติมและตัวอย่างโค้ด แต่ก็สวยชัดเจนว่าเขาหมายถึงโดย"เหมือนโต้ตอบพรอมต์จาวาสคริปต์"
Camilo Martin

2
ต่อไปนี้เป็นสองตัวอย่างขั้นพื้นฐานและอีกตัวอย่างหนึ่งที่มีการตรวจสอบอินพุต: 1. พื้นฐาน - csharp-examples.net/inputbox 2. การตรวจสอบความถูกต้อง - csharp-examples.net/inputbox-class
JasonM1

คำตอบ:


274

คุณต้องสร้างกล่องโต้ตอบพร้อมต์ของคุณเอง คุณอาจสร้างชั้นเรียนสำหรับสิ่งนี้

public static class Prompt
{
    public static string ShowDialog(string text, string caption)
    {
        Form prompt = new Form()
        {
            Width = 500,
            Height = 150,
            FormBorderStyle = FormBorderStyle.FixedDialog,
            Text = caption,
            StartPosition = FormStartPosition.CenterScreen
        };
        Label textLabel = new Label() { Left = 50, Top=20, Text=text };
        TextBox textBox = new TextBox() { Left = 50, Top=50, Width=400 };
        Button confirmation = new Button() { Text = "Ok", Left=350, Width=100, Top=70, DialogResult = DialogResult.OK };
        confirmation.Click += (sender, e) => { prompt.Close(); };
        prompt.Controls.Add(textBox);
        prompt.Controls.Add(confirmation);
        prompt.Controls.Add(textLabel);
        prompt.AcceptButton = confirmation;

        return prompt.ShowDialog() == DialogResult.OK ? textBox.Text : "";
    }
}

และเรียกมันว่า:

string promptValue = Prompt.ShowDialog("Test", "123");

อัปเดต :

ปุ่มเริ่มต้นที่เพิ่มเข้ามา ( ป้อนคีย์ ) และจุดเริ่มต้นอยู่บนพื้นฐานของความคิดเห็นและคำถามอื่น


1
วิธีหนึ่งจะขยายสิ่งนี้ไปยัง A) มีปุ่มยกเลิกและ B) ตรวจสอบข้อความในช่องข้อความในทางใดทางหนึ่งก่อนที่จะส่งคืน
ewok

@ewok เพียงแค่สร้างแบบฟอร์มตัวออกแบบฟอร์มจะช่วยคุณจัดวางในแบบที่คุณต้องการ
Camilo Martin

1
@SeanWorle ฉันไม่เห็นที่กล่าวถึงเลย
Bas

1
ซึ่งฉันทำได้โดยการเพิ่มสิ่งนี้: prompt.AcceptButton = การยืนยัน;
บีเคลย์แชนนอน

1
เพิ่มรหัสเพื่อจัดการกับผู้ใช้ที่ยกเลิกพรอมต์ด้วยปุ่มปิดและส่งคืนสตริงว่าง
Matthew Lock

53

เพิ่มการอ้างอิงMicrosoft.VisualBasicและใช้สิ่งนี้ในรหัส C # ของคุณ:

string input = Microsoft.VisualBasic.Interaction.InputBox("Prompt", 
                       "Title", 
                       "Default", 
                       0, 
                       0);

ในการเพิ่มการอ้างอิง: คลิกขวาที่การอ้างอิงในหน้าต่าง Project Explorer ของคุณจากนั้นบนเพิ่มการอ้างอิงและตรวจสอบ VisualBasic จากรายการนั้น


4
ข้อความนี้Interactionไม่มีอยู่ในเนมสเปซMicrosoft.VisualBasic
Khalil Khalaf

1
นี่ดีกว่าโซลูชันคลาสที่กำหนดเองเล็กน้อยเนื่องจากรองรับหน้าจอความละเอียดสูง
ทำเครื่องหมาย gamache

ฉันรู้ว่าการใช้โซลูชันที่กำหนดเองอาจจะดีกว่า แต่ฉันกำลังมองหาวิธีแก้ปัญหาที่ง่ายและรวดเร็วและนี่เป็นวิธีที่ดีที่สุด ขอบคุณจริงๆสำหรับทุกคน
Juano

14

ไม่มีสิ่งดังกล่าวเกิดขึ้นใน Windows Forms

คุณต้องสร้างแบบฟอร์มของคุณเองสำหรับสิ่งนั้นหรือ:

ใช้การMicrosoft.VisualBasicอ้างอิง

Inputbox เป็นรหัสเดิมที่นำเข้ามาใน. Net สำหรับความเข้ากันได้กับ VB6 - ดังนั้นฉันไม่แนะนำให้ทำเช่นนี้


2
นี่เป็นจริงสำหรับMicrosoft.VisualBasic.Compatibilityเนมสเปซ Microsoft.VisualBasicเป็นชุดของไลบรารีตัวช่วยที่อยู่ด้านบนของ. Net และไม่ได้เจาะจง VB เลย
Jim Wooley

-1 เนื่องจากคำสั่งไม่ชัดเจนเกี่ยวกับการอ้างอิง VB ไม่มีเหตุผลที่จะทำให้ผู้คนหวาดกลัวจากการใช้คุณสมบัติในตัวที่มีประโยชน์นี้
UuDdLrLrSs

6

โดยทั่วไปไม่ใช่ความคิดที่ดีจริงที่จะนำเข้าไลบรารี VisualBasic ไปยังโปรแกรม C # (ไม่ใช่เพราะใช้งานไม่ได้ แต่เพื่อความเข้ากันได้สไตล์และความสามารถในการอัพเกรด) แต่คุณสามารถเรียก Microsoft.VisualBasic.InteractionInputBox () เพื่อแสดงประเภทของกล่องที่คุณกำลังมองหา

หากคุณสามารถสร้างออบเจ็กต์ Windows.Forms ได้นั่นจะดีที่สุด แต่คุณบอกว่าไม่สามารถทำได้


26
เหตุใดจึงไม่เป็นความคิดที่ดี ปัญหา "ความเข้ากันได้" และ "ความสามารถในการอัปเกรด" ที่เป็นไปได้คืออะไร? ฉันจะยอมรับว่าการพูดแบบ "โวหาร" โปรแกรมเมอร์ C # ส่วนใหญ่ไม่ต้องการใช้คลาสจากเนมสเปซที่เรียกVisualBasicแต่นั่นอยู่ในหัวของพวกเขาเท่านั้น ไม่มีความเป็นจริงสำหรับความรู้สึกนั้น มันก็จะถูกเรียกว่าMicrosoft.MakeMyLifeEasierWithAlreadyImplementedMethodsเนมสเปซเช่นกัน
โคดี้เกรย์

3
โดยทั่วไปแพคเกจ Microsoft.VisualBasic มีไว้เพื่อลดความซับซ้อนของการอัพเกรดโค้ดจาก VB 6 เท่านั้น Microsoft ยังคงขู่ว่าจะยกเลิก VB อย่างถาวร (แม้ว่าอาจจะไม่เกิดขึ้นจริง) ดังนั้นจึงไม่รับประกันการสนับสนุนในอนาคตสำหรับเนมสเปซนี้ นอกจากนี้ข้อดีอย่างหนึ่งของ. Net คือความสามารถในการพกพารหัสเดียวกันนี้จะทำงานบนแพลตฟอร์มใด ๆ ที่ติดตั้ง. Net framework Microsoft.VisualBasic ไม่รับประกันว่าจะพร้อมใช้งานบนแพลตฟอร์มอื่น ๆ (รวมถึงสิ่งที่คุ้มค่า. Net mobile ซึ่งไม่มีให้บริการเลย)
Sean Worle

22
ไม่ถูกต้อง นั่นคือMicrosoft.VisualBasic.Compatibilityเนมสเปซย่อยไม่ใช่ทั้งหมด ฟังก์ชัน "หลัก" จำนวนมากรวมอยู่ในMicrosoft.VisualBasicเนมสเปซ มันไม่ไปไหน Microsoft ได้ขู่ว่าจะ "หยุด" VB 6 ไม่ใช่ VB.NET พวกเขาสัญญาซ้ำแล้วซ้ำเล่าว่าจะไม่ไปไหน บางคนยังไม่เข้าใจความแตกต่าง ...
โคดี้เกรย์

4

วิธีอื่นในการดำเนินการนี้: สมมติว่าคุณมีประเภทอินพุตกล่องข้อความสร้างแบบฟอร์มและมีค่ากล่องข้อความเป็นทรัพย์สินสาธารณะ

public partial class TextPrompt : Form
{
    public string Value
    {
        get { return tbText.Text.Trim(); }
    }

    public TextPrompt(string promptInstructions)
    {
        InitializeComponent();

        lblPromptText.Text = promptInstructions;
    }

    private void BtnSubmitText_Click(object sender, EventArgs e)
    {
        Close();
    }

    private void TextPrompt_Load(object sender, EventArgs e)
    {
        CenterToParent();
    }
}

ในรูปแบบหลักนี่จะเป็นรหัส:

var t = new TextPrompt(this, "Type the name of the settings file:");
t.ShowDialog()

;

วิธีนี้รหัสจะดูสะอาดขึ้น:

  1. หากมีการเพิ่มตรรกะการตรวจสอบ
  2. หากมีการเพิ่มประเภทอินพุตอื่น ๆ

4

คำตอบของ Bas สามารถทำให้คุณอยู่ในความทรงจำปัญหาในทางทฤษฎีเนื่องจาก ShowDialog จะไม่ถูกกำจัด ฉันคิดว่านี่เป็นวิธีที่เหมาะสมกว่า นอกจากนี้ยังกล่าวถึง textLabel ที่สามารถอ่านได้ด้วยข้อความที่ยาวขึ้น

public class Prompt : IDisposable
{
    private Form prompt { get; set; }
    public string Result { get; }

    public Prompt(string text, string caption)
    {
        Result = ShowDialog(text, caption);
    }
    //use a using statement
    private string ShowDialog(string text, string caption)
    {
        prompt = new Form()
        {
            Width = 500,
            Height = 150,
            FormBorderStyle = FormBorderStyle.FixedDialog,
            Text = caption,
            StartPosition = FormStartPosition.CenterScreen,
            TopMost = true
        };
        Label textLabel = new Label() { Left = 50, Top = 20, Text = text, Dock = DockStyle.Top, TextAlign = ContentAlignment.MiddleCenter };
        TextBox textBox = new TextBox() { Left = 50, Top = 50, Width = 400 };
        Button confirmation = new Button() { Text = "Ok", Left = 350, Width = 100, Top = 70, DialogResult = DialogResult.OK };
        confirmation.Click += (sender, e) => { prompt.Close(); };
        prompt.Controls.Add(textBox);
        prompt.Controls.Add(confirmation);
        prompt.Controls.Add(textLabel);
        prompt.AcceptButton = confirmation;

        return prompt.ShowDialog() == DialogResult.OK ? textBox.Text : "";
    }

    public void Dispose()
    {
        //See Marcus comment
        if (prompt != null) { 
            prompt.Dispose(); 
        }
    }
}

การดำเนินงาน:

using(Prompt prompt = new Prompt("text", "caption")){
    string result = prompt.Result;
}

2
ใช้การจัดการหน่วยความจำได้ดี แต่จะล้มเหลวเมื่อเพิ่มปุ่มยกเลิกเนื่องจากจุดpromptนั้นเป็นโมฆะ การแก้ไขง่ายๆเพื่ออนุญาตให้ยกเลิกพรอมต์คือการแทนที่prompt.Dispose();ภายในpublic void Dispose()ด้วยif (prompt != null) { prompt.Dispose(); }
Marcus Parsons

3

จากผลงานของ Bas Brekelmans ข้างต้นฉันได้สร้างอนุพันธ์สองรายการ -> กล่องโต้ตอบ "อินพุต" ที่อนุญาตให้คุณได้รับจากผู้ใช้ทั้งค่าข้อความและบูลีน (TextBox และ CheckBox):

public static class PromptForTextAndBoolean
{
    public static string ShowDialog(string caption, string text, string boolStr)
    {
        Form prompt = new Form();
        prompt.Width = 280;
        prompt.Height = 160;
        prompt.Text = caption;
        Label textLabel = new Label() { Left = 16, Top = 20, Width = 240, Text = text };
        TextBox textBox = new TextBox() { Left = 16, Top = 40, Width = 240, TabIndex = 0, TabStop = true };
        CheckBox ckbx = new CheckBox() { Left = 16, Top = 60, Width = 240, Text = boolStr };
        Button confirmation = new Button() { Text = "Okay!", Left = 16, Width = 80, Top = 88, TabIndex = 1, TabStop = true };
        confirmation.Click += (sender, e) => { prompt.Close(); };
        prompt.Controls.Add(textLabel);
        prompt.Controls.Add(textBox);
        prompt.Controls.Add(ckbx);
        prompt.Controls.Add(confirmation);
        prompt.AcceptButton = confirmation;
        prompt.StartPosition = FormStartPosition.CenterScreen;
        prompt.ShowDialog();
        return string.Format("{0};{1}", textBox.Text, ckbx.Checked.ToString());
    }
}

... และข้อความพร้อมกับตัวเลือกหนึ่งในหลายตัวเลือก (TextBox และ ComboBox):

public static class PromptForTextAndSelection
{
    public static string ShowDialog(string caption, string text, string selStr)
    {
        Form prompt = new Form();
        prompt.Width = 280;
        prompt.Height = 160;
        prompt.Text = caption;
        Label textLabel = new Label() { Left = 16, Top = 20, Width = 240, Text = text };
        TextBox textBox = new TextBox() { Left = 16, Top = 40, Width = 240, TabIndex = 0, TabStop = true };
        Label selLabel = new Label() { Left = 16, Top = 66, Width = 88, Text = selStr };
        ComboBox cmbx = new ComboBox() { Left = 112, Top = 64, Width = 144 };
        cmbx.Items.Add("Dark Grey");
        cmbx.Items.Add("Orange");
        cmbx.Items.Add("None");
        Button confirmation = new Button() { Text = "In Ordnung!", Left = 16, Width = 80, Top = 88, TabIndex = 1, TabStop = true };
        confirmation.Click += (sender, e) => { prompt.Close(); };
        prompt.Controls.Add(textLabel);
        prompt.Controls.Add(textBox);
        prompt.Controls.Add(selLabel);
        prompt.Controls.Add(cmbx);
        prompt.Controls.Add(confirmation);
        prompt.AcceptButton = confirmation;
        prompt.StartPosition = FormStartPosition.CenterScreen;
        prompt.ShowDialog();
        return string.Format("{0};{1}", textBox.Text, cmbx.SelectedItem.ToString());
    }
}

ทั้งสองอย่างต้องการการใช้งานเดียวกัน:

using System;
using System.Windows.Forms;

เรียกพวกเขาว่า:

เรียกพวกเขาว่า:

PromptForTextAndBoolean.ShowDialog("Jazz", "What text should accompany the checkbox?", "Allow Scat Singing"); 

PromptForTextAndSelection.ShowDialog("Rock", "What should the name of the band be?", "Beret color to wear");

2

คำตอบของ Bas Brekelmans นั้นหรูหรามากในความเรียบง่าย แต่ฉันพบว่าสำหรับแอปพลิเคชันจริงจำเป็นต้องมีมากกว่านี้เช่น:

  • ขยายรูปแบบให้เหมาะสมเมื่อข้อความยาวเกินไป
  • ไม่ป๊อปอัปโดยอัตโนมัติตรงกลางหน้าจอ
  • ไม่มีการตรวจสอบความถูกต้องของอินพุตของผู้ใช้

คลาสนี้จัดการกับข้อ จำกัด เหล่านี้: http://www.codeproject.com/Articles/31315/Getting-User-Input-With-Dialogs-Part-1

ฉันเพิ่งดาวน์โหลดซอร์สและคัดลอก InputBox.cs ลงในโปรเจ็กต์ของฉัน

น่าแปลกใจที่ไม่มีสิ่งที่ดีไปกว่านี้ ...


คำตอบที่ดี แต่อยู่นอกขอบเขตของคำถามที่ถาม
Munim Munna

1

น่าเสียดายที่ C # ยังไม่มีความสามารถนี้ใน libs ในตัว ทางออกที่ดีที่สุดในปัจจุบันคือการสร้างคลาสแบบกำหนดเองด้วยวิธีการที่ปรากฏขึ้นในรูปแบบเล็ก ๆ หากคุณกำลังทำงานใน Visual Studio คุณสามารถทำได้โดยคลิกที่โครงการ> เพิ่มคลาส

เพิ่มคลาส

Visual C # items> code> class เพิ่มคลาส 2

ตั้งชื่อคลาสPopUpBox (คุณสามารถเปลี่ยนชื่อได้ในภายหลังหากต้องการ) และวางรหัสต่อไปนี้:

using System.Drawing;
using System.Windows.Forms;

namespace yourNameSpaceHere
{
    public class PopUpBox
    {
        private static Form prompt { get; set; }

        public static string GetUserInput(string instructions, string caption)
        {
            string sUserInput = "";
            prompt = new Form() //create a new form at run time
            {
                Width = 500, Height = 150, FormBorderStyle = FormBorderStyle.FixedDialog, Text = caption,
                StartPosition = FormStartPosition.CenterScreen, TopMost = true
            };
            //create a label for the form which will have instructions for user input
            Label lblTitle = new Label() { Left = 50, Top = 20, Text = instructions, Dock = DockStyle.Top, TextAlign = ContentAlignment.TopCenter };
            TextBox txtTextInput = new TextBox() { Left = 50, Top = 50, Width = 400 };

            ////////////////////////////OK button
            Button btnOK = new Button() { Text = "OK", Left = 250, Width = 100, Top = 70, DialogResult = DialogResult.OK };
            btnOK.Click += (sender, e) => 
            {
                sUserInput = txtTextInput.Text;
                prompt.Close();
            };
            prompt.Controls.Add(txtTextInput);
            prompt.Controls.Add(btnOK);
            prompt.Controls.Add(lblTitle);
            prompt.AcceptButton = btnOK;
            ///////////////////////////////////////

            //////////////////////////Cancel button
            Button btnCancel = new Button() { Text = "Cancel", Left = 350, Width = 100, Top = 70, DialogResult = DialogResult.Cancel };
            btnCancel.Click += (sender, e) => 
            {
                sUserInput = "cancel";
                prompt.Close();
            };
            prompt.Controls.Add(btnCancel);
            prompt.CancelButton = btnCancel;
            ///////////////////////////////////////

            prompt.ShowDialog();
            return sUserInput;
        }

        public void Dispose()
        {prompt.Dispose();}
    }
}

คุณจะต้องเปลี่ยนเนมสเปซเป็นสิ่งที่คุณใช้ วิธีนี้จะส่งคืนสตริงดังนั้นนี่คือตัวอย่างของวิธีการใช้งานในวิธีการโทรของคุณ:

bool boolTryAgain = false;

do
{
    string sTextFromUser = PopUpBox.GetUserInput("Enter your text below:", "Dialog box title");
    if (sTextFromUser == "")
    {
        DialogResult dialogResult = MessageBox.Show("You did not enter anything. Try again?", "Error", MessageBoxButtons.YesNo);
        if (dialogResult == DialogResult.Yes)
        {
            boolTryAgain = true; //will reopen the dialog for user to input text again
        }
        else if (dialogResult == DialogResult.No)
        {
            //exit/cancel
            MessageBox.Show("operation cancelled");
            boolTryAgain = false;
        }//end if
    }
    else
    {
        if (sTextFromUser == "cancel")
        {
            MessageBox.Show("operation cancelled");
        }
        else
        {
            MessageBox.Show("Here is the text you entered: '" + sTextFromUser + "'");
            //do something here with the user input
        }

    }
} while (boolTryAgain == true);

วิธีนี้จะตรวจสอบสตริงที่ส่งคืนเพื่อหาค่าข้อความสตริงว่างหรือ "ยกเลิก" (เมธอด getUserInput ส่งคืน "ยกเลิก" หากคลิกปุ่มยกเลิก) และดำเนินการตามนั้น หากผู้ใช้ไม่ได้ป้อนอะไรเลยและคลิกตกลงระบบจะแจ้งให้ผู้ใช้ทราบและถามว่าต้องการยกเลิกหรือป้อนข้อความอีกครั้ง

โพสต์บันทึก: ในการใช้งานของฉันเองฉันพบว่าคำตอบอื่น ๆ ทั้งหมดขาดหายไป 1 ข้อต่อไปนี้:

  • ปุ่มยกเลิก
  • ความสามารถในการมีสัญลักษณ์ในสตริงที่ส่งไปยังเมธอด
  • วิธีเข้าถึงวิธีการและจัดการกับค่าที่ส่งคืน

ดังนั้นฉันจึงโพสต์วิธีแก้ปัญหาของตัวเอง ฉันหวังว่าจะมีคนพบว่ามีประโยชน์ ขอมอบเครดิตให้กับผู้แสดงความคิดเห็น Bas และ Gideon + สำหรับการมีส่วนร่วมของคุณคุณช่วยฉันหาวิธีแก้ปัญหาที่ใช้งานได้!


0

นี่คือเวอร์ชัน refactored ของฉันซึ่งยอมรับ multiline / single เป็นตัวเลือก

   public string ShowDialog(string text, string caption, bool isMultiline = false, int formWidth = 300, int formHeight = 200)
        {
            var prompt = new Form
            {
                Width = formWidth,
                Height = isMultiline ? formHeight : formHeight - 70,
                FormBorderStyle = isMultiline ? FormBorderStyle.Sizable : FormBorderStyle.FixedSingle,
                Text = caption,
                StartPosition = FormStartPosition.CenterScreen,
                MaximizeBox = isMultiline
            };

            var textLabel = new Label
            {
                Left = 10,
                Padding = new Padding(0, 3, 0, 0),
                Text = text,
                Dock = DockStyle.Top
            };

            var textBox = new TextBox
            {
                Left = isMultiline ? 50 : 4,
                Top = isMultiline ? 50 : textLabel.Height + 4,
                Multiline = isMultiline,
                Dock = isMultiline ? DockStyle.Fill : DockStyle.None,
                Width = prompt.Width - 24,
                Anchor = isMultiline ? AnchorStyles.Left | AnchorStyles.Top : AnchorStyles.Left | AnchorStyles.Right
            };

            var confirmationButton = new Button
            {
                Text = @"OK",
                Cursor = Cursors.Hand,
                DialogResult = DialogResult.OK,
                Dock = DockStyle.Bottom,
            };

            confirmationButton.Click += (sender, e) =>
            {
                prompt.Close();
            };

            prompt.Controls.Add(textBox);
            prompt.Controls.Add(confirmationButton);
            prompt.Controls.Add(textLabel);

            return prompt.ShowDialog() == DialogResult.OK ? textBox.Text : string.Empty;
        }

-2

นี่คือตัวอย่างใน VB.NET

Public Function ShowtheDialog(caption As String, text As String, selStr As String) As String
    Dim prompt As New Form()
    prompt.Width = 280
    prompt.Height = 160
    prompt.Text = caption
    Dim textLabel As New Label() With { _
         .Left = 16, _
         .Top = 20, _
         .Width = 240, _
         .Text = text _
    }
    Dim textBox As New TextBox() With { _
         .Left = 16, _
         .Top = 40, _
         .Width = 240, _
         .TabIndex = 0, _
         .TabStop = True _
    }
    Dim selLabel As New Label() With { _
         .Left = 16, _
         .Top = 66, _
         .Width = 88, _
         .Text = selStr _
    }
    Dim cmbx As New ComboBox() With { _
         .Left = 112, _
         .Top = 64, _
         .Width = 144 _
    }
    cmbx.Items.Add("Dark Grey")
    cmbx.Items.Add("Orange")
    cmbx.Items.Add("None")
    cmbx.SelectedIndex = 0
    Dim confirmation As New Button() With { _
         .Text = "In Ordnung!", _
         .Left = 16, _
         .Width = 80, _
         .Top = 88, _
         .TabIndex = 1, _
         .TabStop = True _
    }
    AddHandler confirmation.Click, Sub(sender, e) prompt.Close()
    prompt.Controls.Add(textLabel)
    prompt.Controls.Add(textBox)
    prompt.Controls.Add(selLabel)
    prompt.Controls.Add(cmbx)
    prompt.Controls.Add(confirmation)
    prompt.AcceptButton = confirmation
    prompt.StartPosition = FormStartPosition.CenterScreen
    prompt.ShowDialog()
    Return String.Format("{0};{1}", textBox.Text, cmbx.SelectedItem.ToString())
End Function
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.