簡體   English   中英

C#調用帶有形式參數的十進制方法

[英]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,需要對象引用錯誤。 第二個正確地引用了您在上一行中創建的該類的實例。

您還需要更改以設置RichTextBoxtext屬性,因為您不能為其分配字符串:

rtbOutp.Text = txtInp.Text + " cm = " + cmVoInch.Conversion(decimal.Parse(txtInp.Text));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM