[英]C# calling a decimal method with arguments in a form
所以我試圖這樣做,在我的課上,我有這個從cm到inch轉換的double方法:
public decimal Conversion(decimal Input)
{
return Input * (decimal)0.393701;
}
問題是當我嘗試以某種形式調用它時,需要向其發送參數。
public partial class frmCmVoInch : Form
{
public frmCmVoInch()
{
InitializeComponent();
}
public frmCmVoInch(mainForm parent)
{
InitializeComponent();
MdiParent = parent;
}
private void btnKonverzija_Click(object sender, EventArgs e)
{
decimal parsed;
decimal.TryParse(txtVlez.Text, out parsed);
CmVoInch cmVoInch = new CmVoInch(decimal.Parse(txtVlez.Text));
rtbIzlez = txtVlez.Text + " cm = " + cmVoInch.Konverzija(parsed);
}
}
但是它是String,即使將其轉換為十進制也不會接受。 有什么辦法可以解決這個問題?
問題不在於Conversion
方法。
問題是btnKonverzija_Click
方法返回void
並且您正在嘗試返回string
值。 你不能那樣做。
private void btnKonverzija_Click(object sender, EventArgs e)
{
CmVoInch cmVoInch = new CmVoInch(decimal.Parse(txtInp.Text));
return txtInp.Text + " cm = " + CmVoInch.Conversion(decimal.Parse(txtInp.Text));
}
注意 C#
是區分大小寫的語言,當前,您正在調用Converion
方法,就好像它屬於一個類一樣,而應使用cmVoInch.Conversion
而不是CmVoInch.Conversion
。
完整解決方案:
private void btnKonverzija_Click(object sender, EventArgs e)
{
CmVoInch cmVoInch = new CmVoInch(decimal.Parse(txtInp.Text));
rtbIzlez.Text = txtInp.Text + " cm = " + cmVoInch.Conversion(decimal.Parse(txtInp.Text));
}
這基本上是一個錯字:
rtbOutp = txtInp.Text + " cm = " + CmVoInch.Conversion(decimal.Parse(txtInp.Text));
應該:
rtbOutp = txtInp.Text + " cm = " + cmVoInch.Conversion(decimal.Parse(txtInp.Text));
請注意CmVoInch
的更改。 第一個是類型名稱,因此嘗試在沒有實例的情況下調用實例方法,因此對於非靜態字段方法或property,需要對象引用錯誤。 第二個正確地引用了您在上一行中創建的該類的實例。
您還需要更改以設置RichTextBox
的text屬性,因為您不能為其分配字符串:
rtbOutp.Text = txtInp.Text + " cm = " + cmVoInch.Conversion(decimal.Parse(txtInp.Text));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.