Как сохранить размер шрифта 2 текстовых поля или равных размеров

#vb.net #textbox #richtextbox #font-size

Вопрос:

У меня есть 2 текстовых поля, я правильно увеличиваю размер шрифта обоих одновременно с помощью кнопки с этим кодом. Проблема в следующем: когда я увеличиваю масштаб непосредственно на сенсорном экране и/или случайно увеличиваю 2 пальца на сенсорной панели над одним из них, он тоже увеличивается, но затем я не могу вернуть равные значения, нажав кнопку, оба текстовых поля получают разный размер шрифта. Нажатие кнопки продолжает увеличивать каждый текст на 1 пункт, но при разных размерах я должен настроить вручную (снова увеличить масштаб таким же образом на 2 пальца), чтобы вернуть ближайший размер в измененном.

 

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
RichTextBox1.Font = New Font(RichTextBox1.Font.FontFamily, RichTextBox1.Font.Size   1,RichTextBox1.Font.Style)
RichTextBox2.Font = RichTextBox1.Font
End Sub


 

Комментарии:

1. Это немного похоже на предположение, но попробуйте создать два новых Font объекта вместо одного, который вы используете в двух местах.

2. Кроме того, вам следует избавиться от существующих Font объектов, если вы больше не собираетесь их использовать.

3. Вот так?: RichTextBox1.Font.Dispose() RichTextBox2.Font.Dispose() RichTextBox1.Font = New Font(RichTextBox1.Font.FontFamily, RichTextBox1.Font.Size 1, RichTextBox1.Font.Style) RichTextBox2.Font = New Font(RichTextBox1.Font.FontFamily, RichTextBox1.Font.Size 1, RichTextBox1.Font.Style) Я пытаюсь, но не получается, все равно у каждого свой размер

4. Не так. Порядок неправильный, и вы используете неправильный источник для создания второго Font . Я опубликую ответ, чтобы я мог четко опубликовать код, хотя я подозреваю, что он все равно не сработает.

5. Вы говорите о размере шрифта, ZoomFactor свойстве RichTextBox или масштабировании жестов? Все это разные настройки среды. Если вы хотите синхронизировать аспект двух элементов управления, вам необходимо синхронизировать все факторы.

Ответ №1:

Я не уверен, что это сработает, но, согласно моему предложению, попробуйте создать два новых Font объекта из одного источника и избавиться от старых, когда вы полностью закончите с ними.

 'We have no need of the second Font any more.
RichTextBox2.Font.Dispose()

'Get the first Font to use as a source.
Dim font1 = RichTextBox1.Font

'Create two new Fonts and assign them.
RichTextBox1.Font = New Font(font1.FontFamily, font1.Size   1, font1.Style)
RichTextBox2.Font = New Font(font1.FontFamily, font1.Size   1, font1.Style)

'We have no need of the first Font any more.
font1.Dispose()
 

Комментарии:

1. все еще работает так же… два пальца на сенсорной панели или открытие сенсорного экрана 2 пальцами над одним из них, и это сходит с ума: каждый из них принимает свой собственный размер, невозможно синхронизировать один и тот же размер шрифта. кажется, что при увеличении сенсорной панели она увеличивается другим неизвестным способом, который не контролируется только размером шрифта… Я прочитал выше об Zoomfactor игнорируемом свойстве, предложенном @Jimi, затем я пытаюсь вернуть его на 1, но безуспешно: RichTextBox1.ZoomFactor = 1