#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