private void txtEvaluate_TextChanged(object sender, EventArgs e) { try { if (txtEvaluate.SelectionStart - 1 >= txtEvaluate.Text.Length) { return; } var typeAndAfter = StatementParser.GetTypeOfCurrentStatement(txtEvaluate.Text, txtEvaluate.SelectionStart - 1, thisObject, false); if (typeAndAfter.Key != null) { if (intellisense.CurrentType != typeAndAfter.Key) { Type fromType = typeAndAfter.Key; UpdateIntellisense(fromType); } if (txtEvaluate.Text.EndsWith(".")) { ShowIntellisense(); } intellisense.SelectCurrentPart(typeAndAfter.Value); } } catch (Exception) { if (intellisense.Visible) { intellisense.SetItems(new List <IntellisensePopup.ListItem>()); intellisense.CurrentType = null; intellisense.Hide(); } } try { if (txtEvaluate.SelectionStart - 1 >= txtEvaluate.Text.Length) { return; } var methods = StatementParser.GetCurrentMethodOverloads(txtEvaluate.Text, txtEvaluate.SelectionStart - 1, thisObject); if (methods.Count > 0) { string methodSignatures = string.Join(Environment.NewLine, methods.Select(m => m.ToSignatureString()).ToArray()); Point p = txtEvaluate.PointToScreen(txtEvaluate.GetPositionFromCharIndex(txtEvaluate.SelectionStart - 1)); p.Offset(16, -16 + -methods.Count * 10); p.Offset(-this.Location.X, -this.Location.Y); methodsToolTip.Show(methodSignatures, this, p); } else { methodsToolTip.Hide(this); } } catch (Exception) { methodsToolTip.Hide(this); } }