整合營(yíng)銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          WinForm框架開發(fā) - 自定義控件開發(fā)的調(diào)試、D

          WinForm框架開發(fā) - 自定義控件開發(fā)的調(diào)試、DesignMode的狀態(tài)處理

          開發(fā)Winform程序的時(shí)候,我們往往需要根據(jù)需要做一些自定義的控件模塊,這樣可以給系統(tǒng)模塊重復(fù)利用,或者實(shí)現(xiàn)更好的效果等功能。但在使用的時(shí)候,我們又往往設(shè)計(jì)時(shí)刻發(fā)現(xiàn)一些莫名其妙的錯(cuò)誤,那么我們?cè)撊绾芜M(jìn)行控件的設(shè)計(jì)時(shí)刻的開發(fā)調(diào)試呢,如何解決碰到設(shè)計(jì)時(shí)刻出現(xiàn)的錯(cuò)誤呢?本文主要介紹我自己在這方面積累的一些經(jīng)驗(yàn)和處理方法,期望對(duì)大家有幫助。

          DevExpress Universal Subscription官方最新版免費(fèi)下載試用,歷史版本下載,在線文檔和幫助文件下載-慧都網(wǎng)

          1. 自定義控件的設(shè)計(jì)錯(cuò)誤產(chǎn)生

          例如我的通用附件模塊里面,有一個(gè)自定義控件,需要提供給外部使用的,如下所示。

          這里外部使用的模塊,是工作流里面的一個(gè)模塊,也是一個(gè)自定義控件,我想把它作為一個(gè)流程信息的展示控件。

          因此就想把這個(gè)附件管理的自定義控件拖動(dòng)到另外一個(gè)自定義控件流程信息展示控件里面,設(shè)計(jì)的流程信息管理的界面如下所示,這個(gè)時(shí)候,使用這個(gè)附近控件是沒(méi)有問(wèn)題的,正常拖動(dòng)到另外一個(gè)控件里面。

          編譯整個(gè)項(xiàng)目,左邊的VS工具箱會(huì)出現(xiàn)一個(gè)ApplyControl的自定義控件,但是當(dāng)我拖動(dòng)該控件到新的窗體界面里面的時(shí)候,錯(cuò)誤就出現(xiàn)了。

          這個(gè)問(wèn)題可能是因?yàn)檎{(diào)用了訪問(wèn)數(shù)據(jù)庫(kù)的操作,但是更加詳細(xì)的位置我們看不太清楚(數(shù)據(jù)給截?cái)囡@示了)。

          2. 基于Visual Studio控件的調(diào)試

          為了更好跟蹤到錯(cuò)誤的發(fā)生的地方,我們可以用VS自帶的調(diào)試操作來(lái)進(jìn)行跟蹤。

          首先我們?cè)陧?xiàng)目的【屬性】-》【調(diào)試】里面設(shè)置啟動(dòng)操作為指定的VS,選擇“啟動(dòng)外部程序”為對(duì)應(yīng)版本的VS的IDE程序,如下所示。

          啟動(dòng)調(diào)試后,打開對(duì)應(yīng)的這個(gè)項(xiàng)目,然后再次模擬從工具箱里面拖動(dòng)控件的效果,這樣VS IDE就能定位到具體的位置了。

          我們發(fā)現(xiàn)VS定位到一個(gè)綁定數(shù)據(jù)的數(shù)據(jù)庫(kù)訪問(wèn)操作里面去,但是我開始一直不明白,這個(gè)BindData的操作,其實(shí)已經(jīng)是通過(guò)指定了設(shè)計(jì)時(shí)刻不進(jìn)行的了(!this.DesignMode),不知道為什么還繼續(xù)。

          public void BindData()
          {
          ClearData();
          
          if (!this.DesignMode)
          {
          List<FileUploadInfo> fileList=new List<FileUploadInfo>();
          if (!string.IsNullOrEmpty(this.AttachmentGUID))
          {
          fileList=BLLFactory<FileUpload>.Instance.GetByAttachGUID(this.AttachmentGUID, this.pager1.PagerInfo);
          }
          else
          {
          fileList=BLLFactory<FileUpload>.Instance.GetAllByUser(this.UserId, this.AttachmentDirectory, this.pager1.PagerInfo);
          }
          
          ..........................

          3. DesignMode的重載,問(wèn)題解決

          調(diào)試到這個(gè)DesignMode的時(shí)候,它的值竟然是false,那么肯定就會(huì)去從數(shù)據(jù)庫(kù)獲取了,而設(shè)計(jì)時(shí)候去找數(shù)據(jù),這個(gè)時(shí)候就出錯(cuò)了。至于為什么會(huì)是DesignMode為false,開始有點(diǎn)搞不太清楚,不是說(shuō)好設(shè)計(jì)時(shí)刻為True的嗎?

          通過(guò)搜索,發(fā)現(xiàn)有位仁兄總結(jié)的比較精辟,這里就借用一下。

          也就是說(shuō)一個(gè)控件只有在它自己被拖拽到設(shè)計(jì)器的時(shí)候,其 DesignMode 才是真,如果它被包含在其他控件中被加入到設(shè)計(jì)器,那么那個(gè)控件才是在設(shè)計(jì)模式,而它不是!換句話說(shuō),DesignMode 并不能反映當(dāng)前環(huán)境是否是運(yùn)行時(shí),它只能告訴你,這個(gè)控件當(dāng)前是不是直接被設(shè)計(jì)器操作(嵌套的已經(jīng)不算了) ?!?/span>

          那解決方法應(yīng)該如何呢,其實(shí)也很簡(jiǎn)單,就是重寫下這個(gè)DesignMode的屬性為我們期望的值即可,如下所示。

          /// <summary>
          /// 標(biāo)題:獲取一個(gè)值,用以指示 System.ComponentModel.Component 當(dāng)前是否處于設(shè)計(jì)模式。
          /// 描述:DesignMode 在 Visual Studio 產(chǎn)品中存在 Bug ,使用下面的方式可以解決這個(gè)問(wèn)題。/// </summary>
          protected new bool DesignMode
          {
          get
          {
          bool returnFlag=false;
          #if DEBUG
          if (System.ComponentModel.LicenseManager.UsageMode==System.ComponentModel.LicenseUsageMode.Designtime)
          {
          returnFlag=true;
          }
          else if (System.Diagnostics.Process.GetCurrentProcess().ProcessName.ToUpper().Equals("DEVENV"))
          {
          returnFlag=true;
          }
          #endif
          return returnFlag;
          }
          }

          重新編譯控件,然后測(cè)試拖動(dòng),操作正常,再無(wú)出錯(cuò),搞定!

          DevExpress

          DevExpress Universal 10月正式發(fā)布今年第二個(gè)重大版本——v21.2,此版本正式官宣支持Visual Studio 2022 & .NET6,同時(shí)與微軟最新發(fā)布的Windows 11完美兼容,全面解決用戶各種使用場(chǎng)景問(wèn)題。 與時(shí)俱進(jìn),從未止步!

          本文轉(zhuǎn)載自:博客園 - 伍華聰

          面可視化搭建工具業(yè)界的輪子

          無(wú)論大公司還是小公司,我們開發(fā)前端工程時(shí)候,項(xiàng)目工程又很多類似的功能或者頁(yè)面,開發(fā)經(jīng)常是加班加點(diǎn)搬磚去做一些無(wú)成長(zhǎng)反復(fù)操作的工作,看鍵盤上 Ctrl 鍵已經(jīng)被磨掉了漆,C 和 V 也馬上磨白了,那對(duì)于開發(fā)如何把這些重復(fù)的工作用機(jī)器去解決?在前端資源緊缺的情況下,是否可直接有工具直接就可以搭建出我想要的前端頁(yè)面?于是業(yè)界的頁(yè)面可視化搭建工具就出現(xiàn)了,本文會(huì)介紹目前最流行的頁(yè)面可視化搭建工具,也會(huì)提供一些業(yè)界開源的可視化搭建項(xiàng)目供大家參考(Copy)。

          1 頁(yè)面可視化搭建 簡(jiǎn)介

          編程開發(fā)頁(yè)面:動(dòng)態(tài)邏輯頁(yè)面分解為 HTML Tree, Data 和 Dynamic Logic. 前端開發(fā)工程師開發(fā)前端頁(yè)面的過(guò)程, 本質(zhì)上是用編程工具(IDE)對(duì)頁(yè)面的 HTML Tree, Data 和 Dynamic Logic 進(jìn)行增刪和修改.

          頁(yè)面可視化搭建:是用可視化交互的方式對(duì)頁(yè)面的 HTML Tree, Data 和 Dynamic Logic 進(jìn)行增刪和修改, 從而實(shí)現(xiàn)頁(yè)面的生成. 頁(yè)面可視化搭建工具是實(shí)現(xiàn)頁(yè)面可視化編輯的軟件工具

          目的:任何工具的存在都是更高效地解決問(wèn)題. 頁(yè)面可視化搭建工具, 用于解決頁(yè)面生成的效率問(wèn)題. 可能前端工程師會(huì)覺(jué)得最有效率的頁(yè)面生成方式是打代碼, 但有搭建頁(yè)面需求的不只是前端工程師. 而可視化頁(yè)面搭建工具, 恰恰是面向"就缺一個(gè)前端工程師"的人員, 用于提升他們生成頁(yè)面的效率.

          差異點(diǎn)

          編程開發(fā)頁(yè)面

          可視化搭建頁(yè)面

          技能要求

          需要編程基礎(chǔ)

          可以沒(méi)有編程基礎(chǔ)

          操作方式

          在代碼編輯器中編寫代碼

          在可視化搭建工具中拖拉/填表/編寫代碼

          2 業(yè)界調(diào)研(20+)

          項(xiàng)目名稱

          項(xiàng)目簡(jiǎn)介

          能解決什么

          百度amis(開源)

          前端低代碼框架,通過(guò) JSON 配置就能生成各種后臺(tái)頁(yè)面,極大減少開發(fā)成本,甚至可以不需要了解前端

          不需要懂前端就能做出專業(yè)且復(fù)雜的后臺(tái)界面,不受前端技術(shù)更新的影響,可以完全使用可視化頁(yè)面編輯器來(lái)制作頁(yè)面

          政采云-魯班(未開源)

          魯班是一個(gè)基于業(yè)務(wù)組件快速生成頁(yè)面的搭建系統(tǒng)(站點(diǎn)、頁(yè)面、組件、數(shù)據(jù)、權(quán)限) ,JSON Schema將業(yè)務(wù)轉(zhuǎn)成數(shù)據(jù)→將數(shù)據(jù)轉(zhuǎn)為定義→將定義規(guī)范成結(jié)構(gòu)

          提升用戶體驗(yàn):頁(yè)面采用靜態(tài)化方案,渲染及訪問(wèn)速度更快;提高穩(wěn)定性:采用 Nginx 直接轉(zhuǎn)發(fā)的方案,頁(yè)面路由可用性保障及響應(yīng)性能更具優(yōu)勢(shì),同時(shí)支持更健壯的容災(zāi)方案,支持快速發(fā)版、回滾。;快速響應(yīng)業(yè)務(wù)需求:通過(guò)組件化復(fù)用,能夠快速響應(yīng)業(yè)務(wù)需求、提高研發(fā)人效;更好的業(yè)務(wù)賦能:使得產(chǎn)品、運(yùn)營(yíng)等同學(xué)也能參與頁(yè)面的搭建,提升業(yè)務(wù)迭代效率和數(shù)據(jù)可用性。;更好的系統(tǒng)化能力:基于搭建系統(tǒng),便于橫向和性能檢測(cè)系統(tǒng)、穩(wěn)定性保障系統(tǒng)、運(yùn)維部署系統(tǒng)、線上監(jiān)控系統(tǒng)進(jìn)行打通,形成系統(tǒng)級(jí)合力、復(fù)利。

          淘寶-imgcook(未開源)

          由設(shè)計(jì)稿一鍵智能生成代碼Skecher、ps、圖片、原型圖通過(guò)算法UI智能識(shí)別表達(dá)式轉(zhuǎn)成DSL,再解析DSL為前端頁(yè)面

          還原設(shè)計(jì)稿;Skecher、ps、圖片、原型圖直接生成代碼;精準(zhǔn)還原;所見(jiàn)所得生;成代碼可維護(hù)強(qiáng);機(jī)器智能識(shí)別理解;DSL / Plugin可自定義

          阿里-iceluna、Paas

          配置生成搭建描述協(xié)議 - 標(biāo)準(zhǔn)規(guī)范 - Schema再生成頁(yè)面及邏輯、低代碼編輯器 - 開發(fā)生態(tài)

          改變生產(chǎn)關(guān)系,提升生產(chǎn)力(賦能)- 中后臺(tái)通用搭建產(chǎn)品--所有人;降低研發(fā)成本(提效)- 低代碼開發(fā)平臺(tái)--開發(fā)人員(工程創(chuàng)建、開發(fā)、調(diào)試、發(fā)布全鏈路);孵化領(lǐng)域產(chǎn)品(搭建生態(tài))- PaaS平臺(tái)--開發(fā)人員(基礎(chǔ)設(shè)施,基于標(biāo)準(zhǔn)搭建協(xié)議生產(chǎn)搭建物料,為各業(yè)務(wù)場(chǎng)景提供搭建服務(wù)的運(yùn)行和開發(fā)環(huán)境)

          阿里-云鳳蝶(未開源)/pipeline (類似開源)

          像做PPT一樣去做web前;頁(yè)面 Data 編輯

          支持頁(yè)面 Data 編輯, 面向運(yùn)營(yíng)、產(chǎn)品人員, 編輯自由度為無(wú)嵌套的組件.;目前制作運(yùn)營(yíng)、活動(dòng)頁(yè)面功能上最好的工具.;提供頁(yè)面搭建的模板, 并支持自定義模板.;配置表單基于 Schema 生成, 配置表單操作功能完善.

          阿里-飛冰(未開源)/vue-layout(類似開源)

          Component Tree 編輯;針對(duì)中后臺(tái)開發(fā)人員;針對(duì)組件化的頁(yè)面, 主要實(shí)現(xiàn) Component Tree 的可視化編輯. 其核心功能在于頁(yè)面布局設(shè)計(jì): 在 UI 組件列表中選擇合適的組件, 通過(guò)拖拉的方式將組件嵌入到頁(yè)面中, 生成帶布局和樣式的頁(yè)面.

          支持 Component Tree 編輯, 面向中后臺(tái)開發(fā)人員, 編輯自由度為無(wú)嵌套的組件;使用"物料-區(qū)塊", 非前端開發(fā)人員可以快速搭建出可用、符合規(guī)范的頁(yè)面.;頁(yè)面以源碼方式輸出.;前端服務(wù)化的一種方式.

          淘寶-天馬(未開源)

          跨端頁(yè)面搭建

          跨終端搭建頁(yè)面;面向標(biāo)準(zhǔn)數(shù)據(jù)研發(fā)schema.json;對(duì)模塊的props入?yún)⒚枋?;?shù)據(jù)標(biāo)準(zhǔn)化;數(shù)據(jù)驅(qū)動(dòng)展示;編寫模塊代碼(解耦、模塊既代碼);打包每個(gè)模塊單獨(dú)打包;從頁(yè)面視角seed動(dòng)態(tài)加載;跨終端的緩存方案(phone tm tb緩存副本、對(duì)應(yīng)訪問(wèn)、代碼標(biāo)識(shí));服務(wù)端渲染SSR

          淘寶-方舟

          設(shè)計(jì)實(shí)現(xiàn)toC營(yíng)銷搭建

          終端秒開;采用前端優(yōu)化手段實(shí)現(xiàn)終端秒開

          阿里媽媽-淘積木(未開源)

          從基礎(chǔ)組件搭建完整的營(yíng)銷頁(yè)面的方案設(shè)計(jì)


          阿里@維奇

          文檔即代碼;文檔轉(zhuǎn)換成部分代碼


          阿里alist /Formily(開源)

          Formily 表單方案作為搜索區(qū)域的不二之選時(shí),通過(guò)對(duì)這些方案的整合,可以快速實(shí)現(xiàn)標(biāo)準(zhǔn)化的列表場(chǎng)景。;同時(shí)AList支持 JSON Schema 協(xié)議渲染,可通過(guò)數(shù)據(jù)驅(qū)動(dòng)快速開發(fā)。

          內(nèi)置Formily作為搜索區(qū)域方案,性能及功能強(qiáng)大;支持 Ant Design/Fusion Next 組件體系;支持JSON Schema 數(shù)據(jù)驅(qū)動(dòng)方案;副作用邏輯獨(dú)立管理,涵蓋各種復(fù)雜聯(lián)動(dòng)校驗(yàn)邏輯;支持各種復(fù)雜布局方案

          京東-MPM(未開源)

          采用ComData的數(shù)據(jù)配置方式解析成前端頁(yè)面,是本系統(tǒng)的核心,7PageData 是??的抽象描述層

          搭建物料豐富:MPM 現(xiàn)有 30+ 個(gè)組件、500+ 個(gè)模板,業(yè)務(wù)能?覆蓋商品、導(dǎo)購(gòu)、營(yíng)銷等多個(gè)場(chǎng)景。配置功能強(qiáng)?:三端渲染是 MPM 的強(qiáng)?能?,除此之外,MPM 還?持??配置 BI 排序、?動(dòng)化埋點(diǎn)、?動(dòng)化測(cè)試、??測(cè)速等。系統(tǒng)能?全?:MPM 為??保駕護(hù)航,不但配備了流暢的拖拽編輯器、實(shí)時(shí)預(yù)覽和??健康診斷能?,還對(duì)系統(tǒng)和??做了全??的監(jiān)控和容災(zāi)降級(jí)?案。

          美團(tuán)魔方(未開源)

          從基礎(chǔ)組件搭建完整的營(yíng)銷頁(yè)面的方案設(shè)計(jì)


          美團(tuán)樂(lè)高(未開源)

          從基礎(chǔ)組件搭建完整的營(yíng)銷頁(yè)面的方案設(shè)計(jì)


          esview(模仿樂(lè)高開源)

          Drag vue dynamic components to build your page,generate vue code.

          esview開源項(xiàng)目, 模仿美團(tuán)點(diǎn)評(píng)的樂(lè)高.完整的可視化頁(yè)面搭建框架, 面向中后臺(tái)開發(fā)人員.頁(yè)面布局結(jié)果看起來(lái)比較亂, 自定義組件寫法比較詭異; 沒(méi)有融合業(yè)務(wù)邏輯, 不支持在框架中寫頁(yè)面的代碼邏輯.

          Element UI表單設(shè)計(jì)及代碼生成器(開源)

          Element UI表單設(shè)計(jì)及代碼生成器,可將生成的代碼直接運(yùn)行在基于Element的vue項(xiàng)目中;也可導(dǎo)出JSON表單,使用配套的解析器將JSON解析成真實(shí)的表單。


          Vue-Layout(開源)

          從基礎(chǔ)組件搭建完整的營(yíng)銷頁(yè)面的方案設(shè)計(jì) 基于UI組件的Vue可視化布局、生成.vue代碼的工具。https://github.com/JakHuang/form-generator

          支持 Component Tree 編輯, 面向中后臺(tái)開發(fā)人員, 編輯自由度為可嵌套的組件.頁(yè)面的拖拉生成, 實(shí)現(xiàn)得很完整.用于頁(yè)面設(shè)計(jì), 所以偏向頁(yè)面元素的樣式控制.技術(shù)文章對(duì)可視化搭建工具數(shù)據(jù)流有深刻理解: 可視化在線編輯器架構(gòu)設(shè)計(jì).

          gaea-editor(開源)

          開源項(xiàng)目.支持 Component Tree 編輯, 面向中后臺(tái)開發(fā)人員, 編輯自由度為可嵌套的組件.頁(yè)面的拖拉生成, 實(shí)現(xiàn)得很完整.用于頁(yè)面設(shè)計(jì), 所以偏向頁(yè)面元素的樣式控制.技術(shù)文章對(duì)可視化搭建工具數(shù)據(jù)流有深刻理解: 可視化在線編輯器架構(gòu)設(shè)計(jì).


          pipeline(開源)

          運(yùn)營(yíng)/產(chǎn)品活動(dòng)頁(yè)面


          gengen(開源)

          根據(jù)接口生成頁(yè)面,減少重復(fù)性工作


          H5.cn

          https://www.ih5.cn/not-logged-in


          Brick Design(開源)

          拖拽區(qū)塊內(nèi)可直接編輯,生成前端頁(yè)面并預(yù)覽


          百度H5(未開源)

          https://h5.bce.baidu.com/docs/intro營(yíng)銷活動(dòng)頁(yè)面搭建


          其他(開源)

          1.website-builder 2.site-builder 3.VvvebJs 4.grapesjs 5.Maha 6.有贊微頁(yè)面 7.X-Page-Editor-Vue


          3 業(yè)界調(diào)研要點(diǎn)總結(jié)

          基于對(duì)以上頁(yè)面可視化搭建工具調(diào)研,業(yè)界有很多看法,拿出兩個(gè)比較有代表性的文章供大家參考:

          • 基于現(xiàn)代的前端框架,為什么沒(méi)有成熟的支持控件拖拽布局,并可以自動(dòng)生成前端代碼的設(shè)計(jì)器出現(xiàn)?
          • 前端服務(wù)化——頁(yè)面搭建工具的死與生

          以上調(diào)研了那么多業(yè)界比較牛的前端可視化的框架工程,大致思路是類似的,百家爭(zhēng)鳴,盡管阿里的飛冰云鳳蝶很完善了但還是存在以下兩點(diǎn)問(wèn)題:

          • 無(wú)法自動(dòng)生成交互邏輯
          • 只能在受限、具體的業(yè)務(wù)場(chǎng)景下發(fā)揮作用

          這兩個(gè)問(wèn)題存在就會(huì)導(dǎo)致我們生產(chǎn)設(shè)計(jì)出來(lái)的東西需要low code,如果是low code開發(fā)人員不愿意用,因?yàn)樯傻拇a不易維護(hù)且臃腫;如果給非開發(fā)人員用,他們又不會(huì)寫代碼,一點(diǎn)代碼都不想寫,所以他們也不愿意用;

          而我們站在巨人的肩膀上,能否把上面兩個(gè)問(wèn)題解決呢?目前我沒(méi)有什么好的辦法,但是我們可以先去把他們實(shí)現(xiàn)思路研究明白,才有可能去處上面的最難以解決的問(wèn)題。

          3.1 業(yè)界的工具總結(jié)要點(diǎn)

          相通之處

          不同之處

          可借鑒之處

          應(yīng)該避免問(wèn)題

          開源代碼可借鑒

          1、DSL方式解析拖拽或者配置好的偽代碼生成所需前端頁(yè)面,大部分使用的是JSON Schema形式;2、從配置要生成頁(yè)面整個(gè)處理步驟類似

          1、處理方法不同;2、定義的DSL字段不同;3、優(yōu)化程度不同;4、針對(duì)的業(yè)務(wù)場(chǎng)景不同

          1、從配置到生成DSL方式的偽代碼再到如何解析最后生成前端頁(yè)面的整體架構(gòu)設(shè)計(jì)及思想可借鑒;2、如何定時(shí)DSL字段schema的模式,如何處理轉(zhuǎn)移編譯打包上線及優(yōu)化

          1、定位準(zhǔn)用戶群;2、后期維護(hù)問(wèn)題

          1、百度amis(開源可借鑒 react)2、vue-layout(類似飛冰開源 vue) 3、pipeline (類似飛冰開源 react)4、美團(tuán)樂(lè)高(可參考 vue)5、美團(tuán)魔方(可參考react 6、esview(模仿樂(lè)高開源) 7、Brick Design(開源可借鑒 react) 8、gen(開源)9、gaea-editor(開源) 10、阿里alist/Formily(開源)11、魯班H5(開源)

          3.2 DSL方式

          JSON Schem數(shù)據(jù)結(jié)構(gòu)特點(diǎn):

          • 扁平化
          • 樹狀化

          demo1:

          {
            "type": "object",
            "properties": {
              "$attr": {
                "type": "object",
                "properties": {
                  "hidden": {
                    "type": "boolean"
                  }
                }
              },
              "$theme": {
                "type": "object",
                "properties": {
                  "themeColor": {
                    "type": "string"
                  }
                }
              },
              "items": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    “itemId”: {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
          復(fù)制代碼

          demo2:


          主站蜘蛛池模板: 日韩精品无码视频一区二区蜜桃| 国产午夜精品一区理论片飘花| 精品乱子伦一区二区三区高清免费播放 | 精品国产一区二区三区在线观看| 国产日韩一区二区三区在线观看| 亚洲日本乱码一区二区在线二产线| 国产三级一区二区三区| AA区一区二区三无码精片 | 人妻少妇精品一区二区三区| 国产成人一区二区三区电影网站| 国产精品女同一区二区| 精品人妻少妇一区二区| 波多野结衣一区在线| 成人免费视频一区二区三区| 久久精品免费一区二区| 国产成人久久精品麻豆一区| 国产精品一区二区av不卡| 天堂Av无码Av一区二区三区| 国产精品一区在线播放| 日韩精品一区二区三区四区| 国产在线一区二区在线视频 | 精品一区二区三区四区在线| 成人毛片一区二区| 精品无码一区二区三区爱欲九九 | 一区二区三区四区免费视频| 中文字幕一区二区日产乱码| 波多野结衣一区在线观看| 男人免费视频一区二区在线观看| 色窝窝免费一区二区三区| 激情亚洲一区国产精品| 国精产品一区一区三区| 亚洲av福利无码无一区二区| 日韩免费视频一区二区| 无码精品视频一区二区三区| 精品一区二区三区在线观看视频 | 国产一区二区三区免费观看在线| 亚洲综合一区二区国产精品| 精产国品一区二区三产区| 精品成人av一区二区三区| 午夜视频一区二区| 亚洲bt加勒比一区二区|