static Control OrdinaryQuestionWidget(Racr.AstNode n) { Widget w; if (n.Type() == ValueTypes.Boolean) { w = new CheckWidget(n.GetLabel()); var cb = w.GetCheckBox(); cb.CheckedChanged += (object sender, EventArgs e) => { if (!cb.ContainsFocus) return; n.SetValue(cb.Checked); n.Root().Render(); }; } else { w = new TextWidget(n.GetLabel()); var tb = w.GetTextBox(); tb.TextChanged += (object sender, EventArgs e) => { if (!tb.ContainsFocus) return; if (n.Type() == ValueTypes.Number) { try { n.SetValue(Convert.ToDouble(tb.Text)); } catch { return; } } else n.SetValue(tb.Text); n.Root().Render(); }; } n.Parent().Widget().Controls.Add(w); return w; }