簡體   English   中英

C#:為什么沒有ShowDialog()。ToString()返回預期的String?

[英]C#: Why doesn't ShowDialog().ToString() return expected String?

labelTotal保存類Keypad(C#WinForms)的值。 已覆蓋ToString以返回labelTotal.Text。

namespace Gui3
{
    public partial class Keypad : Form
    {
        public Keypad()
        {
            InitializeComponent();
        }
        public override String ToString() {return labelTotal.Text;}
        private void buttonOk_Click(object sender, EventArgs e)
        {
            this.Close();
        }
        ...

為什么不鍵盤.ShowDialog()。ToString()返回labelTotal.Text?

namespace Gui3
{
    public partial class Setup : Form
    {
        public Setup()
        {
            InitializeComponent();
        }
        private void buttonStartDepth_Click(object sender, EventArgs e)
        {
            Keypad keypad = new Keypad();
            ////////// Not working as expected /////////
            String total = keypad.ShowDialog().ToString();
            ...

因為ShowDialog()方法返回System.Windows.Forms.DialogResult枚舉值,而不是表單的實例。 將在此函數返回的枚舉值上調用ToString()

您可以嘗試以下內容(假設keypad將正確返回DialogResult.OK ):

private void buttonStartDepth_Click(object sender, EventArgs e)
{
    Keypad keypad = new Keypad();

    if (keypad.ShowDialog() == DialogResult.OK)
    {
        String total = keypad.ToString();
    }
}

因為您沒有調用KeyPad.ToString(),所以您調用DialogResult.ToString()。 ShowDialog()返回一個DialogResult。

您調用ShowDialog()實際上顯示對話框

我想你想做的是

keypad.ShowDialog();
String total = keypad.ToString();

ShowDialog返回一個DialogResult,而不是對表單的引用。

嘗試改為

String total;

if (keypad.ShowDialog() == DialogResult.OK)
{
    total = keypad.ToString(); 
}

暫無
暫無

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

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