DataGridView
コントロールの名前が列の名前と一致するときに、選択した行から値を取得し、それらをフォームのいくつかの異なるコントロールに割り当てたいと思います( TextBox
、ComboBox
およびがありNumericUpDown
ます)。
これは私が現在コントロールを設定している方法です:
Form myForm = new Form();
if (comboBoxTable.Text == "Client")
{
myForm = new EditClientDataWindow();
}
else if (comboBoxTable.Text == "Agency")
{
myForm = new EditAgencyDataWindow();
}
else if (comboBoxTable.Text == "Medicine")
{
myForm = new EditMedicineDataWindow();
}
string val;
foreach (Control c in myForm.Controls)
{
for (int i = 0; i < dataGridViewMDB.ColumnCount; i++)
{
val = dataGridViewMDB.SelectedRows[0].Cells[i].Value.ToString();
if (dataGridViewMDB.Columns[i].Name.ToString() ==
c.Name.ToLower().Replace(c.GetType().ToString().ToLower().Replace("system.windows.forms.", ""), ""))
{
if (c is NumericUpDown)
(c as NumericUpDown).Value = Convert.ToInt32(val);
else
c.Text = val;
}
}
}
を除いてNumericUpDown
、他のタイプのコントロールは正しく設定されています。の場合NumericUpDown
、デフォルトの -1 値しか取得できません。の代わりにdecimal.Parse()
andも使用しようとしましたが、結果に変化はありません。Convert.ToDecimal()
Convert.ToInt32()
の範囲はNumericUpDown
-1 から 999 に設定されていました。