2011-08-16 67 views
0

我的情況是這樣的。以兩種不同的不透明度顯示錶格

我有一個窗體作爲frmPopup有一個面板作爲pnlCtrlHolder。我將使用此窗體作爲彈出窗口,並在此面板中顯示第三個窗體作爲控件。

上X型

dim frm as frmPopup 
''Set the properties for this frmPopup 
frm.Opacity=60 

Dim frmContent as frmContent 
''Set the properties for this frmPopup 
frm.Opacity=100 

frm.SetForm(frmContent) 
frm.ShowDialog(me.toplevelControl) 

在frmPopup:

Public Sub SetForm(frm as Windows.Forms.Form) 
pnlCtrlHolder.Controls.Clear() 
pnlCtrlHolder.Controls.add(frm) 
End Sub 

現在我的問題, 這使得與frmContent不透明度= 60整個表格,但我需要這個只有frmPopup但不在frmContent上。

我正在使用vb.net Winforms應用程序。我知道我在不透明度爲60的窗體上添加了一個窗體作爲控件。但是有什麼方法可以實現所需的結果。 。我錯過了什麼嗎?

+0

此代碼無法像發佈一樣工作,必須先將表單的TopLevel屬性設置爲false,然後才能將其視爲子窗口。在這一點上,它也停止了對不透明度的修補,這隻適用於頂層窗口。 –

+0

這不是最終的代碼,而只是一個概念。這可能有幾個語法錯誤。 –

+0

爲什麼你使用「表單作爲控件」,你應該創建一個usercontrol –

回答

0

如何:

dim frm as New frmPopup 
frm.Opacity=60 
Dim frmContent as New frmContent 
frmContent.Opacity=100 
+0

嗨,約翰, 我的意思和你寫的一樣。 感謝您的回覆,但這不起作用。 –

+0

對不起,我的意思是寫:>> 暗淡FRM作爲新frmPopup frm.Opacity = 0.6 昏暗frmContent作爲新frmContent frmContent.Opacity = 1個 –

+0

DIM FRM作爲frmPopup是一個聲明。下一個陳述不能像frm是沒有用的。張貼更多的代碼,因爲這篇文章不能編譯。錯誤:frm在被賦值之前被使用。運行時可能導致空引用異常。 – Martin

0

對不起我的意思是不透明是零和一之間的值。

我知道這是因爲我剛剛嘗試過。 :-)

Public Class Form1 

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 

     Me.Opacity = 1 
     Dim newForm As New Form 
     newForm.Text = "NewForm" 
     newForm.Opacity = 0.6 
     newForm.Show() 

    End Sub 

End Class 

嘗試是這樣的:>>

dim frm as New frmPopup 
frm.Opacity=0.6 
Dim frmContent as New frmContent 
frmContent.Opacity=1 
+0

在frm上添加一個面板並在該面板中設置frmContent。 結果將作爲彈出式窗體添加到它的面板frmContent和frm將不透明度爲0.6。 試試這個,然後找我。 –

+0

如何在面板中設置frmContent? 你使用SetParent API調用嗎? –

0

如果你想設置你把面板中的窗體的不透明度那麼它看起來並不像它會顯示,對不起。

添加2形式一個小組到一個新的項目,試試這個,請:>>

Option Strict On 
Option Explicit On 
Option Infer Off 

Public Class Form1 

    Public Declare Auto Function SetParent Lib "user32.dll" (ByVal hWndChild As IntPtr, ByVal hWndNewParent As IntPtr) As IntPtr 
    Friend WithEvents someForm As New Form2 

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 

     someForm.Show() 
     someForm.BackColor = Color.White 
     someForm.Opacity = 1 
     'System.Threading.Thread.Sleep(2000) 
     SetParent(someForm.Handle, Panel1.Handle) 

    End Sub 

End Class 

I am working on vb.net Winforms application. I understand that I am adding a form as control on a form with opacity as 60. But is there any way to achieve the desired result. . Am i missing something?

我甚至試過,自己這樣沒有你後的效果。

Option Strict On 
Option Explicit On 
Option Infer Off 

Public Class Form1 

    Friend WithEvents frmPopUp As New Form 

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 

     frmPopUp.Opacity = 0.6 
     frmPopUp.TopLevel = False 
     frmPopUp.Text = "frmPopUp" 
     Me.Controls.Add(frmPopUp) 
     frmPopUp.Show() 

    End Sub 

End Class 
+0

三種不同的答案?您應該只更新您的原始答案和更新的信息。 – LarsTech

+0

去LarsTech, 你將不得不原諒我,我還不太習慣這些論壇。 –