これは宿題です(私はいつもそれを指摘するようにしていますので、前もって書いておきます)。プログラムは変換プログラムです。ユーザーは、コンボ ボックスから変換オプションを選択し、長さ (つまり、フィートからメートル) を入力すると、プログラムは変換を計算します。配列部分が混乱しているので、いくつか質問があります。正しい方向に進んでいることを確認したかったのです。
配列を使用してコンボボックスにデータを入力していると思います(完全には理解していませんが、提供されている例を使用しました)。ユーザーが計算ボタンを押したときに、コンバージョン値を同じ配列に保存する必要がありますか? 何かのようなもの:
string [,] conversions = { {kilometers to miles, .11111}, {miles to kilometers, .11111}}
それとも、私が持っているもので正しい方向に向かっていますか? コード化されているので明確にするために、配列がコンボボックスに入力されるため、余分なデータを追加すると、それらの数値がコンボボックスに表示されますが、これは実際には目的ではありません。
次の質問は、ユーザーが [計算] ボタンを押したときに、ユーザーが選択したオプションをどのように知るのでしょうか? インデックスと関係があると思いますが、実際に宣言しているものについては混乱していますか?
***** この質問は無視してください。私は答えを見つけたと思います*********
最後に、私の最後の質問は、ページのテキストボックスの横にラベルがあるため、ユーザーが「マイルからキロメートル」を選択すると、入力テキストボックスにマイルが表示され、回答テキストボックスにキロメートルが表示されるということです...それは何と呼ばれますか?私は私の本でそれを見つける必要があり、できません.何かが欠けていることは知っていますが、例または本のどこでそれがカバーされているかを見つけようとしていますが、単にそれが表示されていません.
以下は、私が現在持っている私のコードです。
public partial class FrmConversions : Form
{
const double Miles_To_Kilometers = 1.6093;
const double Kilometers_To_Miles = 0.6214;
const double Feet_To_Meters = 0.3048;
const double Meters_To_Feet = 3.2808;
const double Inches_To_Centimeters = 2.54;
const double Centimeters_To_Inches = 0.3937;
public FrmConversions()
{
InitializeComponent();
}
private void btnExit_Click(object sender, EventArgs e)
{
this.Close();
}
private void FrmConversions_Load(object sender, EventArgs e)
{
cboConversions.Items.Clear(); //clear the combobox
string[,] conversions =
{
{"Kilometers to Miles" , "Miles to Kilometers"},
{"Feet to Meters" , "Meters to Feet"},
{"Inches to Centimeters", "Centimeters to Inches"}
};
foreach (string str in conversions)
{
cboConversions.Items.Add(str);
}
}
private void btnClear_Click(object sender, EventArgs e)
{
txtEntry.Clear();
txtAnswer.Clear();
}
public bool IsDecimal(TextBox txtEntry, string name)
{
try
{
Convert.ToDecimal(txtEntry.Text);
return true;
}
catch (FormatException)
{
MessageBox.Show(name + " must be a decimal value.", "Entry Error");
txtEntry.Focus();
return false;
}
}
private void btnCalculate_Click(object sender, EventArgs e)
{
int index = cboConversions.SelectedIndex;
if (index != -1)
{
try
{
if (IsDecimal())
{
txtAnswer.Text = ToString;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message + "\n\n" +
ex.GetType().ToString() + "\n" +
ex.StackTrace, "exception");
}
}
}
}
}
}