Как изменить непрозрачность формы из другой формы в VB.net - PullRequest
0 голосов
/ 10 октября 2019

простой способ изменить непрозрачность формы другой формы

В основной форме вы хотите изменить ее непрозрачность (которую я назвал MainForm), создайте текстовое поле, назовите его ChangeSettingsTextBox и в форме, котораяВы хотите использовать его для изменения непрозрачности другой формы, создайте TrackBar и назовите его OpacityTrackBar (вы можете использовать текстовое поле или что-то еще ...) и добавьте этот код в MainForm

Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles ChangeSettingsTextBox.TextChanged
    Me.Opacity = ChangeSettingsTextBox.Text
End Sub

Когда вы хотитечтобы открыть форму (которую я назвал «Настройки»), которая изменит непрозрачность основной формы

Settings.Show ()

в форме смены добавить этот код:

Private Sub OpacityTrackBar_Scroll(sender As Object, e As EventArgs) Handles OpacityTrackBar.Scroll
    MainForm.ChangeSettingsTextBox.Text = OpacityTrackBar.Value / 100
End Sub

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

1 Ответ

1 голос
/ 10 октября 2019

Прежде всего, Opacity является двойным. Выполнение Me.Opacity = ChangeSettingsTextBox.Text устанавливает двойное свойство, равное строке. Вы должны преобразовать в двойное значение, то есть

Me.Opacity = Double.Parse(ChangeSettingsTextBox.Text)

. Поместив Option Strict On в верхней части заливки кода, вы увидите все несоответствия типов.


Предположим, у вас есть дваформы: Form1 и Form2. Форма 2 будет иметь экземпляр Form1 (MainForm) и установит непрозрачность в обработчике OpacityTrackBar.Scroll

Public Class Form2
    Private MainForm As New Form1()
    Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        MainForm.Show()
        OpacityTrackBar.Minimum = 0
        OpacityTrackBar.Maximum = 100
    End Sub
    Private Sub OpacityTrackBar_Scroll(sender As Object, e As EventArgs) Handles OpacityTrackBar.Scroll
        MainForm.Opacity = OpacityTrackBar.Value / 100
    End Sub
End Class

Помещение его в TextBox и обработка события TextBox.TextChanged представляется слишком сложным.

...