У меня есть поле со списком значений (5, 10, 15, 20).
Когда пользователь выбирает значение, я хочу, чтобы оно отображалось в процентах (5%, 10%, 15%, 20%).
Я играл с форматной строкой, используя значение ##%, но это не сработало.
FormatString должен работать, но он умножит число на 100. Вероятно, вы хотите добавить 0 перед вашей строкой для обработки 0%.
Этот код работал для меня.
private void Form1_Load(object sender, EventArgs e) { this.comboBox1.FormatString = "##0%"; comboBox1.Items.Add(0); comboBox1.Items.Add(0.33); comboBox1.Items.Add(0.50); comboBox1.Items.Add(0.67); comboBox1.Items.Add(1); }
Хммм, это очень странная проблема, я никак не мог ее решить. Если вы хотите, чтобы нормальные числа отображались в вашем выпадающем списке, а последний (после выбора) измените его текст. Я сделал это таким образом (выглядит очень забавно), и это действительно решает эту проблему:)
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { Thread th = new Thread(() => comboBox1.Invoke((Action)(() => comboBox1.Text += @"%"))){ IsBackground = true }; th.Start(); }
Вы можете создать собственное поле со списком на основе элемента управления маскированным текстовым полем или отформатировать их вручную. Если ваш пользователь не может ввести свои собственные значения, просто введите их в предварительно отформатированном виде. Если они могут, отформатируйте их вручную, когда в поле со списком возникает событие «изменилось».
Вы можете установить значение 5, 10, 15, 20 и отображаемый элемент 5%, 10%, 15% и т. Д.