我的对话框返回值不起作用

时间:2009-08-18 17:42:34

标签: c# visual-studio-2008

我有一个自定义表单,它将值返回到主窗体,但它没有看到变量。我不认为我这么说得很清楚,所以我会包含我想要做的例子的链接。

我知道我可能会忽略一些非常简单或明显的东西,但这就是我所拥有的。

Form1.cs中:

private void addTime_Click(object sender, EventArgs e)
{
    Form add = new addTime(false, new string[] { "", "" });
    if (add.ShowDialog(this) == DialogResult.OK)
    {
        // the line not working
        Label1.Text = add.Details;
        // reports with:'System.Windows.Forms.Form' does not contain a
        // definition for 'Details' and no extension method 'Details' accepting       
        // a first argument of type 'System.Windows.Forms.Form' could be found (are you
        // missing a using directive or an assembly reference?)
    }
}

addTime.cs:

internal class addTime : Form
{
    //..

    private string _details;
    public string Details
    {
        get { return _details; }
        private set { _details = value; }
    }

    private string _goalTime;
    public string GoalTime
    {
        get { return _goalTime; }
        private set { _goalTime = value; }
    }

    private void applybtn_Click(object sender, EventArgs e)
    {
        Details = detailslbl.Text;
        GoalTime = goalTimelbl.Text;
    }
}

3 个答案:

答案 0 :(得分:5)

你的'add'变量是Form类型,而不是addTime,而Form类型没有Details属性。

请尝试使用此行:

addTime add = new addTime(false, new string[] { "", "" });

答案 1 :(得分:3)

您需要设置子表单的DialogResult属性

DialogResult = DialogResult.OK 
单击按钮

答案 2 :(得分:0)

您需要将表单的dialogResult属性设置为OK。您尚未在代码中指定它。

在满足正确的标准后,您可以这样设置。

If (//condition)
{
this.DialogResult = DialogResult.OK;
This.Close();
}