亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

企業信息開發平臺(6)Web表單設計器開源

系統 2277 0

????? Web表單設計器主要是利用WebBrowser控件,對網頁文件進行編輯,最后上傳到IIS當中,供Web應用程序使用(Web應用程序在運行時,會對Html元素中的擴展屬性進行解析,完成操作).

????? 設計器操作網頁主要是利用 IHTMLDocument2 對象,他是WebBrowser加載網頁之后,從WebBrowser.Document.DomDocument屬性取得的.加載網頁完成后必須將IHTMLDocument2對象的designMode屬性設置為:On,意思是開啟對網頁的設計.

??????下面我說明下關鍵點,主要是WebBrowser中Html元素獲取,Html元素與控件實體轉換,控件實體屬性排序等

      
1 // 取得當前選擇的Html元素
2
3 private IHTMLElement GetElementUnderCaret()
4 {
5 IHTMLElement element = null ;
6
7 IHTMLTxtRange rg = null ;
8 IHTMLControlRange ctlRg = null ;
9 switch (doc.selection.type)
10 {
11 case " None " :
12 case " Text " :
13 rg = doc.selection.createRange() as IHTMLTxtRange;
14
15 if (rg != null )
16 {
17 rg.collapse( true );
18 element = rg.parentElement();
19 }
20 break ;
21 case " Control " :
22 ctlRg = doc.selection.createRange() as IHTMLControlRange;
23 element = ctlRg.commonParentElement();
24 break ;
25 }
26
27 return element;
28 }

???????

      
1 /// <summary>
2 ? /// 將Html元素轉換為控件實體
3 ? /// </summary>
4 ? /// <param name="htmlControl"> 當前選擇的Html元素 </param>
5 ? /// <returns></returns>
6 ? public IControl GetControl(IHTMLElement htmlControl)
7 {
8 if (htmlControl == null ) return null ;
9 if ( ! (htmlControl is HTMLButtonElement))
10 return null ;
11
12 _htmlButton = htmlControl as HTMLButtonElement;
13 this ._htmlControl = htmlControl;
14
15 if ( this ._button == null ) this ._button = new WebFormDesigner.ControlOperation.PropertySort.Button();
16
17 // 將Html元素屬性值設置到控件實體屬性
18 if ( this ._htmlButton.id != null && this ._htmlButton.id.Trim() != "" )
19 {
20 this ._button.Id = this ._htmlButton.id;
21 this ._button.Name = this ._htmlButton.id;
22 }
23 if ( this ._htmlButton.title != null && this ._htmlButton.title.Trim() != "" )
24 this ._button.Title = this ._htmlButton.title;
25 if ( this ._htmlButton.value != null && this ._htmlButton.value.Trim() != "" )
26 this ._button.Value = this ._htmlButton.value; // this._htmlControl.getAttribute("value", 0) as string;
27 if ( this ._htmlButton.getAttribute( " buttontype " , 0 ) != null && this ._htmlButton.getAttribute( " buttontype " , 0 ).ToString() != "" )
28 this ._button.ButtonType = this ._htmlButton.getAttribute( " buttontype " , 0 ).ToString();
29 else
30 this ._htmlButton.removeAttribute( " buttontype " , 0 );
31 this ._button.ToDataEx = WebFormDesigner.ControlOperation.Evaluate.Parameters.ConvertFormString( this ._htmlButton.getAttribute( " todataex " , 0 ) as string );
32 if ( this ._htmlButton.accessKey != null && this ._htmlButton.accessKey.Trim() != "" )
33 this ._button.AccessKey = this ._htmlButton.accessKey; // .getAttribute("accesskey", 1) as string;
34 if ( this ._htmlButton.tabIndex != 0 )
35 this ._button.TabIndex = this ._htmlButton.tabIndex; // Int32.Parse(.getAttribute("tabindex", 0).ToString());
36 if ( this ._htmlButton.className != null && this ._htmlButton.className.Trim() != "" )
37 this ._button.Class = this ._htmlButton.className;
38 this ._button.Style = new CustomStyle( this ._htmlButton.style);
39 return this ._button;
40 }
      
1 /// <summary>
2 /// 將控件實體轉換為Html元素
3 /// </summary>
4 /// <param name="control"></param>
5 /// <returns></returns>
6 public IHTMLElement GetHtmlControl(IControl control)
7 {
8 if (control == null || ! (control is PropertySort.Button)) return null ;
9 this ._button = control as PropertySort.Button;
10
11 if ( this ._htmlControl == null || this ._htmlButton == null ) return null ;
12
13 // 將控件實體屬性值設置到Html元素屬性
14 if ( this ._button.Id != null && this ._button.Id != "" )
15 {
16 this ._htmlButton.id = this ._button.Id;
17 this ._htmlButton.name = this ._button.Id;
18 }
19 if ( this ._button.Title != null && this ._button.Title.Trim() != "" )
20 this ._htmlButton.title = this ._button.Title;
21 if ( this ._button.Value != null && this ._button.Value.Trim() != "" )
22 this ._htmlButton.value = this ._button.Value;
23 if ( this ._button.ButtonType == null )
24 this ._htmlButton.removeAttribute( " buttontype " , 0 );
25 else
26 this ._htmlButton.setAttribute( " buttontype " , this ._button.ButtonType, 0 );
27 this ._htmlButton.setAttribute( " todataex " , this ._button.ToDataEx.ToString(), 0 );
28 if ( this ._button.AccessKey != null && this ._button.AccessKey.ToString().Trim() != "" )
29 this ._htmlButton.accessKey = this ._button.AccessKey;
30 if ( this ._button.TabIndex != 0 )
31 this ._htmlButton.tabIndex = short .Parse( this ._button.TabIndex.ToString());
32 if ( this ._button.Class != null && this ._button.Class.Trim() != "" )
33 this ._htmlButton.className = this ._button.Class;
34 return this ._htmlControl;
35 }

對實體類屬性進行排序顯示,必須繼承要排序的實體類,并實現ICustomTypeDescriptor接口

      
1 class Button : Control.Button, ICustomTypeDescriptor

其中最重要的方法就是GetProperties

      
1 public PropertyDescriptorCollection GetProperties(Attribute[] attributes)
2 {
3 string [] sortName = new string [] { " CtlType " , " Id " , " Title " , " Value " , " ButtonType " , " ToDataEx " , " AccessKey " , " TabIndex " , " Class " , " Style " };
4 PropertyDescriptorCollection tmpPDC = TypeDescriptor.GetProperties( typeof (Control.Button), attributes);
5 return tmpPDC.Sort(sortName);
6 }

????? 既然是開源,廢話我就不說了,自己看代碼.只說明一點,控件自定義屬性要與前臺(Web應用程序,目前不開源)結合來用,需要各位自己做前臺html標簽擴展,這里已有屬性如果各位覺得不需要的話,可以刪除,刪除的時候有三個地方要改:控件類,控件解析類,控件屬性排序類

????? 源碼: http://files.cnblogs.com/zdming/DHtmlDemo.rar

企業信息開發平臺(6)Web表單設計器開源


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 四虎成人www国产精品 | 三级成人做爰视频 | 91热爆在线| 久久国产三级精品 | 久草在线视频资源站 | 久久精品中文字幕一区 | 国产深夜福利19禁在线播放 | sese视频在线 | 色综合精品 | 久久久91精品国产一区二区三区 | 欧洲在线免费视频 | 午夜视频欧美 | 一区精品在线 | 九九热这里| 四虎影院视频 | 亚洲欧美在线综合一区二区三区 | 亚洲国产欧美国产综合一区 | 色综合中文字幕天天在线 | 青草91| 中文字幕视频在线免费观看 | 亚洲精品国产字幕久久vr | 色综久久 | 波多野结衣手机视频一区 | 富二代啪啪精品网站 | 57pao一国产成视频永久免费 | 9999久久| 久草婷婷在线 | 九九九九热 | 日本成本人在线观看免费视频 | 亚洲美女啪啪 | 热99re久久精品天堂vr | 99香蕉国产| 久久精品最新免费国产成人 | 日本一级毛片2021免费 | 亚洲欧美日韩国产精品久久 | 国产精品一在线观看 | 四虎色 | 亚洲香蕉视频 | 国产日韩欧美综合 | 亚洲精品不卡在线 | 看日本真人一一级特黄毛片 |