簡體   English   中英

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

[英]Can I add controls to the C# MessageBox?

我可以為標准消息框添加一些自定義控件以獲取讀取輸入值,例如用戶名和密碼的文本字段,或者我應該使用“確定,取消”按鈕和文本字段創建自定義winform?

相關: 哪個控件用於快速文本輸入(輸入框)?

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

嘗試這個

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

您需要創建一個自定義WinForm來執行此操作。 您可以通過在Show方法上返回DialogResult使其工作方式與MessageBox相同。

創建自己的。

創建自定義模式(或其他)輸入對話框並不是那么困難,您可以構建重用所需的可擴展性。

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); this將代表IWin32Window ......

得到的值的value將是選定的廢話,你可以執行你的邏輯..

if(value.Result == DialogResult.OK && !string.IsNullOrEmpty(value.SomeInput)){
    //TODO: Place logic....
}

您必須創建一個自定義表單來處理它。

如果您希望Form的行為與MessageBox類似,只需在Form上創建一個靜態Show()方法,該方法創建一個實例並向用戶顯示該框。 該靜態方法還可以處理從您的自定義表單返回您感興趣的值(很像DialogResult)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM