3

I was trying to find out how to create an input messagebox in C#. I found the solution which uses the inputbox of visualbasic.

I will tell how to do for those who are not aware. Add Microsoft VisualBasic dll to your project. Use the namespace where you need it.

protected void btnUpdateComment_Click(object sender, EventArgs e)
{
   string str = Microsoft.VisualBasic.Interaction.InputBox("", "Edit your comment and Click Ok", "Default");
   label1.Text = str;
}

You see the codes above are about WinForm. But how to cope with that in an ASP.NET?

Alwyn Miranda
  • 370
  • 3
  • 5
  • 18
  • Creating an input box in Windows.Forms is pretty much trivial (and I assume you are using Windows.Forms if you are spitting out a VB inputbox). I could advise against using the VB input box for so many reasons... one of them being the lack of control of the aforementioned box (for, for example, focusing it). – Jcl Jan 21 '14 at 08:08
  • any advise on what could be used instead of visual basic inputbox? ... – Alwyn Miranda Jan 21 '14 at 08:15
  • Create own class for InputBox – Vignesh Kumar A Jan 21 '14 at 08:16

4 Answers4

1

Unfortunately C# doesn't have its own implementation of the InputBox method so what you have is correct:

Microsoft.VisualBasic.Interaction.InputBox("How Old are you?","Age Box","22")

However if you add a using statement you can have shorter syntax in your code

using Microsoft.VisualBasic;

public void Message()
{
    Interaction.InputBox("How Old are you?","Age Box","22");
}

Here is a duplicate of the question: What is the C# version of VB.net's InputDialog? And a Social.Msdn post: Social MSDN Link

Community
  • 1
  • 1
JEV
  • 2,494
  • 4
  • 33
  • 47
  • Thank you Sir. But my problem is of getting focussed. The input dialogue box opens as expected. But it opens behind the windows. By the way I am using this in asp.net web application. (not windows application) – Alwyn Miranda Jan 22 '14 at 08:02
0

Create A InputBox Class and Use It.

You Won't have Focus problem here

Source

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;

namespace WindowsApplication1
{

    #region InputBox return result

    /// <summary>
    /// Class used to store the result of an InputBox.Show message.
    /// </summary>
    public class InputBoxResult 
    {
        public DialogResult ReturnCode;
        public string Text;
    }

    #endregion

    /// <summary>
    /// Summary description for InputBox.
    /// </summary>
    public class InputBox
    {

        #region Private Windows Contols and Constructor

        // Create a new instance of the form.
        private static Form frmInputDialog;
        private static Label lblPrompt;
        private static Button btnOK;
        private static Button btnCancel;
        private static TextBox txtInput;

        public InputBox()
        {
        }

        #endregion

        #region Private Variables

        private static string _formCaption = string.Empty;
        private static string _formPrompt = string.Empty;
        private static InputBoxResult _outputResponse = new InputBoxResult();
        private static string _defaultValue = string.Empty;
        private static int _xPos = -1;
        private static int _yPos = -1;

        #endregion

        #region Windows Form code

        private static void InitializeComponent()
        {
            // Create a new instance of the form.
            frmInputDialog = new Form();
            lblPrompt = new Label();
            btnOK = new Button();
            btnCancel = new Button();
            txtInput = new TextBox();
            frmInputDialog.SuspendLayout();
            // 
            // lblPrompt
            // 
            lblPrompt.Anchor = ((AnchorStyles)((((AnchorStyles.Top | AnchorStyles.Bottom) | AnchorStyles.Left) | AnchorStyles.Right)));
            lblPrompt.BackColor = SystemColors.Control;
            lblPrompt.Font = new Font("Microsoft Sans Serif", 8.25F, FontStyle.Regular, GraphicsUnit.Point, ((Byte)(0)));
            lblPrompt.Location = new Point(12, 9);
            lblPrompt.Name = "lblPrompt";
            lblPrompt.Size = new Size(302, 82);
            lblPrompt.TabIndex = 3;
            // 
            // btnOK
            // 
            btnOK.DialogResult = DialogResult.OK;
            btnOK.FlatStyle = FlatStyle.Popup;
            btnOK.Location = new Point(326, 8);
            btnOK.Name = "btnOK";
            btnOK.Size = new Size(64, 24);
            btnOK.TabIndex = 1;
            btnOK.Text = "&OK";
            btnOK.Click += new EventHandler(btnOK_Click);
            // 
            // btnCancel
            // 
            btnCancel.DialogResult = DialogResult.Cancel;
            btnCancel.FlatStyle = FlatStyle.Popup;
            btnCancel.Location = new Point(326, 40);
            btnCancel.Name = "btnCancel";
            btnCancel.Size = new Size(64, 24);
            btnCancel.TabIndex = 2;
            btnCancel.Text = "&Cancel";
            btnCancel.Click += new EventHandler(btnCancel_Click);
            // 
            // txtInput
            // 
            txtInput.Location = new Point(8, 100);
            txtInput.Name = "txtInput";
            txtInput.Size = new Size(379, 20);
            txtInput.TabIndex = 0;
            txtInput.Text = "";
            // 
            // InputBoxDialog
            // 
            frmInputDialog.AutoScaleBaseSize = new Size(5, 13);
            frmInputDialog.ClientSize = new Size(398, 128);
            frmInputDialog.Controls.Add(txtInput);
            frmInputDialog.Controls.Add(btnCancel);
            frmInputDialog.Controls.Add(btnOK);
            frmInputDialog.Controls.Add(lblPrompt);
            frmInputDialog.FormBorderStyle = FormBorderStyle.FixedDialog;
            frmInputDialog.MaximizeBox = false;
            frmInputDialog.MinimizeBox = false;
            frmInputDialog.Name = "InputBoxDialog";
            frmInputDialog.ResumeLayout(false);
        }

        #endregion

        #region Private function, InputBox Form move and change size

        static private void LoadForm()
        {
            OutputResponse.ReturnCode = DialogResult.Ignore;
            OutputResponse.Text = string.Empty;

            txtInput.Text = _defaultValue;
            lblPrompt.Text = _formPrompt;
            frmInputDialog.Text = _formCaption;

            // Retrieve the working rectangle from the Screen class
            // using the PrimaryScreen and the WorkingArea properties.
            System.Drawing.Rectangle workingRectangle = Screen.PrimaryScreen.WorkingArea;

            if((_xPos >= 0 && _xPos < workingRectangle.Width-100) && (_yPos >= 0 && _yPos < workingRectangle.Height-100))
            {
                frmInputDialog.StartPosition = FormStartPosition.Manual;
        frmInputDialog.Location = new System.Drawing.Point(_xPos, _yPos);
            }
            else
                frmInputDialog.StartPosition = FormStartPosition.CenterScreen;


            string PrompText = lblPrompt.Text;

            int n = 0;
            int Index = 0;
            while(PrompText.IndexOf("\n",Index) > -1)
            {
                Index = PrompText.IndexOf("\n",Index)+1;
                n++;
            }

            if( n == 0 )
                n = 1;

            System.Drawing.Point Txt = txtInput.Location; 
            Txt.Y = Txt.Y + (n*4);
            txtInput.Location = Txt; 
            System.Drawing.Size form = frmInputDialog.Size; 
            form.Height = form.Height + (n*4);
            frmInputDialog.Size = form; 

            txtInput.SelectionStart = 0;
            txtInput.SelectionLength = txtInput.Text.Length;
            txtInput.Focus();
        }

        #endregion

        #region Button control click event

        static private void btnOK_Click(object sender, System.EventArgs e)
        {
            OutputResponse.ReturnCode = DialogResult.OK;
            OutputResponse.Text = txtInput.Text;
            frmInputDialog.Dispose();
        }

        static private void btnCancel_Click(object sender, System.EventArgs e)
        {
            OutputResponse.ReturnCode = DialogResult.Cancel;
            OutputResponse.Text = string.Empty; //Clean output response
            frmInputDialog.Dispose();
        }

        #endregion

        #region Public Static Show functions

        static public InputBoxResult Show(string Prompt)
        {
            InitializeComponent();
            FormPrompt = Prompt;

            // Display the form as a modal dialog box.
            LoadForm();
            frmInputDialog.ShowDialog();
            return OutputResponse;
        }

        static public InputBoxResult Show(string Prompt,string Title)
        {
            InitializeComponent();

            FormCaption = Title;
            FormPrompt = Prompt;

            // Display the form as a modal dialog box.
            LoadForm();
            frmInputDialog.ShowDialog();
            return OutputResponse;
        }

        static public InputBoxResult Show(string Prompt,string Title,string Default)
        {
            InitializeComponent();

            FormCaption = Title;
            FormPrompt = Prompt;
            DefaultValue = Default;

            // Display the form as a modal dialog box.
            LoadForm();
            frmInputDialog.ShowDialog();
            return OutputResponse;
        }

        static public InputBoxResult Show(string Prompt,string Title,string Default,int XPos,int YPos)
        {
            InitializeComponent();
            FormCaption = Title;
            FormPrompt = Prompt;
            DefaultValue = Default;
            XPosition = XPos;
            YPosition = YPos;

            // Display the form as a modal dialog box.
            LoadForm();
            frmInputDialog.ShowDialog();
            return OutputResponse;
        }

        #endregion

        #region Private Properties

        static private string FormCaption
        {
            set
            {
                _formCaption = value;
            }
        } // property FormCaption

        static private string FormPrompt
        {
            set
            {
                _formPrompt = value;
            }
        } // property FormPrompt

        static private InputBoxResult OutputResponse
        {
            get
            {
                return _outputResponse;
            }
            set
            {
                _outputResponse = value;
            }
        } // property InputResponse

        static private string DefaultValue
        {
            set
            {
                _defaultValue = value;
            }
        } // property DefaultValue

        static private int XPosition
        {
            set
            {
                if( value >= 0 )
                    _xPos = value;
            }
        } // property XPos

        static private int YPosition
        {
            set
            {
                if( value >= 0 )
                    _yPos = value;
            }
        } // property YPos

        #endregion 
    }
}
Vignesh Kumar A
  • 27,863
  • 13
  • 63
  • 115
  • I put this in cs file and tried to call in my main file. But still it opens behind the windows. By the way I am using this in asp.net web application. (not windows application) :) – Alwyn Miranda Jan 22 '14 at 08:04
0

Alwyn Miranda:

If you are using asp.net application, you should use Prompt instead of this, for "InputBox" is only for WinForm. And you can accept the value via javascript by saving into a hiddenfield and fetch the value in the Form_Load by using HiddenField's Id.Value

  • I need to use input box function by clicking server side button since I am useing server side variables. Prompt is javascript function working with client side variables. And also there can be the possibility of having multiple server side variable so I dont think saving the variables in hidden values may help. – Alwyn Miranda Jan 22 '14 at 08:51
  • So Any idea how to pop up input msg box by clicking a asp button? – Alwyn Miranda Jan 22 '14 at 08:52
  • Use javascript, something like: For more you can refer: http://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_prompt –  Jan 22 '14 at 09:03
0

You obviously can't use neither a VB (or Windows.Forms) kind of inputbox on a web application. The only reason you are seeing the inputbox is because the server is probably on your own machine (is the server creating the inputbox, not the web client). If you ever run a different client from a different machine, you won't see the inputbox at all (it'll open in the server, and probably will stall waiting for the input).

You'll have to use a web browser method of inputting data, but since you are indeed trying to open a Windows form in a web application, I guess your understanding of how web client/server applications work is just wrong, and you should begin by getting to understand this, which is way beyond the scope of this question (and Stack Overflow in general).

Jcl
  • 27,696
  • 5
  • 61
  • 92