ããéç计ç®æºä¿¡æ¯ç³»ç»ä¸ææ·±å ¥åå±ï¼å ¶ç³»ç»ç»æè¦æ±è¶æ¥è¶çµæ´»ï¼è¿ç§çµæ´»æ§å°±æ¯è¡¨ç°ä¸ºç¨åºçé«åº¦å¯é ç½®æ§ï¼å¯è½åºç¨ç¨åºçå·¥ä½æµç¨å¯ä»¥é便æ¹åï¼ç¨æ·çé¢ä¹å¯ä»¥é便æ¹åï¼é¢å¯¹è¿ç§ä¸æå¢å¼ºççµæ´»ï¼æ¯ä¸å¯è½éè¿ä¿®æ¹ç¨åºä»£ç æ¥å®ç°çï¼åºç¨ç³»ç»æ¬èº«éè¦åçæ·±å»ååï¼éè¦å®ç°å¾å¼ºçæ©å±æ§åçµæ´»æ§ãæ¤å¤zä¸é¨ç¨äºä¿®æ¹ç³»ç»é ç½®çå¤å´å·¥å ·ä¹æ¯é常éè¦çãè¿äºç³»ç»å¤å´å®å¶å·¥å ·å¾å¤§ä¸é¨åå°±æ¯ä¸äºæè§å³æå¾ç设计å¨ãæ¯å¦å·¥ä½æµç¼å¶å·¥å ·ï¼WinFormæWebFormçé¢è®¾è®¡å¨ï¼èæ¥è¡¨è®¾è®¡å¨ä¹æ¯å ¸åçå¤å´å®å¶å·¥å ·ã
ããæ»æå¨ç¥ï¼æè§å³æå¾ç设计å¨æ¯ä¸ªç¸å½å¤æçç¨åºï¼é¦å å®éè¦å¤æçå¾å½¢åç¨æ·çé¢ç¼ç¨ï¼å æ¬å¾å½¢çç»å¶ï¼é¼ æ é®çäºä»¶çå¤çï¼è¿è¦æå±å¹éªçãå ¶æ¬¡è¿æå®åå°çæ°æ®ç»´æ¤å¤çï¼å æ¬ç¨æ·çé¢åæ°æ®çåæ¥ï¼æ°æ®çç»ç»å®æï¼ä»¥åå è½½åä¿åææ¡£çå¤çãèä¸è¿äºå¤çè¿ç¨å¯ä»¥ç®æ¯çº ç¼ å¨ä¸èµ·ï¼éè¦é常认çå°å¿çåæ设计ï¼ä»ç»ç¼ç ã
ããæ¬æå°±æ¯æ¢è®¨å¦ä½å®ç°ä¸ä¸ªæè§å³æå¾ç设计å¨ã å ³äºæ¬æï¼å¯ä»¥åèä½è çå¦ä¸ç¯æç« ï¼å¦ä½ä½¿ç¨C#ç¼åææ¬ç¼è¾å¨ã
ãã设计å¨ç±»å
ãã设计å¨æç §ç¨æ·çé¢å使ç¨ä½éªï¼å¯ä»¥å为两ç§æ¨¡å¼ï¼ä¸ç§æ¯åºäºç´è§åæ æ¹å¼ï¼å¦ä¸ç§æ¯åºäºæµå¼æçæ¹å¼ã微软çVisioå°±æ¯å ¸åçç´è§åæ æ¹å¼ï¼èWordåæ¯æµå¼æçæ¹å¼ï¼èVS.NETçWebFormçªä½è®¾è®¡å¨å°±æ¯è¿ä¸¤è çç»åã
ããå¨ç´è§åæ æ¹å¼ç设计å¨ä¸ï¼è®¾è®¡å ç´ æ¯ä½¿ç¨XYåæ æ¥å¨è®¾è®¡è§å¾ä¸å®ä½çï¼å¯¹äºç©å½¢å ç´ ä¸è¬æå®å®çå·¦ä¸è§çä½ç½®æ¥å®ä½ï¼è®¾è®¡è éè¦æå®è®¾è®¡å ç´ çä½ç½®ï¼ææ¶è¿è¦è®¾ç½®å®ç大å°ã对äºçº¿æ®µéè¦æå®ä¸¤ä¸ªç«¯ç¹çXYåæ ã设计è åªè¦è®¾ç½®å¥½äºå个å ç´ çä½ç½®å¤§å°å°±å®æäºè®¾è®¡ææ¡£çåºæ¬ç»æï¼å©ä¸çå°±æ¯è®¾ç½®å个å ç´ åèªçå 容äºã
ããå¨æµå¼æç设计å¨ä¸ï¼è®¾è®¡å ç´ æ¯ä¸éè¦æå®ä½ç½®çï¼æ¯æ ¹æ®ä¸è¬æ ¹æ®ä»å·¦å°å³ï¼ä»ä¸å°ä¸çæåååå¡«å å°è®¾è®¡è§å¾ä¸ï¼ä½ææ¶ä¼åæå ¶ä»æåååï¼ã设计å ç´ çä½ç½®æ¯å¨æ计ç®çãæµå¼è®¾è®¡å¨å¯è½è¿è¦ä½¿ç¨é®çç´æ¥è¾å ¥ææ¬ï¼éè¦æ¾ç¤ºå æ ãæµå¼æç设计å¨å¯ä»¥çä½æåå¤çå¨ã
ããè¿ä¸¤ç§è®¾è®¡å¨ç¨æ·çé¢å使ç¨ä½éªä¸ä¸æ ·ï¼å æ¤å ¶ç¨åºå¤ççæ¹å¼ä¹ä¸ä¸æ ·ï¼ç´è§åæ 设计å¨åå¨è®¾è®¡å ç´ é´ç¸äºè¦çï¼è¿å½±åç»å¾ï¼æ¤å¤è¿éè¦å¤§éçé¼ æ ææ½æä½ï¼éè¦è®¤çå¤çé¼ æ äºä»¶ï¼ä½é®çäºä»¶å¤çå¾ä¸å¤ãèæµå¼æç设计å¨ä¸å ç´ ä¸ä¼ç¸äºè¦çï¼å æ¤ç»å¶èµ·æ¥æ¹ä¾¿ç¹ï¼é¼ æ äºä»¶å¤çä¸å¤ï¼ä½é®çäºä»¶å¤ççå¤ï¼æ¤å¤è¿éè¦å¤çå æ ãä½è¿ä¸¤ç§è®¾è®¡å¨å®çæ档对象模åææ¯è¾å¤§ç类似æ§ã
ããå¨æ¬æä¸ï¼ä»¥ä¸åªè®¨è®ºç´è§åæ æ¹å¼ç设计å¨ã
ãã设计å¨çåè½
ãã个人认为ä¸ä¸ªè®¾è®¡å¨åºå½å®ç°çåè½æ
ãã设计ææ¡£çå è½½åä¿åï¼è®¾è®¡å¨å¯ä»¥å°å½å设计çå 容ä¿åå°ä¸ä¸ªææ¡£ä¸ï¼è¿ä¸ªææ¡£å¯ä»¥ä¿åå°æ件ä¸ï¼ä¹å¯ä¿åå°æ°æ®åºææ个æå¡å¨ä¸ã设计å¨å¯ä»¥å è½½ææ¡£æ¥å®å ¨éç°ä¸æ¬¡ç设计ç»æã
ãã设计å¨å¯ä»¥å¿«éåç¡®çç»å¶ææ¡£è§å¾ï¼å½è§å¾å¤§å°è¶ è¿è®¾è®¡åºåæ¶ï¼ç¨æ·çé¢åºå½åºç°æ»å¨æ¡æ¥è¿è¡æ»å¨æä½ã
ããå½åæäºæ¢å¼è®¾è®¡ä½éªï¼ç¨æ·å¯ä»¥ä½¿ç¨é¼ æ ææ½æä½æ¥æ¹åå ç´ çä½ç½®å¤§å°çå¸å±è®¾ç½®ï¼ç¨æ·æ¹åäºå ç´ çå¸å±ææäºå±æ§æ¶ï¼å¿ é¡»ç«å³æ´æ°ææ¡£è§å¾ï¼èä¸æ´æ°åºååºå½å°½éå°ã
ããæ¯ææè§å³æå¾ç设计ä½éªï¼å½è®¾è®¡å¨éè¦è¿è¡å¾å½¢è¾åºï¼ä¾å¦è¾åºå¾çææå°æ¶ï¼ç¨æ·å¨è®¾è®¡å¨ä¸ç设计è§å¾åºå½åè¾åºçå¾å½¢ä¿æä¸è´ã
ããå°½éåå°å±å¹éªçãè¿éè¦ç»å¶å¾å½¢ææ´æ°è§å¾æ¶éè¦è¿è¡ä¼åï¼å°½å¿«å®æç»å¶æä½ã
ããè¥è®¾è®¡å¨éè¦è¿è¡æ©å±æ¶ï¼è®¾è®¡å¨åºå½æä¾è¶³å¤çæ©å±è½åï¼å¼å人åå¯ä»¥å¨è¿ä¸ªè®¾è®¡å¨çåºç¡ä¸æ·»å æ°çç¹æ§ï¼ä½¿å¾è®¾è®¡å¨è½æ¾ç¤ºæ°æ ·å¼çææ¡£è§å¾ã并ä¸å è½½åä¿åææ¡£æ¶ä¹è½å¤çæ°çææ¡£ç»æã
ããè¥éè¦å¯ä»¥æ¯æVBAèæ¬ï¼ç¨æ·å¯ä»¥ç¼åVBAèæ¬æ¥æ§å¶è®¾è®¡å¨ï¼å æ¬å ¶è®¾è®¡çææ¡£å 容ã
ããæ档对象模å
ãã对äºè®¡ç®æºç¨åºï¼åå°å³å®åå°ï¼è设计å¨çåå°å°±æ¯æ档对象模åãç¸ä¿¡å¤§å®¶å¯¹æ档对象模åææäºè§£ï¼æ们å¨WEB页é¢ä¸ä½¿ç¨JAVASCRIPTèæ¬æ¶å°±æ¯è®¿é®äºHTMLæ档对象模å,æ们æä½XMLæ档就æ¯è®¿é®XMLæ档对象模åã
ããW3Cå½é ç»ç»å¯¹æ档对象模åæ¯è¿æ ·å®ä¹çï¼æèª http://www.w3.org/DOM/ ï¼
ããThe Document Object Model is a platform- and language-neutral interface that will allow programs and scripts to dynamically access and update the content, structure and style of documents. The document can be further processed and the results of that processing can be incorporated back into the presented page. This is an overview of DOM-related materials here at W3C and around the web.
ãã以æ个人çè±æ水平翻è¯å¦ä¸
ããæ档对象模åæ¯ä¸ç§è¯è¨ä¸ç«çæ¥å£æå¹³å°ï¼ç¨åºæèæ¬è½å©ç¨å®æ¥è®¿é®åæ´æ°ç»æåçææ¡£ãè¿äºææ¡£å¯ä»¥è¢«è¿ä¸æ¥çå¤çï¼å¤çç»æå¯ä»¥ç»æä¸ä¸ªææ页é¢ãè¿æ¯W3C对webä¸ç对æ档对象模ååççä¸è¬çæ³ã
ããæ个人认为ï¼å¯¹äºç¼ç¨ï¼æ档对象模åå ¶ä¸»è¦å 容就æ¯ï¼é¢å¯¹æ¯è¾å¤æçææ¡£ï¼ä½¿ç¨é¢å对象çç¼ç¨ææ³ï¼ä½¿ç¨ä¸ä¸ªä¸ªç¨åºä¸çä¸ç对象æ¥æ å°ææ¡£ä¸çæ¯ä¸ä¸ªç¹å®çé¨åãå è½½ææ¡£æ¶ï¼å¯ä»¥è§£æææ¡£ï¼å¹¶æå ¶è¡¨ç¤ºçå 容æ å°ä¸ºä¸ä¸ªä¸ªå¯¹è±¡ï¼æ¤æ¶åºç¨ç¨åºå¯ä»¥ä¿®æ¹è¿äºå¯¹è±¡çæ°æ®ï¼å½ä¿åææ¡£æ¶ï¼å¯ä»¥å°è¿äºå¯¹è±¡æ°æ®ç»ç»èµ·æ¥æç §ç¹å®çæ ¼å¼ä¿åå°ææ¡£ä¸ãè¿æ ·ç¨åºå°±éè¿è®¿é®æ档对象æ¥è®¿é®ææ¡£ï¼ä¹å¯ä»¥ä¿®æ¹æ档对象æ¥ä¿®æ¹ææ¡£ï¼å¦æ¤å®ç°äºå¯¹å¤æææ¡£çå¤çãæ档对象模åæ¯å¤çå¤æææ¡£çæ åæä½æ¨¡å¼ã
ãã设计å¨å¤ççæ¯å¤æçææ¡£ï¼å æ¤ä¹éè¦ä½¿ç¨æ档对象模åãæ档对象模åå¯å为ä¸å¤§é¨åï¼ææ¡£åºæ¬å ç´ ï¼æ档对象ååç§ç±»åçä»ææ¡£åºæ¬å ç´ æ´¾çåºçææ¡£å ç´ ã
ããææ¡£åºæ¬å ç´ æ¯æ´ä¸ªæ档对象模åçæåºç¡ç对象ï¼å°±åObjectç±»åæ¯.NET对象éå¢çåºç¡ä¸æ ·),å®å®ä¹äºææ¡£å ç´ çéç¨æ¥å£ï¼ä¸è¬å®ä¹ä¸ºæ½è±¡ç±»ï¼ç±»åå称å¯ä»¥ä¸ºDesignElement ã
ããæ档对象æ¯æ档对象模åç顶级对象ï¼å®å å«äºæ´ä¸ªææ¡£çå 容ï¼å ¶ç±»åå称å¯ä»¥ä¸º DesignDocument ã
ããåç§ç±»åçææ¡£å ç´ ï¼å®æ¯æ´¾çèªææ¡£åºæ¬å ç´ ç±»åï¼ç¨äºæè¿°ææ¡£ä¸åç§å®é åå¨çå ç´ ãå ¶ä¸å¯ä»¥å®ä¹ä¸ç§ææ¡£å ç´ ï¼å®ä»¬å¯ä»¥å®¹çº³å ¶ä»çææ¡£å ç´ ï¼è¿äºå ç´ å°±æ¯å®¹å¨å ç´ ãå®é ä¸æ档对象就æ¯æ大ç容å¨å ç´ ãç±äºæ档对象模åä¸åå¨å®¹å¨å ç´ ï¼å æ¤ææç对象é½ç»æä¸ä¸ªæ ç¶ç»æï¼ç§°ä¸ºæ档对象æ ï¼å ¶ä¸æ ¹èç¹å°±æ¯æ档对象ãåç§ææ¡£å ç´ æ¯æ档对象模åçæ´»è·ååï¼æ©å±æ档对象模å大é¨åå·¥ä½å°±æ¯æ©å±è¿äºææ¡£å ç´ ,æ©å±ææ¡£å ç´ éè¦æ©å±å®ä»¬ç两个åè½ï¼ä¸ä¸ªæ¯ææ¡£çå è½½åä¿åï¼ä¸ä¸ªå°±æ¯ææ¡£æ¬èº«ä¿åçæ°æ®ã
ããæ档对象模åå¯ä»¥åç¨æ·çé¢ç¸å ³ï¼ä¹å¯ä»¥ä¸ç¸å ³ï¼ä¾å¦XMLæ档对象模åæ¯æ ç¨æ·çé¢çã设计å¨çæ档对象模åæ¯åç¨æ·çé¢ç¸å ³çï¼å¯¹æ¤ï¼æ©å±è®¾è®¡æ档对象模åçææ¡£å ç´ æ¶è¿éè¦æ©å±å®ä»¬çç»å¶å¾å½¢çè½å以便设计å¨è½ç»å¶æ°åçææ¡£å ç´ å¾å½¢ã
ãã对äºè®¾è®¡æ档对象模åï¼å ¶ææ¡£åºç¡å ç´ å¯ä»¥å®ä¹çå 容æä¸ä¸ªæ¹é¢ï¼ææ¡£çå è½½åä¿åï¼ç¨æ·çé¢ç¸å ³çæ¥å£ï¼ç»´æ¤æ档对象æ çæ¥å£ã
ããææ¡£çå è½½åä¿å
ãã设计ææ¡£å¯ä»¥ä¿å为äºè¿å¶ææ¡£ï¼çº¯ææ¬ææ¡£åå ¶ä»æ ¼å¼ï¼å¨æ¤æ¨è使ç¨XMLææ¡£æ ¼å¼ãå ¶å¥½å¤æ¯
ãã设计æ档对象模ååXMLæ档对象模åé½å±äºæ档对象模åï¼ä¸¤è åçåç»æä¸é½æçå¾å¤§çç¸ä¼¼æ§ï¼è®¾è®¡ææ¡£å ç´ åXMLææ¡£å ç´ å¯ä»¥åå¨ä¸ä¸å¯¹åºçå ³ç³»ãå æ¤ä½¿ç¨XMLææ¡£å è½½åä¿å设计æ档对象æ¯å¾èªç¶çï¼å®ç°èµ·æ¥æ¯è¾ç®åã
ããXMLææ¡£æ¯å½é æ åçææ¡£æ ¼å¼ï¼é常å¼æ¹ï¼å ¶ä»åºç¨ç¨åºå¾å®¹æå©ç¨è®¾è®¡å¨çæçæ件ï¼ç®åäºè®¾è®¡å¨åå ¶ä»åºç¨ç³»ç»çæ°æ®æ¥å£ã
ããå·²ç»åå¨æ åçXMLæ档解æå¨åXMLæ档对象模åï¼å æ¤ä¸éèªå·±å¤çXMLææ¡£ï¼åªéè°ç¨æ ååºå è½½XMLæ档对象模åï¼ç¶åæç §ä¸ä¸å¯¹åºçå ³ç³»æ¥çæ设计æ档对象模åã
ãã使ç¨XMLææ¡£æå©äºä¿æ设计å¨çå个çæ¬é´çå ¼å®¹æ§ãåªè¦XMLææ¡£ç»æä¸åç大ååï¼ä½çæ¬ç设计å¨å¯ä»¥å è½½é«çæ¬ç设计å¨çæçææ¡£ï¼åæ ·é«çæ¬ç设计å¨ä¹å¾å®¹æå è½½ä½çæ¬ç设计å¨çæçææ¡£ãè¥ä½¿ç¨äºè¿å¶æä»¶æ ¼å¼ï¼å设计å¨éè¦ç¼å对äºä¸åçæ¬ç设计ææ¡£çé¢å¤çå¨ï¼æ¯è¾éº»ç¦èä¸å¾é¾åå°åä¸å ¼å®¹ã
ããå¨ä¿å对象æ°æ®å°XMLææ¡£æ¶ï¼ä¿åæ¹å¼æ两ç§ï¼ä¿åå°XMLå±æ§åä¿åå°XMLå ç´ ãå½æå®æ个XMLå ç´ ç¨äºä¿å对象æ°æ®æ¶ï¼è¥ä½¿ç¨ä¿åå°XMLå±æ§æ¶ï¼ä¼å¯¹å¯¹è±¡æ¯ä¸ä¸ªå±æ§ï¼å°å ¶æ°æ®ä¿åå°æå®å称çXMLå±æ§ä¸ï¼èä¿åå°XMLå ç´ æ¶ï¼ä¼å¨å½åçXMLèç¹ä¸æ°å¢ä¸ä¸ªæå®å称çXMLåå ç´ ãç¶åå°å±æ§å¼ä¿åå°XMLåå ç´ ä¸ãè¿ä¸¤ç§æ¹å¼çæçXMLçæ为
ãã<element attributename1="value1" attributename2="value2" />
ããå
ãã<element >
ãã<attributename1>value1</attributename1>
ãã<attributename2>value2</attributename2>
ãã</element>
ããé¢å¯¹è¿ä¸¤ç§æ¹å¼ï¼æ建议éæ©ç¬¬äºç§,å ¶åå æ
ããè¥ä¿åå°XMLå±æ§ï¼åå½å¯¹è±¡å±æ§æ¯è¾å¤æ¯ï¼ä½¿ç¨ç¼©è¿æ¹å¼è¾åºçXMLææ¡£å°æ¯è¾å®½ï¼å¨æ¥çæ¯ä¼åºç°æ¨ªåæ»å¨æ¡ï¼ä¸å©äºé 读ãèä¿åå°XMLå ç´ æ¶ï¼XMLææ¡£ä¸ä¼å¾å®½ï¼ä¾¿äºé 读ã
ããè¥å¤è¡ææ¬ä¿åå°XMLå±æ§ï¼åä¸è¬ä¸ä¼ä»¥å¤è¡ææ¬çæ¹å¼ä¿åï¼ä¸å©äºé 读ãèä¿åå°XMLå ç´ æ¶ï¼åä¿åçææ¬åå®é çææ¬æ¯è¾æ¥è¿ï¼ä¾¿äºé 读ã
ããè¥ä¿åå°XMLå±æ§ï¼åä¿åæ¹å¼åªè½æ¯ä¸ä¸ªå±æ§å符串ï¼èä¿åå°XMLå ç´ æ¶åä¿åçæ¹å¼å¾å®¹æè¿è¡æ©å±ã
ããè½ç¶ä¿åå°XMLå±æ§æ¹å¼çæçXMLææ¡£æ¯ä¿å为XMLå ç´ çæ¹å¼è¦å°ï¼ä½XMLææ¡£æ ¼å¼ç设计ç®æ æ¯æ¹ä¾¿ä¿åæ°æ®å交æ¢æ°æ®ï¼èä¸å¨ä¹ææ¡£æ¯å¦åä½ï¼å æ¤æ们éæ©ä¿åæ¹å¼æ¶ä¸å¿ å¨ä¹XMLææ¡£ç大å°ãèä¸ä¸è¬è®¾è®¡ææ¡£çå 容ä¸å¾å¤ï¼ä»¥ç®å计ç®æºç¡¬ä»¶æ¡ä»¶æ é¡»å¨æXMLæ档大å°ã
ããå½è®¾è®¡å¨ä»XMLææ¡£å 载设计ææ¡£æ¶ï¼ é¦å çæXMLæ档对象æ ï¼ ç¶åæ ¹æ®ä¸ä¸å¯¹åºçå ³ç³»æ¥çæ设计æ档对象æ ï¼æ¤æ¶éè¦ä»XMLå ç´ ä¿åçä¿¡æ¯æ¥å¤æ该XMLå ç´ æ¯å¯¹åºäºé£ç§è®¾è®¡ææ¡£å ç´ ï¼è®¾è®¡å¨å¯ä»¥ä»XMLå ç´ å称æ¥å¤æï¼ä¹å¯ä»¥ä»æ个XMLå±æ§æ¥å¤æï¼å¨æ¤æ使ç¨XMLå ç´ å称æ¥å¤æï¼é¦å æ¯é对ä¸ä¸ªXMLå ç´ ï¼è·å¾å ¶å称æ¯è·å¾æ个å±æ§å¼è¦æ¹ä¾¿ï¼å ¶æ¬¡æ¯XMLå称æ¯å¿ ç¶åå¨çï¼è¯å®ä¸ä¸ºç©ºï¼èXMLå±æ§åå¯è½ç±äºæç§åå è缺失ï¼XMLå称æ¯XMLå±æ§è¦ç¨³å®ã
ããåºäºä¸è¿°ç认è¯ï¼å½éç¨XMLææ¡£ä½ä¸ºä¿åæ¹å¼æ¶ï¼è®¾è®¡åºç¡å ç´ éè¦å®ä¹ä¸¤ä¸ªèå½æ°ï¼ä¸ä¸ªç¨äºä»XMLææ¡£å 载对象å±æ§æ°æ®ï¼å¦ä¸ä¸ªè¦åXMLææ¡£ä¿å对象æ°æ®ãèå ¶ä»ææ¡£å ç´ å¯¹è±¡åæ ¹æ®éè¦éè½½è¿ä¸¤ä¸ªå½æ°æ¥å®ç°èªå·±çå è½½åä¿å对象å±æ§çæä½ï¼å¯¹äºå®¹å¨å ç´ ï¼è¿éè¦ä¿ååå ç´ æ°æ®å°XMLææ¡£åä»XMLææ¡£å è½½åå ç´ ãå½ç¶å¨å®é åºç¨ä¸è¿è¦æ ¹æ®éè¦å®ä¹ä¸äºè¾ å©æåæ¥å¸®å©å è½½åä¿åXMLææ¡£ã
ãã设计å¨çæçXMLææ¡£ä¸è¬ä¿å为æ件形å¼ï¼å½ç¶å¯ä»¥æ ¹æ®éè¦æ¥ä¿åçæ°æ®åºéæè ä¸ä¼ å°åç§æå¡å¨ä¸ãè¥ç´æ¥ä¿åå°æ°æ®åºä¸ï¼åæ´ä¸ªåºç¨ç³»ç»ä¸ææç设计å¨ç¼è¾çé½æ¯åä¸ä¸ªææ¡£çæ¬ï¼èä¸ä¸æ¦ä¿å便å¯ç«å³åºç¨ã
ããç¨æ·çé¢ç¸å ³çæ¥å£
ãã设计å¨éè¦ç»å¶ææ¡£è§å¾ï¼åéè¦è®¾è®¡æ档对象模åæä¾æ¯æãå æ¤ææ¡£åºæ¬å ç´ éè¦å®ä¹ä¸¤ç±»éç¨æ¥å£ï¼ä¸ä¸ªæ¯åç»å¶ææ¡£ç¸å ³çæ¥å£ï¼ä¸ä¸ªæ¯å¤çé¼ æ é®çäºä»¶ç¸å ³çæ¥å£ã
ããç»å¶ææ¡£ç¸å ³æ¥å£
ãã大é¨åææ¡£å ç´ éè¦å¨ææ¡£è§å¾ä¸ç»å¶å 容ï¼å æ¤å®ä»¬éè¦éè½½ç»å¶ææ¡£çæ¥å£ï¼è¿ç±»æ¥å£ä¸»è¦æ两个å½æ°ï¼ä¸ä¸ªæ¯è®¡ç®å ç´ å¤§å°çå½æ°ï¼ä¸è¬å½å为 RefreshSize , ä¸ä¸ªæ¯ç»å¶å ç´ çå½æ°,ä¸è¬å½å为RefreshViewã
ããä¸è¬è®¾è®¡è æå®å ç´ ç大å°ï¼å ç´ æ¬èº«ä¸éè¦è®¡ç®å ¶å¤§å°ï¼ä½æäºå ç´ å¯è½æ¯æ ¹æ®å ¶å 容èªå¨è®¾ç½®å¤§å°ï¼å æ¤éè¦é载计ç®å ç´ å¤§å°çå½æ°RefreshSizeæ¥èªå¨è®¾ç½®å¤§å°ãèªå¨è®¾ç½®å¤§å°å¯è½åªæ¯è®¾ç½®å ç´ ç宽度æé«åº¦ï¼ä¹å¯è½æ¯åæ¶è®¾ç½®å ¶å®½åº¦åé«åº¦ãåä¸ä¸ªå ç´ ï¼å¯è½å¨ä¸ç§ç¶æä¸ä¸ä¼èªå¨è®¾ç½®å¤§å°ï¼èå¨å¦å¤ä¸ç§ç¶æä¸éè¦èªå¨è®¾ç½®å¤§å°ãææçè¿äºæä½é½éè¦å¨RefreshSizeå½æ°ä¸å®æã
ããä¸è¬ç设计å ç´ é½éè¦å¨ææ¡£è§å¾ä¸ç»å¶å 容ï¼è¿æ¶éè¦éè½½RefreshViewå½æ°ï¼è¿ä¸ªå½æ°åæ°å å«äºä¸ä¸ªSystem.Drawing.Graphics对象ï¼å ç´ éè¦ä½¿ç¨è¿ä¸ªGraphics对象æ¥ç»å¶èªå·±ç¹å®çå 容ï¼å¯è½æ¯ç»å¶ææ¬ï¼å¾çæå ¶ä»å¾å½¢ã
ããå½ææçææ¡£å ç´ é½å®ç°äºç»å¶ææ¡£ç¸å½çæ¥å£ï¼åå¨è®¾è®¡å¨çè°åº¦ä¸ï¼ä¸ä¸ªå®æ´ç设计ææ¡£è§å¾å°±ç»å¶åºæ¥äºãèæ©å±è®¾è®¡å¨æ¶ï¼è¥éè¦æå®æ°æ¾ç¤ºæ ·å¼çå ç´ æ¶ï¼éè¦éè½½RefreshViewåRefreshSizeå½æ°æ¥å®ç°æ°çæ¾ç¤ºæ ·å¼ï¼æ¤æ¶æ©å±ç设计å¨å°±è½æ¾ç¤ºæ°æ ·å¼çææ¡£è§å¾ã
ããå¤çé¼ æ é®çäºä»¶ç¸å ³æ¥å£
ãã设计å¨ä¸ä¸»è¦å¤çé¼ æ äºä»¶ï¼ææ¡£åºç¡å ç´ å¯ä»¥å®ä¹ä¸äºå¤çé¼ æ äºä»¶çèå½æ°ï¼å称å¯ä»¥ä¸º HandleMouseDown , HandleMouseMove å HandleMouseUp ã
ãã为äºæ¹ä¾¿ææ¡£å ç´ å¤çé¼ æ åæ ï¼è®¾è®¡å¨å¨è°ç¨ææ¡£å ç´ çHandleMouseå½æ°æ¶ï¼é¦å å°é¼ æ å æ åæ è¿è¡è½¬æ¢ï¼è¦å°é¼ æ å æ å¨è§å¾åºåä¸çåæ 转æ¢ä¸ºææ¡£å ç´ å é¨çç¸å¯¹åæ ï¼å³ç¸å¯¹äºå ç´ å·¦ä¸è§çç¸å¯¹åæ ã
ãã设计å¨è¦ä¾é é¼ æ äºä»¶æ¥å®ç°è®¾è®¡å ç´ çææ½æä½ä»¥å®ç°äºæ¢å¼è®¾è®¡ä½éªãå ³äºé¼ æ ææ½æä½å ¸åçåºç¨å°±æ¯ä½¿ç¨8个æ§å¶ç¹æ¥ç¼è¾å ç´ è¾¹çãå½ä¸ä¸ªå ç´ è¾¹çæ¯ç©å½¢æ¶ï¼ä¼å¨å ç´ çè¾¹çç©å½¢çå个è§åå个边çä¸ç¹ä¸åå¸8个æ§å¶ç¹ï¼å½é¼ æ 移å¨å°è¿8个ç¹æ¶ä¼ä¿®æ¹é¼ æ å æ æ ·å¼ï¼å½é¼ æ å æ å¨æ个æ§å¶ç¹ä¸æ¶ï¼ç¨æ·æä¸é¼ æ æé®åå¼å§è¿è¡é¼ æ ææ½æä½ï¼ææ½æ¶ä¼æ¾ç¤ºä¸ä¸ªè线ç»å¶çè¾¹æ¡ï¼å½æ¾å¼é¼ æ æé®åææ½æä½ç»æï¼æ¤æ¶è®¾è®¡å¨ä¿®æ¹ææ½çå ç´ çç©å½¢è¾¹çã
ããæäºææ¡£å ç´ å¹¶ä¸è¿è¡æ åçé¼ æ ææ½æä½ï¼ä¾å¦å¯¹äºå®¹å¨å ç´ ï¼å ¶å é¨çé¼ æ ææ½ä¸ç§»å¨å¯¹è±¡èæ¯ç»åºä¸ä¸ªéæ©ç©å½¢æ¥éæ©è¥å¹²ä¸ªå对象ï¼å¯¹äºè¡¨æ ¼å ç´ ï¼å®çè¡¨æ ¼çº¿ä¸çé¼ æ ææ½æä½æ¯ä¿®æ¹è¡¨æ ¼è¡çé«åº¦åè¡¨æ ¼åç宽度ï¼è对äºçº¿æ®µåæ¯ä¿®æ¹ç«¯ç¹ä½ç½®ã
ããå½ç¨æ·ä¸å°å¿æä¸é¼ æ æé®ï¼æåªæ¯éæ©æ个å ç´ è并ä¸æ³è¿è¡é¼ æ ææ½æä½ï¼æ¤æ¶å¯ä»¥ä½¿ç¨ä¸ä¸ªåæ° System.Windows.Forms.SystemInformation.DragSize æ¥å¤ææ¯å¦è¿è¡é¼ æ ææ½ãå½é¼ æ æé®æä¸æ¶ï¼è®¾è®¡å¨å°±éå®é¼ æ ï¼è¥é¼ æ æé®æä¸åé¼ æ 移å¨è·ç¦»è¶ åºäº DragSize çèå´æ¶ï¼å表示ç¨æ·æ¯æ³è¿è¡é¼ æ ææ½æä½çï¼æ¤æ¶å¼å§çæ£çé¼ æ ææ½æä½ãè¥é¼ æ æé®ä»æä¸å°æ¾å¼æ¶é¼ æ 移å¨è·ç¦»å§ç»æ²¡è¶ åº DragSize çèå´ï¼å表示ç¨æ·æ²¡æè¿è¡é¼ æ ææ½æä½çæå¾ãè¿æ ·çå¤æå¯ä»¥è®©è®¾è®¡å¨å®¹å¿ç¨æ·çä¸äºè¯¯æä½ã
ãã设计å¨è¿è¦å¤çé¼ æ åå»äºä»¶å¤çï¼å¯¹äºæäºå å«ææ¬çå ç´ ï¼ç¨æ·åå»è¯¥å ç´ ï¼åå¨è®¾è®¡è§å¾ä¸æ¾ç¤ºä¸ªææ¬è¾å ¥æ¡æ¥ç´æ¥ç¼è¾å¯¹è±¡çææ¬å 容ãå¯ä»¥å®ä¹ä¸ä¸ªæ¥å£ ILabelEditable , å½ç¨æ·åå»æ个å ç´ ï¼è®¾è®¡å¨åç°è¯¥å ç´ å®ç°äº ILabelEditable æ¥å£ï¼åå¨è®¾è®¡è§å¾ä¸å¨æçæ¾ç¤ºä¸ä¸ªææ¬è¾å ¥æ¡ï¼ç¶åè°ç¨è¯¥æ¥å£çæåæ¥ç´æ¥ç¼è¾å¯¹è±¡ææ¬å 容ã
ããç»´æ¤æ档对象æ
ããææ¡£åºç¡å ç´ è¦å®ä¹ä¸å°æ¥å£æ¥ç¨äºç»´æ¤æ档对象æ ãè¦å®ä¹ OwnerDocument å±æ§æ¥æå®å ç´ æå¨çæ档对象ï¼è¦å®ä¹ Parent å±æ§æ¥ææå ç´ çç¶èç¹ï¼å®ä¹ Items å±æ§æ¥ææ该å ç´ çåå ç´ å表ã对äºå®¹å¨å ç´ ï¼è¿è¦ç»´æ¤å®çåå ç´ å表ã
ãã设计æ档对象ä½ä¸ºææ¡£æ çæ ¹èç¹ï¼æ è´çç»´æ¤æ´ä¸ªå¯¹è±¡æ çéä»»ï¼å æ¬ææ¡£æ´ä½çå è½½ä¿åï¼ææ¡£æ´ä½çç»å¶,éåæ´ä¸ªå¯¹è±¡æ ç»æå ¥å£ï¼è¿è¦ä¸ºèæ¬æä¾æ¥å£ãå®æ¯è®¿é®æ档对象æ çå ¥å£ç¹ã
ããä¸äºæ¯è¾åºç¡çææ¡£å ç´ ç±»å
ãã设计è§å¾æ§ä»¶
ãã设计è§å¾æ§ä»¶æ¯è®¾è®¡å¨å¨ç¨æ·çé¢ä¸çå±ç¤ºæ¥å£ãå®æ¯ä¸ä¸ªæ åçWindowsæ§ä»¶ï¼è¯¥æ§ä»¶æ´¾çèªSystem.Windows.Form.UserControlãç¨æ·ä½¿ç¨é¼ æ åé®çå¨è¿ä¸ªæ§ä»¶éé¢ç¼è¾ææ¡£ï¼å®éè½½äºOnMouseDown , OnMouseMove å OnMouseUp æåï¼å¯¹é¼ æ æ¶æ¯è¿è¡äºä¸ä¸å è£ åä¾è®¾è®¡æ档对象使ç¨ãéè½½äºOnPaint æåæ¥æ´æ°ææ¡£è§å¾ãéè½½äº OnDoubleClick æ¥è¿è¡è¯å¾ç´æ¥ç¼è¾ææ¡£å ç´ çææ¬å 容ã
ããå½ç¨æ·è®¾ç½®æ个å ç´ ä¸ºå½åå ç´ ï¼å设计è§å¾æ§ä»¶å°æ ¹æ®éè¦æ¥è¿è¡æ»å¨ä»¥ä¾¿å½åå ç´ åºç°å¨å¯è§åºåä¸ãè¥å½åå ç´ å¤§å°å°äºå¯è§åºå大å°ï¼åå¤çæ¯è¾ç®åï¼åªè¦æ ¹æ®å¯è§åºå大å°åå ç´ å¨è§å¾ä¸çä½ç½®å°±å¯è®¡ç®æ»å¨ä½ç½®ãè¥å ç´ å®½åº¦æé«åº¦å¤§äºå¯è§åºåç宽度åé«åº¦ï¼åéè¦è¿è¡é¢å¤çå¤æï¼ä»¥é¿å æ»å¨æ¶åçè·³è·ã
æ¬ææ¯XDesigner软件工ä½å®¤æ°å