現在のプロジェクトは現在進行中ですが、問題がありました。プロジェクトが何をする必要があるのですか:リストの最大値と最小値
特定の日付の範囲から最高と最低温度を探します。日付の範囲は、ユーザによって入力される。
だから、私は(両方の新しい形態の)項目を入力し、最大値と最小値を求めるためのメインメニューとしてフォームを作ります。私はアイテム格納するためのクラスも行います。最初の形式で
public class TempDate
{
public double Temp { get; set; }
public DateTime Date { get; set; }
}
を、ちょうどFormAddData
それを呼び出す、ここからのアイテムは、テキストボックスを使用してリストに格納され、ここでのコードがあります:
private void buttonSubmit_Click(object sender, EventArgs e)
{
FormMenu formMenu = (FormMenu)this.Owner;
DateTime date = dateTimePickerDate.Value.Date;
double temp = double.Parse(textBoxTemp.Text);
TempDate tempDate = new TempDate();
tempDate.Date = date;
tempDate.Temp = temp;
formMenu.listOfTempDate.Add(tempDate);
listBoxInfo.Items.Add(date + "\t" + temp + "°C");
}
FormMaxMinRange
という2番目の形式です。このフォームでは、開始日には最初の1つ、終了日には2つ目のDateTimePicker
を使用します。ここからは、開始日と終了日から使用した範囲のすべての項目を選択するボタンを作成する必要があります。問題は、最小値がの範囲内で選択されなかったが、
public partial class FormMenu : Form
{
public List<TempDate> listOfTempDate = new List<TempDate>();
public FormMenu()
{
InitializeComponent();
}
private void fromCertainRangeToolStripMenuItem_Click(object sender, EventArgs e)
{
FormMaxMinRange formMaxMinRange = new FormMaxMinRange();
formMaxMinRange.Owner = this;
formMaxMinRange.ShowDialog();
}
}
しかし:
private void buttonMaxMin_Click(object sender, EventArgs e)
{
FormMenu formMenu = (FormMenu)this.Owner;
DateTime start = dateTimePickerStart.Value.Date;
DateTime end = dateTimePickerEnd.Value.Date;
int highest = 0;
double max = formMenu.listOfTempDate[0].Temp;
int lowest = 0;
double min = formMenu.listOfTempDate[0].Temp;
for (int i = 1; i < formMenu.listOfTempDate.Count; i++)
{
if (formMenu.listOfTempDate[i].Date >= start
&& formMenu.listOfTempDate[i].Date <= end)
{
if (formMenu.listOfTempDate[i].Temp > max)
{
highest = i;
max = formMenu.listOfTempDate[i].Temp;
}
if (formMenu.listOfTempDate[i].Temp < min)
{
lowest = i;
min = formMenu.listOfTempDate[i].Temp;
}
}
}
listBoxMaxMin.Items.Add("");
listBoxMaxMin.Items.Add("Lowest temp: " + min + ", on " + formMenu.listOfTempDate[lowest].Date);
listBoxMaxMin.Items.Add("Highest temp: " + max + ", on " + formMenu.listOfTempDate[highest].Date);
}
ここでは(リストを含む)に、私はクラスを宣言したメインフォームだ:ここに私のコードです選択。また、最大値と最小値がリストボックスに表示されます。長くて奇妙な質問には申し訳ありません。私は誰かが私のプロジェクトを完了するためにこの質問で私が何を意味するのか理解することができれば幸いですありがとうございました。
アイテムをコードに直接保存しましたか? –
これはあなたがそれを行う方法の単なる例です。 'loTempDateList'はあなたの' formMenu.listOfTempDate'で、 'ldStart、ldEnd'は' start、end'です – PinBack
textBoxを使って日付と時刻を入力するとどうなりますか? –