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();
...
答案 0 :(得分: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();
}
}
答案 1 :(得分:3)
因为您没有调用KeyPad.ToString(),所以您调用了DialogResult.ToString()。 ShowDialog()返回一个DialogResult。
答案 2 :(得分:2)
您正在调用的方法ShowDialog()
实际上显示了对话框
我认为你想要做的是
keypad.ShowDialog();
String total = keypad.ToString();
答案 3 :(得分:2)
ShowDialog返回一个DialogResult,而不是对表单的引用。
尝试更改为
String total;
if (keypad.ShowDialog() == DialogResult.OK)
{
total = keypad.ToString();
}