精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

VB.NET多窗體實際編寫方式講解

開發 后端
VB.NET多窗體的編程方式將會以本文介紹的這種方式進行操作。初學者在學習的過程中可以依據這些步驟進行實踐操作,以增加其的理解程度。

作為一個優秀的編程人員,能夠熟練的運用兩種以上的編程語言是必要的基本技能。那么VB.NET這樣一款功能強大的開發語言應該是程序員們***之一。在這里先從一個VB.NET多窗體編程的例子來體驗一下它的強大性。#t#

前言

在微軟 Visual Basic 6.0 中,一條簡單的 “Form2.Show” 語句就能顯示項目中的第二窗體 (Form2)。然而,它在 Visaul Basic .NET 中卻行不通了,因為 .NET 版在窗體處理機制上有了很大的變化。剛剛轉向 .NET 版的 Visaul Basic 程序員實在難以接受這么大的變化,因為現在連“顯示第二窗體”這么簡單的任務都無從下手。我希望能夠通過本文向大家介紹 Visaul Basic .NET 與早期的 Visual Basic 在窗體處理機制上有哪些不同之處,以及如何按照 .NET 的模式進行VB.NET多窗體編程。

Visual Basic 6.0 對 Visual Basic .NET

窗體(窗體類)正如其它類一樣,無論在哪個版本的 Visual Basic 中都是必不可少的。VB.NET多窗體也有屬性、方法和事件,且在同一個項目中也允許創建多個窗體實例。例如:假設你在 Visual Basic 6.0 項目中定義了一個窗體 Form2 ,則你可以創建它的 3 個實例并同時顯示出來。代碼如下:

  1. Dim myFirstForm As Form2   
  2. Dim mySecondForm As Form2   
  3. Dim myThirdForm As Form2   
  4. Set myFirstForm = New Form2   
  5. Set mySecondForm = New Form2   
  6. Set myThirdForm = New Form2   
  7. myFirstForm.Show   
  8. mySecondForm.Show   
  9. myThirdForm.Show  

 

以上代碼用 3 條 Set 語句生成了 3 個 Form2 實例。你可以把它原封不動地搬到 Visual Basic .NET 中運行,它照樣能夠正確顯示 3 個 Form2 窗體。在這里,“Form2” 其實相當于一個普通的類。Visual Basic 6.0 允許代碼直接訪問尚未實例化的窗體類;然而Visual Basic .NET 卻規定在訪問任何類之前都要進行實例化,而且必須借助實例來訪問類。這種變化當然有可能造成許多疑惑。Visual Basic 6.0 等早期版本能自動生成每個窗體的默認實例,從而允許直接通過窗體名稱來訪問窗體。例如:在 Visual Basic 6.0 項目中,可以直接用代碼 “Form2.Show” 顯示 Form2 的默認實例;然而在 Visual Basic .NET 中,這么做只會引發錯誤,因為 Visual Basic .NET 既不會創建默認的窗體實例,也不允許直接訪問尚未實例化的窗體類。

這就是 Visual Basic .NET 與早期 Visual Basic 在窗體處理機制上的關鍵區別——你只有先創建窗體實例,然后才可以顯示窗體外觀、訪問窗體屬性及其控件。它們還有另一個區別:Visual Basic 6.0 項目自動創建的默認窗體實例都能被當成全局變量使用,也就是說,項目中的任何代碼都能直接引用VB.NET多窗體,并且每次被引用的都是該窗體的同一個實例。例如:你可以在窗體中 button 控件的 Click 事件處理程序里用代碼 “Form2.Show” 顯示 Form2 窗體,然后用下列代碼改變 Form2 中某個 textbox 控件 (TextBox1)的內容:

  1. Form2.TextBox1.Text = "Fred"  

可是,你在 Visual Basic .NET 中運行它卻會得到一條錯誤消息:“Reference to a Non-Shared Member Requires an Object Reference”(引用非共享類成員必須使用對象指針)。這是在提醒你:你正在訪問的類尚未進行實例化。有一個簡便的解決方案:當你在調試過程中得到上述錯誤消息時,就把相應的語句:

  1. Form2.Show()  

 

改成:

  1. Dim myForm2 As 
    New Form2()   
  2. myForm2.Show()  

 

此方案適用于大多數場合。然而,當項目中還有其它代碼訪問同一個 Form2 實例 (比如改變其中 TextBox1 的文本) 時,你可能會考慮把下列語句:

  1. Form2.TextBox1.Text =
     
    "Fred"  

 

改成:

  1. Dim myForm2 As 
    New Form2()   
  2. myForm2.TextBox1.
    Text
     = "Fred"  

 

不幸的是,這段代碼創建了一個新的 Form2 實例,結果你所訪問的VB.NET多窗體不再是原先的 Form2 ,這豈不麻煩了!更壞的是,你不會因此而得到任何錯誤消息提示,同時你先前調用 Show() 顯示的 Form2 窗體也不會發生任何變化。

升級向導如何解決它

如果你用升級向導 (Upgrade Wizard) 把 Visual Basic 6.0 項目升級為 Visual Basic .NET 版,則它會在每個窗體中自動添加一段特殊代碼,通過顯式創建窗體實例來模擬早期 Visual Basic 版本中的默認實例化機制。此段代碼被包裹于標號為 “Upgrade Support”的代碼區塊內,借助一個新增的 Shared 屬性來生成當前窗體的實例:

  1. Private Shared m_vb6FormDef
    Instance As Form1   
  2. Private Shared m_Initializing
    DefInstance As Boolean   
  3. Public Shared Property 
    DefInstance() As Form1   
  4. Get   
  5. If m_vb6FormDefInstance Is 
    Nothing _   
  6. OrElse m_vb6FormDefInstance.
    IsDisposed Then   
  7. m_InitializingDefInstance = True   
  8. m_vb6FormDefInstance = New Form1()   
  9. m_InitializingDefInstance = False   
  10. End If   
  11. DefInstance = m_vb6FormDefInstance   
  12. End Get   
  13. Set(ByVal Value As Form1)   
  14. m_vb6FormDefInstance = Value   
  15. End Set   
  16. End Property  

 

代碼中的 DefInstance 是一個 Shared 屬性,它能以 “窗體名.DefInstance” 的形式直接訪問。它所在項目中的任何代碼訪問它都將得到同一個窗體實例。這樣,你就能模擬 Visual Basic 6.0 項目對VB.NET多窗體的直接引用了,只不過在代碼中以 “Form2.DefInstance” 代替 “Form2” 而已。

這時,你只需用 Form2.DefInstance.Show() 和Form2.DefInstance.TextBox1.Text = "Fred" 分別替換原先對 Form2 相應的直接引用就大功告成了。假如你不用升級向導,而是在 Visual Basic .NET 窗體中手工插入上述代碼 (以及升級向導在窗體的 New過程中自動添加的代碼),也行。當然了,你并不一定非要修改窗體代碼,因為有一種編程模式可以在 .NET 項目中模擬默認窗體實例的創建。本文將用余下的篇幅來介紹這種編程模式。

VB.NET多窗體之間的交互

在 Visual Basic 6.0 等早期版本中,多個窗體之間的交互通常需要借助默認窗體實例來完成。下面我將結合某些具體的編程任務來講解如何在 .NET 下實現多窗體交互,希望它能對你的開發任務有所幫助。

保持窗體引用的全局性

前面提到,進行 .NET 窗體編程時應該牢牢把握下列原則:在訪問窗體之前,你必須進行窗體實例化;如果在項目中有多處代碼訪問同一窗體,則你必須把它的同一實例指針傳遞給這些代碼。對于早已習慣了直接把默認窗體實例當成全局變量來使用的 Visual Basic 6.0 程序員來說,這可是個嚴重的挑戰。好在 .NET 為你提供了兩條出路:其一,把窗體實例指針保存在全局變量中;其二,把窗體實例指針傳遞給任何需要訪問它的窗體、類、模塊或者過程。

.NET 中的數值全局化

我以前曾經指出,Visual Basic .NET 不支持全局變量,現在我又要說,在 .NET 中可以在某種程度上實現數值全局化。這算不算此一時,彼一時?不,我不是那種人。Visual Basic .NET 確實不支持全局變量,然而它借助 Shared (相當于 C# 中的 static) 變量卻能模擬全局變量。事實上,前面介紹的 Visual Basic 升級向導自動添加到窗體代碼中的 DefInstance 屬性就是 Shared 類成員。無論容納 DefInstance 屬性的窗體類是否已經實例化,它都能被項目中的任何代碼所引用。象這樣的 Shared 屬性不就相當于全局變量嗎?因此,你可以創建這樣的類:

  1. Public Class myForms   
  2. Private Shared m_CustomerForm 
    As CustomerForm   
  3. Public Shared Property 
    CustomerForm() As CustomerForm   
  4. Get   
  5. Return m_CustomerForm   
  6. End Get   
  7. Set(ByVal Value As CustomerForm)   
  8. m_CustomerForm = Value   
  9. End Set   
  10. End Property   
  11. End Class  

 

#p#

你需要在***實例化一個VB.NET多窗體時,把該窗體的實例保存到一個類中:

  1. Dim myNewCust As New 
    CustomerForm()   
  2. myNewCust.Show()   
  3. myForms.CustomerForm = 
    myNewCust  

 

這里的 CustomerForm 屬性值就是你的窗體實例。于是,其它代碼就能從項目的任何地方通過它來間接訪問你的窗體了:

 

  1. Module DoingStuffWithForms   
  2. Sub DoExcitingThings()   
  3. myForms.CustomerForm.Text = _   
  4. DateTime.Now().
    ToLongTimeString   
  5. End Sub   
  6. End Module  

 

象這樣把VB.NET多窗體實例保存為屬性值就能按照你的要求模擬 Visual Basic 6.0 中的全局變量。如此模擬的“全局變量”其作用域比類域 (class scope) 高一個層次。所謂類域,是指變量僅僅在定義它的類(確切地說,應該包括模塊、類或窗體)中有效。比類域還低一層次的是過程域 (procedure scope),即變量僅僅在定義它的例程中有效。
窗體指針在項目中的傳遞

除了把窗體實例全局化以外,你還可以把窗體類指針保存在變量中傳遞給需要訪問該窗體的例程。假設你有一個窗體 Form1,并希望在點擊 Form1 中某個按鈕 (Button1) 時打開另第二窗體 Form2 ,然后在點擊第二窗體 Form2 中的另一個按鈕 (Button2) 時進行某項計算。你可以把整個代碼都寫在 Form1 中,即:

 

  1. Public Class Form1   
  2. Inherits System.Windows.Forms.Form   
  3. Dim myForm2 As Form2   
  4. Private Sub Button1_Click
    (ByVal sender As System.
    Object,_ ByVal e As System.
    EventArgs) Handles Button1.Click   
  5. myForm2 = New Form2()   
  6. myForm2.Show()   
  7. End Sub   
  8. Private Sub Button2_Click
    (ByVal sender As System.Object, 
    _ByVal e As System.EventArgs) 
    Handles Button2.Click   
  9. Calculations.CompoundInterest
    Calc(myForm2)   
  10. End Sub   
  11. End Class  

 

無論是把窗體指針全局化,還是把它以參數的形式傳遞,都是可行的。然而,你必須根據項目的需要選擇***方案。當 .NET 項目中只有少數幾個過程需要訪問特定窗體時,我建議你給這些過程增加一個參數,以在必要時接受窗體指針。當你的項目有太多過程需要訪問該窗體時,你就應該考慮設置一個全局窗體指針變量。當然了,你***還是考慮調整項目代碼結構,使得真正訪問該窗體的類或者過程只有一個。如果你希望用窗體來顯示登錄信息,則你可以先創建一個類,把VB.NET多窗體實例保存為它的 Shared 類成員,然后添加一個 Shared 方法 WriteToLogWindow 來完成實際的窗體訪問。于是,項目中的任何代碼只需調用此 WriteToLogWindow 方法就能間接訪問顯示登錄信息的窗體了:

 

  1. Public Class Log   
  2. Private Shared m_LogForm As Form2   
  3. Public Shared Property LogForm() 
    As Form2   
  4. Get   
  5. Return m_LogForm   
  6. End Get   
  7. Set(ByVal Value As Form2)   
  8. m_LogForm = Value   
  9. End Set   
  10. End Property   
  11. Public Shared Sub WriteToLogWindow
    (ByVal Message As String)   
  12. Dim sb As New _   
  13. StringBuilder(m_LogForm.txtLog
    Info.Text)   
  14. sb.Append(Environment.NewLine)   
  15. sb.Append(Message)   
  16. m_LogForm.txtLogInfo.Text = 
    sb.ToString()   
  17. End Sub   
  18. End Class  

 

讀取和改變VB.NET多窗體內的信息

到現在為止,我們討論的只是如何創建和訪問窗體實例,而沒有涉及如何讀取或改變窗體內的信息。如果你的窗體已經按照前述方法實例化,并且訪問窗體的代碼都位于窗體所在的項目中,則你可以直接操作窗體中的任何控件來讀取和改變窗體內的信息。但我覺得這樣并不理想。與其直接訪問窗體中的文本框、按鈕等控件,還不如增加一個 Public 屬性,通過它來控制窗體中的控件。如果你有意嘗試這種特殊的窗體訪問方式,請跟我來:

在 Visual Basic .NET 中新建一個 Windows 應用程序項目。

此時項目中已經自動生成了一個窗體 Form1 。現在添加另一個窗體 Form2 :在“解決方案資源管理器”中按右鍵單擊項目名稱 -> “添加” -> “添加 Windows 窗體” -> 點擊“打開”以接受默認名稱 Form2.vb 。

在 Form1 中添加兩個按鈕,分別按照默認值命名為 Button1 和 Button2 ,并且調整它們在窗體中的位置以免重疊。

在 Form2 中添加一個簡單文本框,按照默認值命名為 TextBox1

把下列代碼添加到 Form2 的“End Class”前面 (在“解決方案資源管理器”中按右鍵單擊 “Form2”-> “查看代碼”,再粘貼下列代碼):

 

  1. Public Property CustomerName()
     As String   
  2. Get   
  3. Return TextBox1.Text   
  4. End Get   
  5. Set(ByVal Value As String)   
  6. TextBox1.Text = Value   
  7. End Set   
  8. End Property  

 

接下來要做的是:

a. 切換到 Form1 的代碼,在 “Inherits System.Windows.Forms.Form” 后面增加一行:

 

  1. Dim myForm2 As New Form2()  

b. 在 Form1 中雙擊Button1 按鈕,在它的 Click 事件處理程序代碼中輸入下列代碼:

 

  1. myForm2.CustomerName = 
    "Fred"   
  2. myForm2.Show()  

 

c. 在 Form1 中雙擊Button2 按鈕,在它的 Click 事件處理程序代碼中輸入下列代碼:

 

  1. MessageBox.Show
    (myForm2.CustomerName)   
  2. myForm2.CustomerName = 
    "Joe"  

d. 按 F5 運行項目,并點擊窗體中的 Button1 和 Button2 按鈕,以觀察代碼運行情況。

表面看來,通過 CustomerName 屬性來訪問 Form2 與直接訪問 Form2 非常相似。然而,這種間接的窗體訪問方式能夠帶來很多好處,其中最重要的一點就在于它實現了更高的抽象性。換言之,哪怕你不知道 Form2 中控件的任何細節 (比如:窗體中是否包含 textbox 控件) ,也能與 Form2 交換數據;你所要做的只是讀取或設置 CustomerName 屬性值而已。有了這種抽象,你就能在修改 Form2 的實現時不影響項目中的其它代碼,因而大大簡化了整個項目代碼的維護。

單從本文的例子來看,這種基于屬性的窗體編程模式似乎并不比常規方式簡單。然而,它以屬性的形式隱藏了窗體的全部細節,故能用簡潔、一致的代碼來訪問窗體。所以,它在一些相當復雜的用戶界面編程中能夠大顯身手。總而言之,通過屬性值來訪問窗體及其控件的編程模式雖然不太直觀,卻對程序員很有價值:它不但比直接訪問窗體的編程模式來得更專業,而且讓整個項目的代碼清晰易讀。

結論

Visual Basic .NET 取消了早期版本中的“默認窗體實例”,卻引起了不少 .NET 編程新手的困惑。Visual Basic .NET 規定,只有通過引用窗體實例,才能訪問窗體的屬性、方法及其控件。你所保存的窗體實例指針應該盡量讓整個項目都能直接訪問到它。VB.NET多窗體處理機制已經變得更合理、更強大,可對于剛接觸 .NET 的程序員來說,它的改進偏偏是造

責任編輯:曹凱 來源: 博客園
相關推薦

2010-01-08 14:07:47

VB.NET窗體傳值

2010-01-07 18:22:40

VB.NET聲音播放

2010-01-11 11:37:08

VB.NET操作CSV

2010-01-11 17:58:36

VB.NET壓縮ZIP

2010-01-15 11:31:02

VB.NET接口實現多

2010-01-21 15:10:37

VB.NET靜態托盤程

2009-10-14 15:20:21

VB.NET窗體指針

2009-10-14 15:34:29

VB.NET窗體編程模

2010-01-11 15:12:30

VB.NET特殊窗體

2009-10-09 16:54:03

VB.NET窗體

2010-01-07 17:57:22

VB.NET構造函數

2010-01-11 10:19:18

VB.NET啟動外部程

2009-10-20 10:16:24

VB.NET COMB

2010-01-11 16:04:10

VB.NET使用wit

2010-01-13 09:31:39

VB.NET窗體打印

2009-10-14 13:56:05

VB.NET數據窗體

2009-10-16 09:35:24

VB.NET制作透明窗

2009-11-10 14:30:33

VB.NET多窗體

2009-10-14 17:21:47

VB.NET定制Win

2010-01-18 18:20:49

VB.NET使用API
點贊
收藏

51CTO技術棧公眾號

最新欧美色图| 日本国产在线| 欧美a级片网站| 欧美精品一区视频| 欧美三级一级片| 色多多视频在线观看| 国产精品18久久久久久久久久久久 | 丝袜老师办公室里做好紧好爽| 国产美女性感在线观看懂色av| 九九久久精品视频| 欧美一级视频免费在线观看| 福利视频第一页| 精品国产午夜肉伦伦影院| 欧美偷拍一区二区| 成人免费观看cn| 日韩毛片久久久| 99精品视频一区| 成人免费福利在线| 亚洲欧美一区二区三区在线观看| 我不卡影院28| 亚洲片av在线| 国产原创剧情av| 亚洲狼人综合| 色婷婷精品久久二区二区蜜臂av| 超碰10000| yw193.com尤物在线| 成人av网站大全| 91久久久久久久久久久| 日本免费在线观看视频| 韩国亚洲精品| 久久精品电影网站| 夫妇交换中文字幕| 国产99亚洲| 亚洲成人网av| 三级黄色片播放| 粉嫩91精品久久久久久久99蜜桃| 福利视频一区二区| 免费网站在线观看视频| 国产一二三区在线观看| 日本一区二区三区在线观看| 久久婷婷开心| 少妇精品高潮欲妇又嫩中文字幕| 国产毛片精品视频| 国产日韩欧美日韩大片| 制服丝袜在线一区| 丝袜亚洲另类欧美综合| 欧美整片在线观看| 欧美一区二区激情视频| 亚洲人成人一区二区三区| 欧美乱妇40p| 天天干中文字幕| 亚洲久久久久| 久久天天躁狠狠躁夜夜躁| 999久久久国产| 色狮一区二区三区四区视频| 正在播放国产一区| 成人做爰69片免网站| 精品在线观看入口| 亚洲石原莉奈一区二区在线观看| aa片在线观看视频在线播放| 久久99精品久久久久久欧洲站| 日韩欧美国产综合在线一区二区三区| 久久精品亚洲天堂| 免费精品一区二区三区在线观看| 欧美乱妇一区二区三区不卡视频| 中日韩av在线播放| 成人精品在线| 欧美电影免费观看完整版| 精人妻一区二区三区| 国产成人精品福利| 日韩成人av一区| 亚洲做受高潮无遮挡| 九九久久婷婷| 中文字幕亚洲无线码a| 林心如三级全黄裸体| 天天超碰亚洲| 欧美精品电影免费在线观看| 你懂的国产视频| 国产欧美日韩一区二区三区在线| 69视频在线免费观看| 欧美一级淫片免费视频黄| 秋霞影院一区二区| 91在线中文字幕| 亚洲欧美日本在线观看| 国产日产欧美一区二区视频| 自拍偷拍亚洲色图欧美| 亚洲妇熟xxxx妇色黄| 精品二区三区线观看| 成人亚洲视频在线观看| 亚洲人成777| 精品国产一二三区| 尤物视频最新网址| 亚洲精品小说| 91精品国产九九九久久久亚洲| 天天综合久久综合| 国产经典欧美精品| 日产精品久久久一区二区| 免费av在线网址| 亚洲成人7777| 奇米视频7777| 色天下一区二区三区| 日韩有码在线视频| 亚洲免费在线观看av| 久久激情五月婷婷| 国内一区二区三区在线视频| 3p在线观看| 黄色成人av网| 永久免费黄色片| 精品中文一区| 欧美激情视频一区二区| 小泽玛利亚一区二区三区视频| 国产精一区二区三区| 欧美日韩一区二区三区在线观看免| 欧美96在线| 91福利精品视频| 高清中文字幕mv的电影| 欧美oldwomenvideos| 久久久欧美一区二区| 亚洲在线视频播放| 久久新电视剧免费观看| 国产女教师bbwbbwbbw| 成人国产精品一区二区免费麻豆 | 日本伊人精品一区二区三区介绍| 99精品视频免费看| 国产精品午夜电影| www.com毛片| 精品国产18久久久久久洗澡| 久热精品视频在线观看| 亚洲第一区av| 久久午夜羞羞影院免费观看| 久久亚洲精品无码va白人极品| 日韩一级特黄| 中文亚洲视频在线| 日批视频免费在线观看| 91亚洲精品一区二区乱码| 男同互操gay射视频在线看| 精品久久久网| 中文字幕亚洲欧美日韩在线不卡| 五月婷婷激情视频| 91美女视频网站| 精品无码一区二区三区在线| av动漫精品一区二区| 欧美成人小视频| 国产农村妇女毛片精品| 国产精品国产馆在线真实露脸| 97公开免费视频| 狠狠综合久久av一区二区蜜桃| 91精品国产91久久| 香蕉视频黄色片| 五月婷婷综合激情| 亚洲人人夜夜澡人人爽| 日韩亚洲国产欧美| 精品一区久久久久久| 国产777精品精品热热热一区二区| 精品美女在线观看| 九热这里只有精品| 99久免费精品视频在线观看| 欧美在线一区视频| 婷婷五月色综合香五月| 欧美一区亚洲一区| 九色在线观看视频| 欧美视频自拍偷拍| 91麻豆精品成人一区二区| 国产一区在线观看视频| 欧美做暖暖视频| 另类在线视频| 国产成+人+综合+亚洲欧洲 | 久久av.com| 国内精品久久久久久久久久| 亚洲一区二区三区四区五区黄| 日韩Av无码精品| 亚洲永久免费| 午夜午夜精品一区二区三区文| 色999久久久精品人人澡69| 久久精品一本久久99精品| 精品人妻一区二区三区含羞草| 亚洲最大的成人av| 五级黄高潮片90分钟视频| 日韩成人精品视频| ijzzijzzij亚洲大全| 电影一区二区在线观看| 国产成人亚洲精品| 成人日日夜夜| 亚洲精品福利在线观看| 啪啪小视频网站| 亚洲精品中文在线影院| 性色av蜜臀av色欲av| 久久爱另类一区二区小说| www.日本在线视频| 国产欧美日韩免费观看| 91在线精品播放| 亚洲天堂手机| www.美女亚洲精品| 五月天婷婷在线观看| 欧美怡红院视频| 久久这里只有精品国产| 国产三级一区二区三区| japan高清日本乱xxxxx| 欧美亚洲自偷自偷| 国产激情片在线观看| 免费一区二区| 国产精品久久久久av福利动漫| 欧美日韩五码| 国内精久久久久久久久久人| 一区二区三区视频在线观看视频| 精品国产伦一区二区三区观看方式| 无码人妻黑人中文字幕| 亚洲一区国产视频| 精品人体无码一区二区三区| 成人一区二区在线观看| 999在线观看| 午夜在线a亚洲v天堂网2018| 成人国产在线看| 日韩在线视屏| 欧美裸体网站| theporn国产在线精品| 国产精品免费一区豆花| 欧美另类老肥妇| 欧美高清在线播放| 亚洲1卡2卡3卡4卡乱码精品| 日韩精品中文字幕在线| 亚洲欧美高清视频| 7878成人国产在线观看| 亚洲精品国产欧美在线观看| 岛国av一区二区| 精品小视频在线观看| 中文字幕在线不卡国产视频| 四虎国产精品成人免费入口| 99精品热视频| 69xxx免费视频| 国产精品亚洲专一区二区三区| www午夜视频| 日韩制服丝袜av| 日本一本二本在线观看| 99精品国产在热久久婷婷| 肉大捧一出免费观看网站在线播放 | 亚洲精品久久久久久久久久久久| 国产成人麻豆精品午夜在线| 欧美高清视频在线高清观看mv色露露十八 | 黄色日韩在线| 91免费网站视频| 欧美3p视频| 亚洲看片网站| 欧美高清视频手机在在线| 水蜜桃一区二区三区| 精品国产aⅴ| 日韩欧美电影一区二区| 精品国产精品久久一区免费式| 欧美一级日本a级v片| 久久99精品久久久久久园产越南| 久久综合久久久| 久久av资源| 视频在线精品一区| 欧美电影一区| 国产在线拍揄自揄拍无码| 午夜日韩激情| 久久这里只有精品18| 亚洲精品专区| 天天摸天天碰天天添| 日韩高清在线不卡| 中文字幕国产免费| 国产精品综合二区| 亚洲美女高潮久久久| 91香蕉视频在线| 亚洲国产av一区| 国产精品福利影院| 91嫩草|国产丨精品入口| 亚洲一区二区在线免费看| 久久精品人妻一区二区三区| 欧美日韩午夜剧场| 日本欧美www| 日韩欧美国产小视频| 黄色片一区二区| 亚洲免费视频一区二区| 亚洲麻豆精品| 欧美福利在线观看| 成人免费短视频| 国产在线精品一区免费香蕉| 999精品视频在这里| 蜜桃免费一区二区三区| 97视频热人人精品免费| 久久久久久久香蕉| 久久综合九色| 91视频这里只有精品| gogogo免费视频观看亚洲一| 无码国产69精品久久久久同性| 国产精品欧美久久久久一区二区| 午夜69成人做爰视频| 欧美视频在线免费看| 一区二区国产欧美| 亚洲国产97在线精品一区| 成人午夜电影在线观看| 久久久久久久久久久亚洲| 日本成人片在线| 国产精品久久久久久久久久久久午夜片| 一区二区三区四区在线看| 亚洲AV无码成人精品一区| av不卡免费看| 樱花草www在线| 久久一二三国产| 久久99久久98精品免观看软件 | 国产日韩成人精品| 久久久全国免费视频| 欧美日韩精品一区二区| 午夜影院免费视频| 欧美老女人性生活| 日韩经典一区| 久久久com| 欧美日本中文| 五月天激情视频在线观看| 99久久精品一区| 青青草成人免费| 欧美日韩国产另类不卡| 日韩二区三区| 午夜精品久久久久久久白皮肤| 亚洲国产一区二区久久| 色一情一乱一伦一区二区三区丨 | 老熟妇高潮一区二区高清视频 | ****av在线网毛片| 91久久精品美女高潮| 成人羞羞在线观看网站| 人妻少妇被粗大爽9797pw| 成人中文字幕电影| 青娱乐国产在线| 91.com视频| 欧美13一16娇小xxxx| 国产精品久久999| 亚洲影院天堂中文av色| 久激情内射婷内射蜜桃| 国产福利不卡视频| 日本高清一二三区| 欧美人与z0zoxxxx视频| 大片免费播放在线视频| 国产成人鲁鲁免费视频a| 伊人久久大香线蕉| 国产视频一视频二| 91蜜桃传媒精品久久久一区二区| 国产乡下妇女做爰视频| 精品少妇一区二区三区在线视频| 国产福利在线播放麻豆| 成人精品aaaa网站| 国产精品久久久久久麻豆一区软件| 一区二区三区 欧美| 国产欧美一二三区| 天堂av免费在线观看| 亚洲一区二区久久| 巨胸喷奶水www久久久免费动漫| 日本成人黄色| 日本少妇一区二区| 国产精品1区2区3区4区| 欧美日韩亚洲不卡| 嫩草香蕉在线91一二三区| 成人做爰www免费看视频网站| 久久精品影视| 在线播放国产视频| 天天av天天翘天天综合网色鬼国产| 性xxxx视频| 日本在线观看天堂男亚洲| 精品视频免费| 国内国产精品天干天干| 一区二区三区加勒比av| 亚洲高清精品视频| 97香蕉超级碰碰久久免费的优势| 美女一区2区| 老司机午夜av| 国产精品福利一区二区| 亚洲美女性生活| 91成人性视频| 三上亚洲一区二区| 黑人巨大猛交丰满少妇| 精品久久久久久久大神国产| 高清福利在线观看| 91中文字幕在线观看| 亚洲精品系列| 国产精品天天干| 欧美一级理论片| 在线手机中文字幕| 亚洲精品影院| 成人综合激情网| 黄色av网站免费观看| 久久精品中文字幕| 噜噜噜天天躁狠狠躁夜夜精品 | 亚洲黄色三级视频| 在线激情影院一区| 成人高潮a毛片免费观看网站| 免费日韩视频在线观看| 国产精品久久二区二区| 黄色av小说在线观看| 国产精品久久久久久网站| 欧美.日韩.国产.一区.二区| 午夜一区二区三区免费| 欧美高清性hdvideosex| 最新日韩精品| 好吊色视频988gao在线观看| 91看片淫黄大片一级| 国产绳艺sm调教室论坛| 日韩av大片在线| 欧美日韩国产免费观看| 夫妇交换中文字幕| 日韩黄色在线免费观看|