, но я не уверен, как получить выделение текста, прежде чем он был сдувается изменения размера
Вы можете собрать это в виде ResizeBegin
события.
private int _start;
private int _length;
private void Form1_ResizeBegin(object sender, EventArgs e)
{
_start = comboBox1.SelectionStart;
_length = comboBox1.SelectionLength;
}
private void Form1_ResizeEnd(object sender, EventArgs e)
{
comboBox1.SelectionStart = _start;
comboBox1.SelectionLength = _length;
}
Или постоянно установить его обратно, когда выпадающий изменяет размер (также может быть сделано в форме изменения размера само событие для грубой, зависит, как вам нравится). С помощью этой опции пользователь не увидит никаких изменений. В приведенном выше примере весь текст будет выбран при изменении размера формы. В нижнем случае это не будет.
private int _start;
private int _length;
private void Form1_ResizeBegin(object sender, EventArgs e)
{
_start = comboBox1.SelectionStart;
_length = comboBox1.SelectionLength;
}
private void comboBox1_Resize(object sender, EventArgs e)
{
comboBox1.SelectionStart = _start;
comboBox1.SelectionLength = _length;
}
В качестве альтернативы вы можете сделать это для различных событий, например, когда форма теряет фокус и т.д.
private int _start;
private int _length;
private void Form1_ResizeBegin(object sender, EventArgs e)
{
SaveComboBoxSelectionState(comboBox1);
}
private void comboBox1_Resize(object sender, EventArgs e)
{
SetComboBoxSelection(comboBox1, _start, _length);
}
private void Form1_Deactivate(object sender, EventArgs e)
{
SaveComboBoxSelectionState(comboBox1);
}
private void Form1_Activated(object sender, EventArgs e)
{
SetComboBoxSelection(comboBox1, _start, _length);
}
private void SaveComboBoxSelectionState(ComboBox comboBox)
{
_start = comboBox.SelectionStart;
_length = comboBox.SelectionLength;
}
private void SetComboBoxSelection(ComboBox comboBox, int start, int length)
{
comboBox.SelectionStart = start;
comboBox.SelectionLength = length;
}