在C#中使用ShowDialog()显示消息

在C#中使用ShowDialog()显示消息,c#,showdialog,C#,Showdialog,我想使用show dialog()以另一种形式显示消息。如何显示消息?这是我试过的 //return total return total; //change total to string total = total.ToString; //create an instance of the MessageForm class MessageForm myMessageForm = new MessageForm(); //Display the form myMessageFor

我想使用show dialog()以另一种形式显示消息。如何显示消息?这是我试过的

//return total 
return total; 

//change total to string 
total = total.ToString;

//create an instance of the MessageForm class
MessageForm myMessageForm = new MessageForm();

//Display the form
myMessageForm.ShowDialog(total);

这给了我一个错误消息。我不知道如何用另一种形式来表示总数。有什么建议吗?

您传递的合计值应该是此新表单的所有者

您可能希望实现以下目标:

// remove the return line

total = total.ToString();

//create an instance of the MessageForm class
MessageForm myMessageForm = new MessageForm();

// set the total value which is now a property on message form
myMessageForm.Total = total;

//Display the form
myMessageForm.ShowDialog();
您还必须将这个新属性添加到MessageForm类中

// decide the visibility yourself (e.g. public vs internal)
internal string Total { get; set; }

您还应该考虑是否希望在构造函数中传递总数而不是属性。如果您有其他调用MessageForm的现有类,这可能需要进行一些重构。

之后的
return
将不会运行,即使没有返回,ShowDialog也不会接受参数。您需要向窗体的构造函数中添加一个值,或者向窗体中添加一个属性并将该属性设置为总计。它给您带来了什么错误?除了上面的注释,线程还需要有适当的线程单元(STA)。错误信息是什么?它发生在returntotal语句之前还是之后?请不要在后面说。最好在构造函数中传递该值,以避免该值未更新到UI,或由试图设置另一个线程拥有的值的线程引发异常。同样对于您的MessageBox示例,这不是一个坏主意,但是指定它是可选的而不是直接的答案可能会让您获得更好的视图,因为它与OP使用的系统不一致。(使用他自己的自定义视图)我想这会更好,但您假设他的表单具有
Total
属性(根据他调用ShowDialog的方式,更好的猜测可能是他有一个接受“total”字符串的构造函数,因此
MessageForm myMessageForm=new MessageForm(total);
也是一个很好的猜测)。似乎除了明显的“remove the return statement”之外,我们还没有足够的信息给出一个好的答案和“不要将字符串传递给
ShowDialog
”@caleb OP从未提及此属性是必需的,因此在做出此类假设之前需要额外的信息。如果需要参数,请使用构造函数(如果没有参数,表单将无法启动)。对具有可接受默认值的参数使用属性,因此完全可以不分配它们。谢谢Amir,您的回答很有帮助。现在我收到错误消息“不包含.Total的定义(关于myMessageForm.Total)。如何添加访问器。也无法将double转换为字符串。我需要解析方法吗?或者可能不需要转换?@dijit您需要修改MessageForm的实现。正如其他人所提到的,您可以添加一个接受总值的构造函数,并决定如何处理总值。其他选项仅为添加用于合计的属性(参见更新的注释)