Эти коды ниже работают.Но они длинные, поэтому я хотел создать метод (для этого нужно сделать много других TryParsing, это всего лишь небольшой раздел).
private void button_Click(object sender, EventArgs e)
{
bool resSPos = double.TryParse(txtSPos.Text, out double SPos);
if (resSPos == false) FalseBoolMsg("Starting Position");
bool resTPos = double.TryParse(txtTPos.Text, out double TPos);
if (resTPos == false) FalseBoolMsg("Target Position");
bool resIncr = double.TryParse(txtIncr.Text, out double Increment);
if (resIncr == false) FalseBoolMsg("Increment");
Ch.FunctionA(Ch.FunctionX, SomeInt, Increment, Ch.FunctionY);
Ch.FunctionB(SomeInt, SPos, Ch.FunctionY);
Ch.FunctionA(0, SomeInt, TPos, Ch.FunctionZ);
}
«FalseBoolMsg» - это просто метод, который я определил выше длягенерирование MessageBox.«txtSPos», «txtTPos» и «txtIncr» - это просто текстовые поля в моей форме Windows.Во всяком случае, ниже то, что я пытался, но не получилось.Я пробовал несколько вариантов, но безрезультатно.В основном, у меня проблема с параметром 'double' больше, чем со строковыми.
private void TryParseDouble(string ParseTarget, string PointField, string FieldInMsg)
{
bool resBool = double.TryParse(ParseTarget, out double PointField);
if (resBool == false) FalseBoolMsg(FieldInMsg);
}
private void button_Click(object sender, EventArgs e)
{
TryParseDouble("txtSPos.Text", "SPos", "Starting Position");
TryParseDouble("txtTPos.Text", "TPos", "Target Position");
TryParseDouble("txtIncr.Text", "Increment", "Increment");
Ch.FunctionA(Ch.FunctionX, SomeInt, Increment, Ch.FunctionY);
Ch.FunctionB(SomeInt, SPos, Ch.FunctionY);
Ch.FunctionA(0, SomeInt, TPos, Ch.FunctionZ);
}
Да, я могу изменить "string PointField" на "double PointField" в моем методе, но это означает, что я долженвведите действительное число, когда я вспоминаю метод, вместо того, чтобы вводить имя для замены «PointField».Мне также нужны функции для чтения «двойного имени», созданного TryParse из моего метода.Спасибо за ваше внимание.
Редактировать: Я нашел ответ благодаря Джону ( Какой правильный метод или ключевое слово следует добавить в определяемый пользователем метод, который переименовывает переменную в C #? )
private bool TryParseDouble(string ParseTarget, out double PointField, string FieldInMsg)
{
if (!double.TryParse(ParseTarget, out PointField))
{
FalseBoolMsg(FieldInMsg);
return false;
}
return true;
}
private void button_Click(object sender, EventArgs e)
{
TryParseDouble(txtSPos.Text, out double SPos, "Starting Position");
}