C#:为什么 ShowDialog().ToString() 不返回预期的字符串?

标签 c# overriding tostring showdialog

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

最佳答案

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

关于C#:为什么 ShowDialog().ToString() 不返回预期的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4475139/

相关文章:

java - 如何调用父类(super class)的重写方法?

java - 强制一个类覆盖 .equals 方法

c# - 扩展 csv 字符串中的通配符以生成 csv 字符串集合?

c# - 从 CodeLens 中排除 <see cref ="class"> xmldoc 引用?

c# - windows phone 7开发的MVVM框架推荐

php - 覆盖类常量与属性

c# - 多个资源文件与单个资源文件

javascript - 无法将对象转换为 Selenium 中的字符串

java - 在 toString 中打印 Arraylist,并用行分隔每个条目

java - 带有方法 toString() 的新类