我可以在C#MessageBox中添加控件吗?

时间:2010-10-08 16:40:36

标签: c# .net winforms messagebox

我是否可以为标准消息框添加一些自定义控件以获取读取输入值,例如用户名和密码的文本字段,或者我应该使用“确定,取消”按钮和文本字段创建自定义winform?

相关:Which control to use for quick text input (inputbox)?

4 个答案:

答案 0 :(得分:9)

您可以使用位于Microsoft.VisualBasic命名空间中的Interaction.InputBox方法

试试这个

 Microsoft.VisualBasic.Interaction.InputBox("Enter a Value Here", "Title", "Your Default Text",200,100);

答案 1 :(得分:4)

您需要创建自定义WinForm才能执行此操作。通过在Show方法上返回DialogResult,可以使它的工作方式与MessageBox相同。

答案 2 :(得分:2)

创建自己的。

创建自定义模态(或其他)输入对话框并不是那么困难,您可以构建重用所需的可扩展性。

public class ValueHolder {
    public string SomeInput { get; set; }
    public DialogResult Result { get; set; }
}

public class GimmeValues : Form {
    //... HAS A TEXTBOX and Okay Buttons...

    private GimmeValues() {        
        okButton.DialogResult = DialogResult.OK;
        cancelButton.DialogResult = DialogResult.Cancel;
        // ... other stuff
    }

    public static ValueHolder GetInput(IWin32Window owner) {
        using (GimmeValues values = new GimmeValues()) {
            DialogResult result = values.ShowDialog(owner);
            return new ValueHolder { 
                SomeInput = values.Textbox1.Text,
                Result = result
            };
        }
    }
}

好的,我刚刚在这个编辑器中写了所有内容,请原谅任何语法错误 您可以执行类似上述操作但稍微清理一下,添加您需要的可扩展性(根据按钮和输入显示您需要等等)...然后只需将其称为ValueHolder value = GimmeValues.GetInput(this);,其中{{1}将表示this ...

IWin32Window的结果值将是选定的废话,你可以执行你的逻辑..

value

答案 3 :(得分:0)

您必须创建一个自定义表单来处理它。

如果希望Form的行为与MessageBox类似,只需在Form上创建一个静态Show()方法,该方法创建一个实例并向用户显示该框。该静态方法还可以处理从您的自定义表单返回您感兴趣的值(很像DialogResult)。