VB.net의 InputDialog의 C # 버전은 무엇입니까? VB.net InputBox의

VB.net InputBox의 C # 버전은 무엇입니까?



답변

에 대한 참조를 추가 Microsoft.VisualBasic, InputBoxMicrosoft.VisualBasic.Interaction네임 스페이스 :

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

에 대한 첫 번째 주장 만 prompt필수입니다


답변

그것을 요 ​​약하기:

  • C # 에는 없습니다 .
  • Microsoft.VisualBasic에 대한 참조를 추가하여 Visual Basic의 대화 상자를 사용할 수 있습니다.

    1. 에서 솔루션 탐색기 온 마우스 오른쪽 단추로 클릭 참조가 폴더.
    2. 참조 추가 …를 선택 하십시오.
    3. 에서 닷넷 (- 새로운 비주얼 스튜디오 verions에서 탭 조립 탭) – 선택 Microsoft.VisualBasic
    4. 확인을 클릭하십시오

그런 다음 앞에서 언급 한 코드를 사용할 수 있습니다.

string input = Microsoft.VisualBasic.Interaction.InputBox("Prompt", "Title", "Default", 0, 0);
  • 자신의 InputBox를 작성하십시오.
  • 다른 사람을 사용하십시오 .

즉, 처음에 입력 상자가 필요하다고 생각하는 것이 좋습니다. 대화는 항상 일을하는 가장 좋은 방법은 아니며 때로는 좋은 것보다 더 해를 끼칩니다. 그러나 특정 상황에 따라 다릅니다.


답변

대화 상자의 동적 생성. 취향에 맞게 사용자 정의 할 수 있습니다.

winform을 제외하고는 외부 의존성이 없습니다.

private static DialogResult ShowInputDialog(ref string input)
    {
        System.Drawing.Size size = new System.Drawing.Size(200, 70);
        Form inputBox = new Form();

        inputBox.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
        inputBox.ClientSize = size;
        inputBox.Text = "Name";

        System.Windows.Forms.TextBox textBox = new TextBox();
        textBox.Size = new System.Drawing.Size(size.Width - 10, 23);
        textBox.Location = new System.Drawing.Point(5, 5);
        textBox.Text = input;
        inputBox.Controls.Add(textBox);

        Button okButton = new Button();
        okButton.DialogResult = System.Windows.Forms.DialogResult.OK;
        okButton.Name = "okButton";
        okButton.Size = new System.Drawing.Size(75, 23);
        okButton.Text = "&OK";
        okButton.Location = new System.Drawing.Point(size.Width - 80 - 80, 39);
        inputBox.Controls.Add(okButton);

        Button cancelButton = new Button();
        cancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
        cancelButton.Name = "cancelButton";
        cancelButton.Size = new System.Drawing.Size(75, 23);
        cancelButton.Text = "&Cancel";
        cancelButton.Location = new System.Drawing.Point(size.Width - 80, 39);
        inputBox.Controls.Add(cancelButton);

        inputBox.AcceptButton = okButton;
        inputBox.CancelButton = cancelButton;

        DialogResult result = inputBox.ShowDialog();
        input = textBox.Text;
        return result;
    }

용법

string input="hede";
ShowInputDialog(ref input);


답변

없어요 C #에서 VB InputBox를 실제로 사용하려면 할 수 있습니다. Microsoft.VisualBasic.dll에 대한 참조를 추가하면 찾을 수 있습니다.

그러나 나는 그것을 사용 하지 않는 것이 좋습니다 . 추악하고 구식 IMO입니다.


답변

프로젝트의 참조 목록에 Microsoft.VisualBasic을 추가해야 할뿐만 아니라 ‘using Microsoft.VisualBasic; 따라서 Microsoft.VisualBasic.Interaction.Inputbox 대신 ‘Interaction.Inputbox ( “…”)’를 사용해야합니다.


답변

사용자가 입력 한 문자열을 반환합니다. 그들이 맞으면 빈 문자열 Cancel:

    public static String InputBox(String caption, String prompt, String defaultText)
    {
        String localInputText = defaultText;
        if (InputQuery(caption, prompt, ref localInputText))
        {
            return localInputText;
        }
        else
        {
            return "";
        }
    }

반환 StringA와 심판 반환 매개 변수 true가 충돌하는 경우 OK, 또는 false그들이 공격하는 경우 Cancel:

    public static Boolean InputQuery(String caption, String prompt, ref String value)
    {
        Form form;
        form = new Form();
        form.AutoScaleMode = AutoScaleMode.Font;
        form.Font = SystemFonts.IconTitleFont;

        SizeF dialogUnits;
        dialogUnits = form.AutoScaleDimensions;

        form.FormBorderStyle = FormBorderStyle.FixedDialog;
        form.MinimizeBox = false;
        form.MaximizeBox = false;
        form.Text = caption;

        form.ClientSize = new Size(
                    Toolkit.MulDiv(180, dialogUnits.Width, 4),
                    Toolkit.MulDiv(63, dialogUnits.Height, 8));

        form.StartPosition = FormStartPosition.CenterScreen;

        System.Windows.Forms.Label lblPrompt;
        lblPrompt = new System.Windows.Forms.Label();
        lblPrompt.Parent = form;
        lblPrompt.AutoSize = true;
        lblPrompt.Left = Toolkit.MulDiv(8, dialogUnits.Width, 4);
        lblPrompt.Top = Toolkit.MulDiv(8, dialogUnits.Height, 8);
        lblPrompt.Text = prompt;

        System.Windows.Forms.TextBox edInput;
        edInput = new System.Windows.Forms.TextBox();
        edInput.Parent = form;
        edInput.Left = lblPrompt.Left;
        edInput.Top = Toolkit.MulDiv(19, dialogUnits.Height, 8);
        edInput.Width = Toolkit.MulDiv(164, dialogUnits.Width, 4);
        edInput.Text = value;
        edInput.SelectAll();


        int buttonTop = Toolkit.MulDiv(41, dialogUnits.Height, 8);
        //Command buttons should be 50x14 dlus
        Size buttonSize = Toolkit.ScaleSize(new Size(50, 14), dialogUnits.Width / 4, dialogUnits.Height / 8);

        System.Windows.Forms.Button bbOk = new System.Windows.Forms.Button();
        bbOk.Parent = form;
        bbOk.Text = "OK";
        bbOk.DialogResult = DialogResult.OK;
        form.AcceptButton = bbOk;
        bbOk.Location = new Point(Toolkit.MulDiv(38, dialogUnits.Width, 4), buttonTop);
        bbOk.Size = buttonSize;

        System.Windows.Forms.Button bbCancel = new System.Windows.Forms.Button();
        bbCancel.Parent = form;
        bbCancel.Text = "Cancel";
        bbCancel.DialogResult = DialogResult.Cancel;
        form.CancelButton = bbCancel;
        bbCancel.Location = new Point(Toolkit.MulDiv(92, dialogUnits.Width, 4), buttonTop);
        bbCancel.Size = buttonSize;

        if (form.ShowDialog() == DialogResult.OK)
        {
            value = edInput.Text;
            return true;
        }
        else
        {
            return false;
        }
    }

    /// <summary>
    /// Multiplies two 32-bit values and then divides the 64-bit result by a 
    /// third 32-bit value. The final result is rounded to the nearest integer.
    /// </summary>
    public static int MulDiv(int nNumber, int nNumerator, int nDenominator)
    {
        return (int)Math.Round((float)nNumber * nNumerator / nDenominator);
    }

참고 : 모든 코드는 공개 도메인으로 릴리스됩니다. 속성이 필요하지 않습니다.


답변

Microsoft.VisualBasic이 함수에 대한 참조를 추가 하고 사용하십시오.

string response =  Microsoft.VisualBasic.Interaction.InputBox("What's 1+1?", "Title", "2", 0, 0);

마지막 2 개의 숫자는 입력 대화 상자를 표시 할 X / Y 위치입니다.