如何在VB.net中从另一个窗体更改窗体的不透明度

如何在VB.net中从另一个窗体更改窗体的不透明度,vb.net,forms,winforms,opacity,Vb.net,Forms,Winforms,Opacity,一种简单的方法来改变一个窗体和另一个窗体的不透明度 在主窗体中,您要更改其不透明度,我将其命名为MainForm制作一个文本框,将其命名为ChangeSettingsTextBox,在您要使用它更改其他窗体不透明度的窗体中,创建一个轨迹栏并将其命名为OpacityTrackBar,您可以使用文本框或其他东西。。。并将此代码添加到主窗体 Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles Change

一种简单的方法来改变一个窗体和另一个窗体的不透明度

在主窗体中,您要更改其不透明度,我将其命名为MainForm制作一个文本框,将其命名为ChangeSettingsTextBox,在您要使用它更改其他窗体不透明度的窗体中,创建一个轨迹栏并将其命名为OpacityTrackBar,您可以使用文本框或其他东西。。。并将此代码添加到主窗体

Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles ChangeSettingsTextBox.TextChanged
    Me.Opacity = ChangeSettingsTextBox.Text
End Sub
当你想打开我命名的窗体时,设置会改变主窗体的不透明度

设置。显示

在更改器表格中添加此代码:

Private Sub OpacityTrackBar_Scroll(sender As Object, e As EventArgs) Handles OpacityTrackBar.Scroll
    MainForm.ChangeSettingsTextBox.Text = OpacityTrackBar.Value / 100
End Sub
我认为您不能从另一个窗体更改窗体的不透明度,因为它类似于必须从类内部更改的内部属性,但仍然可以从窗体外部更改textbox的值,因为它不是窗体对象特殊属性的一部分…当您更改textbox值时…您是从主窗体内部更改它,因此此时您可以更改窗体属性,因为程序现在正在主窗体的结构内部工作。首先,不透明度是双重的。Doing Me.Opacity=ChangeSettingsTextBox.Text正在设置一个等于字符串的double属性。你应该换成双人的

Me.Opacity = Double.Parse(ChangeSettingsTextBox.Text)
将Option Strict置于代码填充的顶部将帮助您查看所有类型不匹配

假设有两种形式:Form1和Form2。表单2将有一个Form1 MainForm的实例,并将在OpacityTrackBar.Scroll处理程序中设置不透明度

公开课表格2 私有主窗体作为新窗体1 私有子窗体2\u Loadsender作为对象,e作为EventArgs处理MyBase.Load 主窗体。显示 OpacityTrackBar.最小值=0 OpacityTrackBar.最大值=100 端接头 私有子OpacityTrackBar_Scrollsender作为对象,e作为事件args处理OpacityTrackBar.Scroll MainForm.Opacity=OpacityTrackBar.Value/100 端接头 末级
将其放入文本框并处理TextBox.TextChanged事件似乎过于复杂。

您的意思是MainForm.Opacity=OpacityTrackBar.Value/100假设OpacityTrackBar从0变为100。在VB.Net中,您可以使用如下表单的默认实例。如果从MainForm调用设置,则可以将所有者设置为Settings.ShowMe,在本例中,我是MainForm的实例,或者任何其他打开它的表单。然后可以在设置中设置Me.Owner.Opacity=OpacityTrackBar.Value/100。所以你不必关心打开设置的表单是什么:它总是它的所有者和我。所有者属性正在引用它的当前实例。你是对的,谢谢你的帮助^ ^非常感谢你……我花了几个小时来寻找一种方法,我带来了……但是你的解决方案更好谢谢你这么快的回答