Thank you for clarification of your requirements.
There are many
ComboBox
events you may want to use, important one is the one used to hide the
ToolTip
. This works for me and will give you and idea what else to display in the
ToolTip
, and what event:
ComboBox cb = new ComboBox();
cb.Items.Add("first");
cb.Items.Add("second");
this.Controls.Add(cb);
System.Windows.Forms.ToolTip tooltip = new ToolTip();
tooltip.ShowAlways = true;
cb.MouseLeave += (sender, eventArgs) => {
tooltip.Hide(cb);
};
cb.MouseMove += (sender, eventArgs) => {
if (cb.SelectedItem == null)
tooltip.SetToolTip(cb, string.Format("Mouse: {0}, {1}", eventArgs.X, eventArgs.Y));
else
tooltip.SetToolTip(
cb,
string.Format(
"Mouse: {0}, {1}; selected: {2}",
eventArgs.X, eventArgs.Y, cb.SelectedItem));
};
cb.SelectedValueChanged += (sender, eventArgs) => {
if (cb.SelectedItem != null)
tooltip.SetToolTip(cb, string.Format("Selected: {0}", cb.SelectedItem));
};
cb.SelectionChangeCommitted += (sender, eventArgs) => {
if (cb.SelectedItem != null)
tooltip.SetToolTip(cb, string.Format("Selection committed: {0}", cb.SelectedItem));
};
Pay attention:
tooltip.ShowAlways
(!).
Note for those using C# version prior to v.3, before lambda syntax was introduced: use different syntax for anonymous delegate:
cb.MouseMove += delegate(object sender, MouseEventArgs eventArgs) {
}
Have fun!
—SA