2

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

为什么 keypad.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();
            ...
4

4 回答 4

7

因为该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();
    }
}
于 2010-12-17T22:05:27.697 回答
3

因为您没有调用 KeyPad.ToString(),所以您调用的是 DialogResult.ToString()。ShowDialog() 返回一个 DialogResult。

于 2010-12-17T22:05:17.490 回答
2

您调用的方法ShowDialog()实际上显示了对话框

我认为你想做的是

keypad.ShowDialog();
String total = keypad.ToString();
于 2010-12-17T22:07:14.483 回答
2

ShowDialog 返回一个 DialogResult,而不是对表单的引用。

尝试更改为

String total;

if (keypad.ShowDialog() == DialogResult.OK)
{
    total = keypad.ToString(); 
}
于 2010-12-17T22:09:30.097 回答