簡體   English   中英

如何使用來自不同類的變量值 WPF C#

[英]How to use variable values from different classes WPF C#

我需要一些幫助來使用屬於另一個類中的一個類的變量。

我有包含WeeksStartDate屬性的Semester類。

在另一個類CalcDisplay我有方法CalculateStudyHours ,它應該根據Semester類的WeeksStartDate屬性計算學習時間。

我在 WPF 類中創建了一個Semester對象,並且正在傳遞用戶提供的構造函數weeksstartDate值。

 private void btnEnter_Click(object sender, RoutedEventArgs e)
 {
    int weeks = int.Parse(txtbWeeks.Text);
    DateTime startDate = (DateTime)dteDate.SelectedDate;

    Semester s = new Semester(weeks, startDate);

    ModuleListHandler.semesterDetails.Add(s);
    MessageBox.Show("Semester details added successfully");
    btnNext.Visibility = Visibility.Hidden;
}

Semester

namespace TimeManagementClassLibrary
{
    public class Semester
    {
        public int Weeks { get; set; }
        public DateTime StartDate { get; set; }

        //default constructor
        public Semester()
        {

        }

        public Semester(int weeks, DateTime startdate)
        {
            Weeks = weeks;
            StartDate = startdate;
        }
    }
}

CalcDisplay

public class CalcDisplay 
{
   //Method calculating study hours
   public double CalculateStudyHours()
   { 
      return (credits * 10 / weeks) - classHours;
   }          
}

creditsweeks參數傳遞給CalcDisplay類的最有效方法是什么?

除了我的評論,讓我們假設你有 3 個類:

public class Semester
{
    public int Weeks { get; set; }

    public Semester() { }
    public Semester(int weeks)
    {
        Weeks = weeks;
    }
}

public class Credit
{
    public int Credits { get; set; }

    public Credit() { }
    public Credit(int credits)
    {
        Credits = credits;
    }
}

public class SomeClass
{
    public int ClassHours { get; set; }

    public SomeClass() { }
    public SomeClass(int classHours)
    {
        ClassHours = classHours;
    }
}

您顯然會創建它們的實例並以某種方式設置/計算它的WeeksCreditsClassHours值。

然后你使用這些值作為參數傳遞給另一個類的某個方法:

public class CalcDisplay 
{ 
    // May be static as uses passed in arguments values, non class members
    public static double CalculateStudyHours(int credits, int weeks, int classHours) 
    {          
       return (credits * 10 / weeks) - classHours;            
    }
}

並從某個地方傳遞它們:

private void btnEnter_Click(object sender, RoutedEventArgs e)
{
    // Get values in some way
    int weeks = int.Parse(txtbWeeks.Text);
    int credits = int.Parse(txtbCredits.Text);
    int classHours = int.Parse(txtbClassHours.Text);

    // Create your instances
    Semester s = new Semester(weeks);
    Credit c = new Credit(credits);
    SomeClass sc = new SomeClass(classHours);

    // Then pass it's properties values
    double result = CalcDisplay.CalculateStudyHours(c.Credits, s.Weeks, sc.ClassHours);
}

或者CalcDisplay類可能有自己的字段/屬性,您可以通過其構造函數進行設置:

public class CalcDisplay 
{ 
    private int credits;
    private int weeks;
    private int classHours;

    // Constructor
    public CalcDisplay() {}
    public CalcDisplay(int credits, int weeks, int classHours) 
    {
        this.credits = credits;
        this.weeks = weeks;
        this.classHours = classHours;
    }

    // Non-static as we use class members
    public double CalculateStudyHours()
    {          
       return (credits * 10 / weeks) - classHours;            
    }
}

private void btnEnter_Click(object sender, RoutedEventArgs e)
{
    // ... same as upper

    CalcDisplay = new CalcDisplay(c.Credits, s.Weeks, sc.ClassHours);
    double result = c.CalculateStudyHours();
}

暫無
暫無

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

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