Я новичок в C # и стараюсь избежать дублирования кода. У меня есть родительская форма и куча подчиненных форм. Все подчиненные формы содержат код, который сериализует текстовые поля и отправляет их общему объекту интерфейса:
public partial class Normal : UserControl
{
Interfacer normintobj = new Interfacer(STATCTRL.NORMDIST);
public Normal()
{
InitializeComponent();
}
private void z_tb_KeyDown(object sender, KeyEventArgs e)
{
sendinfo(e,STATMAIN.VINP_Z_NORMAL);
}
private void serializethensendinfo()
{
normintobj.tbs[0] = UITest.testui(z_tb.Text);
normintobj.tbs[1] = UITest.testui(Mean_tb.Text);
normintobj.tbs[2] = UITest.testui(sd_tb.Text);
normintobj.tbs[3] = UITest.testui(left_tb.Text);
normintobj.tbs[4] = UITest.testui(tt_tb.Text);
}
private void unserializethensendinfo()
{
z_tb.Text = Convert.ToString(normintobj.tbs[0]);
Mean_tb.Text = Convert.ToString(normintobj.tbs[1]);
sd_tb.Text = Convert.ToString(normintobj.tbs[2]);
left_tb.Text = Convert.ToString(normintobj.tbs[3]);
tt_tb.Text = Convert.ToString(normintobj.tbs[4]);
}
private void sendinfo(KeyEventArgs e,int field)
{
serializethensendinfo();
normintobj.chk_tb_type(ref textBlock1, field, e);
unserializethensendinfo();
}
private void sendinfo(int field)
{
serializethensendinfo();
normintobj.chk_tb_type(ref textBlock1, field);
unserializethensendinfo();
}
private void Mean_tb_KeyDown(object sender, KeyEventArgs e)
{
sendinfo(e,STATMAIN.NORMDIST_MID);
}
private void sd_tb_KeyDown(object sender, KeyEventArgs e)
{
sendinfo(e,STATMAIN.NORMDIST_MID);
}
private void left_tb_KeyDown(object sender, KeyEventArgs e)
{
sendinfo(e, STATMAIN.VOUT_LEFT_NORMAL);
}
private void tt_tb_KeyDown(object sender, KeyEventArgs e)
{
sendinfo(e,STATMAIN.VOUT_LEFT_NORMAL);
}
private void z_tb_LostFocus(object sender, RoutedEventArgs e)
{
sendinfo( STATMAIN.VINP_Z_NORMAL);
}
private void Mean_tb_LostFocus(object sender, RoutedEventArgs e)
{
sendinfo(STATMAIN.NORMDIST_MID);
}
private void sd_tb_LostFocus(object sender, RoutedEventArgs e)
{
sendinfo(STATMAIN.NORMDIST_MID);
}
private void left_tb_LostFocus(object sender, RoutedEventArgs e)
{
sendinfo(STATMAIN.VOUT_LEFT_NORMAL);
}
private void tt_tb_LostFocus(object sender, RoutedEventArgs e)
{
sendinfo(STATMAIN.VOUT_TWO_NORMAL);
}
У меня реальная проблема с serializethensendinfo, unserializeandsendinfo и перегруженными методами sendinfo ... Я обнаружил, что обрезаю и вставляю одни и те же функции во все мои подчиненные формы (около 20 из них), но затем меняю имена текстовых полей , Как избежать дублирования кода, когда все текстовые поля имеют разные имена?