c# - VB.net के इनपुटडिअलॉग का सी # संस्करण क्या है?



6 Answers

इसका सारांश प्रस्तुत करना:

  • सी # में कोई नहीं है
  • आप माइक्रोसॉफ्ट के संदर्भ को जोड़कर विजुअल बेसिक से संवाद का उपयोग कर सकते हैं। विज़ुअल बेसिक:

    1. समाधान एक्सप्लोरर में संदर्भ फ़ोल्डर पर राइट-क्लिक करें।
    2. संदर्भ जोड़ें का चयन करें ...
    3. .NET टैब में (नए विजुअल स्टूडियो संस्करणों - असेंबली टैब में) - माइक्रोसॉफ्ट का चयन करें। विज़ुअल बेसिक
    4. ठीक पर क्लिक करें

फिर आप पहले उल्लिखित कोड का उपयोग कर सकते हैं:

string input = Microsoft.VisualBasic.Interaction.InputBox("Title", "Prompt", "Default", 0, 0);
  • अपना खुद का इनपुटबॉक्स लिखें।
  • किसी और का प्रयोग करें।

उस ने कहा, मेरा सुझाव है कि आप पहले स्थान पर इनपुट बॉक्स की आवश्यकता पर विचार करें। संवाद हमेशा चीजों को करने का सबसे अच्छा तरीका नहीं होते हैं और कभी-कभी वे अच्छे से ज्यादा नुकसान करते हैं - लेकिन यह विशेष स्थिति पर निर्भर करता है।

c# vb.net

VB.net के इनपुटडिअलॉग का सी # संस्करण क्या है?




एक नहीं है। यदि आप वास्तव में सी # इन वीबी इनपुटबॉक्स का उपयोग करना चाहते हैं तो आप कर सकते हैं। बस Microsoft.VisualBasic.dll के संदर्भ जोड़ें और आप इसे वहां पाएंगे।

लेकिन मैं इसका इस्तेमाल नहीं करने का सुझाव दूंगा। यह बदसूरत और पुराना आईएमओ है।




Microsoft.VisualBasic संदर्भ जोड़ें। VisualBasic और इस समारोह का उपयोग करें:

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

इनपुट संवाद प्रदर्शित करने के लिए अंतिम 2 संख्या एक एक्स / वाई स्थिति है।




उपयोगकर्ता द्वारा दर्ज की गई स्ट्रिंग देता है; खाली स्ट्रिंग अगर वे हिट रद्द करें :

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

String पैरामीटर के रूप में String को वापस लौटाता है, अगर वे ठीक से हिट करते हैं, या false तो false लौटते हैं:

    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);
    }

नोट : सार्वजनिक कोड में कोई भी कोड जारी किया गया है। कोई विशेषता आवश्यक है।




माइक्रोसॉफ्ट के संदर्भ को जोड़ने के बिना। VisualBasic:

// "dynamic" requires reference to Microsoft.CSharp
Type tScriptControl = Type.GetTypeFromProgID("ScriptControl");
dynamic oSC = Activator.CreateInstance(tScriptControl);

oSC.Language = "VBScript";
string sFunc = @"Function InBox(prompt, title, default) 
InBox = InputBox(prompt, title, default)    
End Function
";
oSC.AddCode(sFunc);
dynamic Ret = oSC.Run("InBox", "メッセージ", "タイトル", "初期値");

अधिक जानकारी के लिए इन्हें देखें:
ScriptControl
जेस्क्रिप्ट में संदेश बॉक्स
जेस्क्रिप्ट में इनपुट और संदेश बॉक्स

.NET 2.0:

string sFunc = @"Function InBox(prompt, title, default) 
InBox = InputBox(prompt, title, default)    
End Function
";

Type tScriptControl = Type.GetTypeFromProgID("ScriptControl");
object oSC = Activator.CreateInstance(tScriptControl);

// https://github.com/mono/mono/blob/master/mcs/class/corlib/System/MonoType.cs
// System.Reflection.PropertyInfo pi = tScriptControl.GetProperty("Language", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.CreateInstance| System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.SetProperty | System.Reflection.BindingFlags.IgnoreCase);
// pi.SetValue(oSC, "VBScript", null);

tScriptControl.InvokeMember("Language", System.Reflection.BindingFlags.SetProperty, null, oSC, new object[] { "VBScript" });
tScriptControl.InvokeMember("AddCode", System.Reflection.BindingFlags.InvokeMethod, null, oSC, new object[] { sFunc });
object ret = tScriptControl.InvokeMember("Run", System.Reflection.BindingFlags.InvokeMethod, null, oSC, new object[] { "InBox", "メッセージ", "タイトル", "初期値" });
Console.WriteLine(ret);



ऐसी कोई बात नहीं है: मैं इसे अपने लिए लिखने की सलाह देता हूं और जब चाहें इसका उपयोग करता हूं।




Related


Tags

c#   vb.net