From a24dda2525b9c09b8e6da70447266bffb93ade50 Mon Sep 17 00:00:00 2001 From: "liu.wenjie" Date: Tue, 23 Nov 2021 15:51:37 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E4=BC=98=E5=8C=96LOG=E6=98=BE?= =?UTF-8?q?=E7=A4=BA=E4=B8=8E=E5=BC=95=E7=94=A8=202=E3=80=81=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0PMA=E5=B7=A5=E5=85=B7=EF=BC=8C=E5=B7=A5=E5=85=B7?= =?UTF-8?q?=E5=86=85=E5=AE=B9=E5=BE=85=E5=AE=8C=E5=96=84=203=E3=80=81?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=B5=81=E7=A8=8B=E6=A0=91=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=204=E3=80=81=E6=B7=BB=E5=8A=A0=E5=BC=80=E6=BA=90=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE=EF=BC=8C=E4=BC=98=E5=8C=96UI=E7=A9=BA=E9=97=B4=205?= =?UTF-8?q?=E3=80=81=E5=85=B6=E4=BB=96BUG=E6=9B=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vs/VisionEdit/v14/.suo | Bin 436736 -> 589312 bytes CaliperTool/{CaliperTool.cs => Caliper.cs} | 89 +- CaliperTool/CaliperTool.csproj | 8 +- CaliperTool/CaliperToolRun.cs | 11 +- CaliperTool/FormCaliper.Designer.cs | 65 +- CaliperTool/FormCaliper.cs | 67 +- CaliperTool/FormCaliper.resx | 3 + .../CaliperTool.csproj.FileListAbsolute.txt | 10 +- ...gnTimeResolveAssemblyReferencesInput.cache | Bin 7683 -> 7597 bytes CommonMethods/CommonHelper.csproj | 8 +- CommonMethods/Interface/CommonStruct.cs | 11 + .../CommonHelper.csproj.FileListAbsolute.txt | 3 +- ...gnTimeResolveAssemblyReferencesInput.cache | Bin 7125 -> 7200 bytes CommonMethods/packages.config | 4 + DataStruct/DataStruct.cs | 144 + FindCircle/FindCircle.cs | 80 +- ...FindCircleTool.csproj.FileListAbsolute.txt | 7 +- FindLine/FindLine.cs | 91 +- FindLine/FindLineTool.csproj | 6 +- FindLine/FindLineToolRun.cs | 17 +- FindLine/FormFindLine.Designer.cs | 864 ++- FindLine/FormFindLine.cs | 201 +- FindLine/FormFindLine.resx | 1285 +++- .../DesignTimeResolveAssemblyReferences.cache | Bin 1464 -> 20907 bytes ...gnTimeResolveAssemblyReferencesInput.cache | Bin 7677 -> 7591 bytes .../FindLineTool.csproj.FileListAbsolute.txt | 10 +- FormLib/FormImageWindow.cs.cs | 4 +- FormLib/FormLib.csproj | 6 +- FormLib/FormLog.cs | 2 +- HalconTool/HalconTool.cs | 27 +- HalconTool/HalconToolRun.cs | 2 +- .../HalconTool.csproj.FileListAbsolute.txt | 10 +- ImageWindow/HWindowTool_Smart.Designer.cs | 1 + ImageWindow/HWindowTool_Smart.cs | 8 + ImageWindow/HWindow_Final.resx | 2 +- .../DesignTimeResolveAssemblyReferences.cache | Bin 863 -> 7028 bytes .../HWindow_Tool.csproj.FileListAbsolute.txt | 1 - PMAlignTool/FormPMAlignTool.Designer.cs | 1628 +++++ PMAlignTool/FormPMAlignTool.cs | 182 + PMAlignTool/FormPMAlignTool.resx | 1957 ++++++ PMAlignTool/PMAlign.cs | 160 + .../PMAlignTool.csproj | 71 +- PMAlignTool/PMAlignToolRun.cs | 68 + .../Properties/AssemblyInfo.cs | 8 +- PMAlignTool/Properties/Resources.Designer.cs | 63 + .../Properties/Resources.resx | 0 ToolBase/IToolBase.cs | 18 +- .../ToolBase.csproj.FileListAbsolute.txt | 1 + ToolLib.Log/LogForm/DetailMesForm.Designer.cs | 137 - ToolLib.Log/LogForm/DetailMesForm.cs | 44 - ToolLib.Log/LogForm/UserLogger.Designer.cs | 91 - ToolLib.Log/LogForm/UserLogger.cs | 160 - ToolLib.Log/Logger/Logger.csproj | 36 + ToolLib.Log/Logger/LoggerClass.cs | 30 +- ToolLib.VisionJob/FormToolBox.Designer.cs | 21 +- ToolLib.VisionJob/FormToolBox.resx | 511 +- ToolLib.VisionJob/OperateProject.cs | 10 +- ToolLib.VisionJob/OperateTreeView.cs | 1 - ToolLib.VisionJob/ToolLib.VisionJob.csproj | 6 +- ToolLib.VisionJob/VisionJob.cs | 3 +- .../ToolLib.VisionToolList.csproj | 4 + ToolLib.VisionToolList/VisionToolList.cs | 27 + UsingControl/Controls/CButton.Designer.cs | 73 + UsingControl/Controls/CButton.cs | 67 + UsingControl/Controls/CButton.resx | 120 + UsingControl/Controls/CCheckBox.cs | 76 + UsingControl/Controls/CCheckBox.designer.cs | 85 + UsingControl/Controls/CCheckBox.resx | 145 + UsingControl/Controls/CComboBox.cs | 134 + UsingControl/Controls/CComboBox.designer.cs | 108 + UsingControl/Controls/CComboBox.resx | 128 + UsingControl/Controls/CNumeric.cs | 77 + UsingControl/Controls/CNumeric.designer.cs | 79 + UsingControl/Controls/CNumeric.resx | 120 + UsingControl/Controls/CNumericUpDown.cs | 193 + .../Controls/CNumericUpDown.designer.cs | 133 + UsingControl/Controls/CNumericUpDown.resx | 120 + UsingControl/Controls/CRadioBox.cs | 75 + UsingControl/Controls/CRadioBox.designer.cs | 86 + UsingControl/Controls/CRadioBox.resx | 157 + UsingControl/Controls/CTextBox.cs | 190 + UsingControl/Controls/CTextBox.designer.cs | 108 + UsingControl/Controls/CTextBox.resx | 131 + UsingControl/Controls/Controls.csproj | 178 + .../Controls/Properties/AssemblyInfo.cs | 36 + .../Controls/Properties/Resources.Designer.cs | 213 + .../Controls/Properties/Resources.resx | 166 + UsingControl/Controls/Resources/BlueImage.png | Bin 0 -> 142 bytes .../Controls/Resources/ButtonDown.png | Bin 0 -> 4432 bytes .../Controls/Resources/ButtonEnter.png | Bin 0 -> 4544 bytes UsingControl/Controls/Resources/ButtonUp.png | Bin 0 -> 4515 bytes UsingControl/Controls/Resources/GrayImage.png | Bin 0 -> 143 bytes UsingControl/Controls/Resources/Hide.png | Bin 0 -> 430 bytes UsingControl/Controls/Resources/Show.png | Bin 0 -> 491 bytes UsingControl/Controls/Resources/blueAdd.png | Bin 0 -> 100 bytes UsingControl/Controls/Resources/blueSub.png | Bin 0 -> 95 bytes UsingControl/Controls/Resources/grayAdd.png | Bin 0 -> 99 bytes UsingControl/Controls/Resources/graySub.png | Bin 0 -> 95 bytes UsingControl/Controls/Resources/勾选.png | Bin 0 -> 2781 bytes UsingControl/Controls/Resources/去勾选.png | Bin 0 -> 2705 bytes UsingControl/Controls/Resources/去复选框.png | Bin 0 -> 1633 bytes UsingControl/Controls/Resources/复选框.png | Bin 0 -> 1785 bytes .../HZHControls/Colors/BasisColors.cs | 73 + .../HZHControls/Colors/BorderColors.cs | 86 + UsingControl/HZHControls/Colors/ColorEnums.cs | 203 + UsingControl/HZHControls/Colors/ColorExt.cs | 264 + .../HZHControls/Colors/GradientColors.cs | 142 + UsingControl/HZHControls/Colors/LineColors.cs | 86 + .../HZHControls/Colors/StatusColors.cs | 100 + .../HZHControls/Colors/TableColors.cs | 100 + UsingControl/HZHControls/Colors/TextColors.cs | 86 + .../Controls/Btn/UCBtnExt.Designer.cs | 116 + .../HZHControls/Controls/Btn/UCBtnExt.cs | 255 + .../HZHControls/Controls/Btn/UCBtnExt.resx | 120 + .../Controls/Btn/UCBtnFillet.Designer.cs | 90 + .../HZHControls/Controls/Btn/UCBtnFillet.cs | 88 + .../HZHControls/Controls/Btn/UCBtnFillet.resx | 120 + .../Controls/Btn/UCBtnImg.Designer.cs | 69 + .../HZHControls/Controls/Btn/UCBtnImg.cs | 129 + .../HZHControls/Controls/Btn/UCBtnImg.resx | 120 + .../Controls/Btn/UCDropDownBtn.Designer.cs | 79 + .../HZHControls/Controls/Btn/UCDropDownBtn.cs | 211 + .../Controls/Btn/UCDropDownBtn.resx | 131 + .../BtnsGroup/UCBtnsGroup.Designer.cs | 81 + .../Controls/BtnsGroup/UCBtnsGroup.cs | 229 + .../Controls/BtnsGroup/UCBtnsGroup.resx | 120 + .../Controls/Charts/AuxiliaryLable.cs | 38 + .../Controls/Charts/AuxiliaryLine.cs | 122 + .../Charts/FunnelChart/FunelChartAlignment.cs | 41 + .../Charts/FunnelChart/FunelChartDirection.cs | 37 + .../Charts/FunnelChart/FunelChartItem.cs | 49 + .../Charts/FunnelChart/UCFunnelChart.cs | 506 ++ .../HZHControls/Controls/Charts/MarkText.cs | 113 + .../Controls/Charts/MarkTextPositionStyle.cs | 11 + .../Controls/Charts/RadarChart/RadarLine.cs | 55 + .../Charts/RadarChart/RadarPosition.cs | 13 + .../Charts/RadarChart/UCRadarChart.cs | 663 ++ .../HZHControls/Controls/Charts/ZoomType.cs | 36 + .../Controls/Checkbox/UCCheckBox.Designer.cs | 105 + .../Controls/Checkbox/UCCheckBox.cs | 216 + .../Controls/Checkbox/UCCheckBox.resx | 120 + .../Controls/ComboBox/UCCombox.Designer.cs | 147 + .../HZHControls/Controls/ComboBox/UCCombox.cs | 586 ++ .../Controls/ComboBox/UCCombox.resx | 120 + .../ComboBox/UCComboxGrid.Designer.cs | 73 + .../Controls/ComboBox/UCComboxGrid.cs | 229 + .../Controls/ComboBox/UCComboxGrid.resx | 120 + .../ComboBox/UCComboxGridPanel.Designer.cs | 290 + .../Controls/ComboBox/UCComboxGridPanel.cs | 188 + .../Controls/ComboBox/UCComboxGridPanel.resx | 2 +- .../DataGridView/DataGridViewCellEntity.cs | 45 + .../DataGridView/DataGridViewCellEventArgs.cs | 48 + .../DataGridViewCellEventHandler.cs | 41 + .../DataGridView/DataGridViewColumnEntity.cs | 82 + .../DataGridViewRowCustomEventArgs.cs | 36 + .../DataGridView/IDataGridViewCustomCell.cs | 16 + .../Controls/DataGridView/IDataGridViewRow.cs | 91 + .../DataGridView/UCDataGridView.Designer.cs | 148 + .../Controls/DataGridView/UCDataGridView.cs | 714 +++ .../Controls/DataGridView/UCDataGridView.resx | 120 + .../UCDataGridViewRow.Designer.cs | 102 + .../DataGridView/UCDataGridViewRow.cs | 323 + .../DataGridView/UCDataGridViewRow.resx | 120 + .../UCDataGridViewTreeRow.Designer.cs | 211 + .../DataGridView/UCDataGridViewTreeRow.cs | 474 ++ .../DataGridView/UCDataGridViewTreeRow.resx | 120 + .../Controls/DateTime/DateTimePickerType.cs | 41 + .../DateTime/UCDatePickerExt.Designer.cs | 384 ++ .../Controls/DateTime/UCDatePickerExt.cs | 369 ++ .../Controls/DateTime/UCDatePickerExt.resx | 120 + .../DateTime/UCDateTimeSelectPan.Designer.cs | 504 ++ .../Controls/DateTime/UCDateTimeSelectPan.cs | 398 ++ .../DateTime/UCDateTimeSelectPan.resx | 120 + .../Controls/DateTime/UCTimePanel.Designer.cs | 154 + .../Controls/DateTime/UCTimePanel.cs | 317 + .../Controls/DateTime/UCTimePanel.resx | 120 + .../Controls/FactoryControls/Arrow/UCArrow.cs | 343 ++ .../FactoryControls/Blower/UCBlower.cs | 298 + .../FactoryControls/Bottle/UCBottle.cs | 368 ++ .../FactoryControls/Conduit/UCConduit.cs | 803 +++ .../FactoryControls/Conveyor/UCConveyor.cs | 295 + .../FactoryControls/Lamp/UCAlarmLamp.cs | 177 + .../FactoryControls/Lamp/UCSignalLamp.cs | 213 + .../Controls/FactoryControls/Meter/UCMeter.cs | 434 ++ .../MindMapping/MindMappingItemEntity.cs | 237 + .../MindMapping/UCMindMapping.cs | 423 ++ .../UCMindMappingPanel.Designer.cs | 80 + .../MindMapping/UCMindMappingPanel.cs | 160 + .../MindMapping/UCMindMappingPanel.resx | 120 + .../Controls/FactoryControls/Pond/UCPond.cs | 174 + .../Thermometer/UCThermometer.cs | 475 ++ .../Controls/FactoryControls/Valve/UCValve.cs | 449 ++ .../GraphicalOverlayComponent.cs | 142 + .../GraphicalOverlayComponent.designer.cs | 36 + .../KeyBord/UCKeyBorderAll.Designer.cs | 2467 ++++++++ .../Controls/KeyBord/UCKeyBorderAll.cs | 219 + .../Controls/KeyBord/UCKeyBorderAll.resx | 120 + .../KeyBord/UCKeyBorderNum.Designer.cs | 1074 ++++ .../Controls/KeyBord/UCKeyBorderNum.cs | 121 + .../Controls/KeyBord/UCKeyBorderNum.resx | 120 + .../KeyBord/UCKeyBorderPay.Designer.cs | 1359 +++++ .../Controls/KeyBord/UCKeyBorderPay.cs | 306 + .../Controls/KeyBord/UCKeyBorderPay.resx | 120 + .../Controls/LED/UCLEDData.Designer.cs | 257 + .../HZHControls/Controls/LED/UCLEDData.cs | 113 + .../HZHControls/Controls/LED/UCLEDData.resx | 120 + .../Controls/LED/UCLEDDataTime.Designer.cs | 391 ++ .../HZHControls/Controls/LED/UCLEDDataTime.cs | 115 + .../Controls/LED/UCLEDDataTime.resx | 120 + .../HZHControls/Controls/LED/UCLEDNum.cs | 451 ++ .../Controls/LED/UCLEDNums.Designer.cs | 65 + .../HZHControls/Controls/LED/UCLEDNums.cs | 164 + .../HZHControls/Controls/LED/UCLEDNums.resx | 120 + .../Controls/LED/UCLEDTime.Designer.cs | 220 + .../HZHControls/Controls/LED/UCLEDTime.cs | 113 + .../HZHControls/Controls/LED/UCLEDTime.resx | 120 + .../Controls/List/IListViewItem.cs | 43 + .../List/UCHorizontalList.Designer.cs | 132 + .../Controls/List/UCHorizontalList.cs | 261 + .../Controls/List/UCHorizontalList.resx | 120 + .../List/UCHorizontalListItem.Designer.cs | 101 + .../Controls/List/UCHorizontalListItem.cs | 115 + .../Controls/List/UCHorizontalListItem.resx | 120 + .../Controls/List/UCListExt.Designer.cs | 65 + .../HZHControls/Controls/List/UCListExt.cs | 359 ++ .../HZHControls/Controls/List/UCListExt.resx | 120 + .../Controls/List/UCListItemExt.Designer.cs | 138 + .../Controls/List/UCListItemExt.cs | 197 + .../Controls/List/UCListItemExt.resx | 120 + .../Controls/List/UCListView.Designer.cs | 101 + .../HZHControls/Controls/List/UCListView.cs | 457 ++ .../HZHControls/Controls/List/UCListView.resx | 120 + .../Controls/List/UCListViewItem.Designer.cs | 85 + .../Controls/List/UCListViewItem.cs | 97 + .../Controls/List/UCListViewItem.resx | 120 + .../HZHControls/Controls/Menu/IMenuItem.cs | 48 + .../Controls/Menu/MenuItemEntity.cs | 65 + .../Controls/Menu/UCMenu.Designer.cs | 67 + .../HZHControls/Controls/Menu/UCMenu.cs | 396 ++ .../HZHControls/Controls/Menu/UCMenu.resx | 120 + .../Menu/UCMenuChildrenItem.Designer.cs | 102 + .../Controls/Menu/UCMenuChildrenItem.cs | 122 + .../Controls/Menu/UCMenuChildrenItem.resx | 120 + .../Menu/UCMenuParentItem.Designer.cs | 102 + .../Controls/Menu/UCMenuParentItem.cs | 137 + .../Controls/Menu/UCMenuParentItem.resx | 120 + .../CrumbNavigationClickEventArgs.cs | 13 + .../Navigation/CrumbNavigationItem.cs | 15 + .../Navigation/UCCrumbNavigation.Designer.cs | 69 + .../Controls/Navigation/UCCrumbNavigation.cs | 228 + .../Navigation/UCCrumbNavigation.resx | 120 + .../NavigationMenu/NavigationMenuItem.cs | 71 + .../NavigationMenu/NavigationMenuItemBase.cs | 112 + .../NavigationMenu/NavigationMenuItemExt.cs | 12 + .../UCNavigationMenu.Designer.cs | 49 + .../NavigationMenu/UCNavigationMenu.cs | 553 ++ .../NavigationMenu/UCNavigationMenu.resx | 120 + .../UCNavigationMenuExt.Designer.cs | 48 + .../NavigationMenu/UCNavigationMenuExt.cs | 294 + .../NavigationMenu/UCNavigationMenuExt.resx | 120 + .../UCNavigationMenuOffice.Designer.cs | 72 + .../NavigationMenu/UCNavigationMenuOffice.cs | 428 ++ .../UCNavigationMenuOffice.resx | 120 + .../HZHControls/Controls/Page/IPageControl.cs | 84 + .../Controls/Page/PageControlEventHandler.cs | 31 + .../HZHControls/Controls/Page/PageModel.cs | 22 + .../Controls/Page/UCPagerControl.Designer.cs | 152 + .../Controls/Page/UCPagerControl.cs | 135 + .../Controls/Page/UCPagerControl.resx | 120 + .../Controls/Page/UCPagerControl2.Designer.cs | 595 ++ .../Controls/Page/UCPagerControl2.cs | 496 ++ .../Controls/Page/UCPagerControl2.resx | 120 + .../Controls/Page/UCPagerControlBase.cs | 418 ++ .../Controls/Page/UCPagerControlBase.resx | 120 + .../Controls/Panel/UCPanelQuote.cs | 102 + .../Controls/Panel/UCPanelTitle.Designer.cs | 93 + .../Controls/Panel/UCPanelTitle.cs | 249 + .../Controls/Panel/UCPanelTitle.resx | 120 + .../Process/UCProcessEllipse.Designer.cs | 63 + .../Controls/Process/UCProcessEllipse.cs | 397 ++ .../Controls/Process/UCProcessEllipse.resx | 120 + .../Controls/Process/UCProcessExt.Designer.cs | 84 + .../Controls/Process/UCProcessExt.cs | 111 + .../Controls/Process/UCProcessExt.resx | 120 + .../Controls/Process/UCProcessLine.cs | 280 + .../Process/UCProcessLineExt.Designer.cs | 92 + .../Controls/Process/UCProcessLineExt.cs | 231 + .../Controls/Process/UCProcessLineExt.resx | 120 + .../Process/UCProcessWave.Designer.cs | 86 + .../Controls/Process/UCProcessWave.cs | 329 + .../Controls/Process/UCProcessWave.resx | 120 + .../RadioButton/UCRadioButton.Designer.cs | 104 + .../Controls/RadioButton/UCRadioButton.cs | 283 + .../Controls/RadioButton/UCRadioButton.resx | 120 + .../HZHControls/Controls/Roll/UCRollText.cs | 343 ++ .../Controls/Sampling/UCSampling.cs | 261 + .../Controls/ScrollBar/ScrollbarComponent.cs | 537 ++ .../ScrollBar/ScrollbarControlDesigner.cs | 43 + .../Controls/ScrollBar/UCHScrollbar.cs | 485 ++ .../Controls/ScrollBar/UCVScrollbar.cs | 520 ++ .../Controls/ScrollBar/UCVScrollbar.resx | 120 + .../Controls/Shadow/ShadowComponent.cs | 200 + .../Controls/Split/UCSplitLine_H.Designer.cs | 65 + .../Controls/Split/UCSplitLine_H.cs | 43 + .../Controls/Split/UCSplitLine_H.resx | 120 + .../Controls/Split/UCSplitLine_V.Designer.cs | 65 + .../Controls/Split/UCSplitLine_V.cs | 43 + .../Controls/Split/UCSplitLine_V.resx | 120 + .../Controls/SplitLabel/UCSplitLabel.cs | 215 + .../Controls/Step/UCStep.Designer.cs | 66 + .../HZHControls/Controls/Step/UCStep.cs | 334 ++ .../HZHControls/Controls/Step/UCStep.resx | 120 + .../Controls/Switch/UCSwitch.Designer.cs | 65 + .../HZHControls/Controls/Switch/UCSwitch.cs | 391 ++ .../HZHControls/Controls/Switch/UCSwitch.resx | 120 + .../HZHControls/Controls/Tab/TabControlExt.cs | 541 ++ .../HZHControls/Controls/Text/KeyBoardType.cs | 49 + .../Controls/Text/TextBoxEx.Designer.cs | 56 + .../HZHControls/Controls/Text/TextBoxEx.cs | 392 ++ .../Controls/Text/TextBoxTransparent.cs | 756 +++ .../Controls/Text/TextBoxTransparent.resx | 123 + .../Controls/Text/UCNumTextBox.Designer.cs | 145 + .../HZHControls/Controls/Text/UCNumTextBox.cs | 364 ++ .../Controls/Text/UCNumTextBox.resx | 120 + .../Controls/Text/UCTextBoxEx.Designer.cs | 181 + .../HZHControls/Controls/Text/UCTextBoxEx.cs | 757 +++ .../Controls/Text/UCTextBoxEx.resx | 186 + .../HZHControls/Controls/Text/win32.cs | 225 + .../Controls/TimeLine/UCTimeLine.Designer.cs | 47 + .../Controls/TimeLine/UCTimeLine.cs | 286 + .../Controls/TimeLine/UCTimeLine.resx | 120 + .../Controls/TrackBar/UCTrackBar.cs | 342 ++ .../Controls/Transfer/TransferEventArgs.cs | 19 + .../Controls/Transfer/UCTransfer.Designer.cs | 241 + .../Controls/Transfer/UCTransfer.cs | 211 + .../Controls/Transfer/UCTransfer.resx | 155 + .../Controls/Treeview/TreeViewEx.cs | 665 ++ .../Controls/UCControlBase.Designer.cs | 69 + .../HZHControls/Controls/UCControlBase.cs | 284 + .../HZHControls/Controls/UCControlBase.resx | 120 + .../Verification/VerificationAttribute.cs | 52 + .../Verification/VerificationComponent.cs | 515 ++ .../Verification/VerificationEventArgs.cs | 68 + .../Verification/VerificationModel.cs | 100 + .../HZHControls/Controls/Wave/UCWave.cs | 208 + .../HZHControls/Controls/Wave/UCWaveChart.cs | 397 ++ .../HZHControls/Forms/FrmAnchor.Designer.cs | 85 + UsingControl/HZHControls/Forms/FrmAnchor.cs | 298 + UsingControl/HZHControls/Forms/FrmAnchor.resx | 1188 ++++ .../Forms/FrmAnchorTips.Designer.cs | 72 + .../HZHControls/Forms/FrmAnchorTips.cs | 724 +++ .../HZHControls/Forms/FrmAnchorTips.resx | 1185 ++++ .../HZHControls/Forms/FrmBack.Designer.cs | 175 + UsingControl/HZHControls/Forms/FrmBack.cs | 89 + UsingControl/HZHControls/Forms/FrmBack.resx | 1246 ++++ .../HZHControls/Forms/FrmBase.Designer.cs | 74 + UsingControl/HZHControls/Forms/FrmBase.cs | 624 ++ UsingControl/HZHControls/Forms/FrmBase.resx | 1185 ++++ .../HZHControls/Forms/FrmDialog.Designer.cs | 283 + UsingControl/HZHControls/Forms/FrmDialog.cs | 192 + UsingControl/HZHControls/Forms/FrmDialog.resx | 1185 ++++ .../HZHControls/Forms/FrmInputs.Designer.cs | 70 + UsingControl/HZHControls/Forms/FrmInputs.cs | 171 + UsingControl/HZHControls/Forms/FrmInputs.resx | 1185 ++++ .../HZHControls/Forms/FrmLoading.Designer.cs | 47 + UsingControl/HZHControls/Forms/FrmLoading.cs | 144 + .../HZHControls/Forms/FrmLoading.resx | 120 + .../HZHControls/Forms/FrmTips.Designer.cs | 149 + UsingControl/HZHControls/Forms/FrmTips.cs | 496 ++ UsingControl/HZHControls/Forms/FrmTips.resx | 1188 ++++ .../Forms/FrmTransparent.Designer.cs | 73 + .../HZHControls/Forms/FrmTransparent.cs | 175 + .../HZHControls/Forms/FrmTransparent.resx | 1185 ++++ .../HZHControls/Forms/FrmWaiting.Designer.cs | 162 + UsingControl/HZHControls/Forms/FrmWaiting.cs | 109 + .../HZHControls/Forms/FrmWaiting.resx | 2214 +++++++ .../Forms/FrmWithOKCancel1.Designer.cs | 210 + .../HZHControls/Forms/FrmWithOKCancel1.cs | 81 + .../HZHControls/Forms/FrmWithOKCancel1.resx | 1185 ++++ .../Forms/FrmWithOKCancel2.Designer.cs | 255 + .../HZHControls/Forms/FrmWithOKCancel2.cs | 81 + .../HZHControls/Forms/FrmWithOKCancel2.resx | 1185 ++++ .../Forms/FrmWithTitle.Designer.cs | 131 + .../HZHControls/Forms/FrmWithTitle.cs | 122 + .../HZHControls/Forms/FrmWithTitle.resx | 1185 ++++ UsingControl/HZHControls/HZH_Controls.csproj | 1029 ++++ UsingControl/HZHControls/HZH_Controls.nuspec | 18 + .../HZHControls/HandInput/HandInput.dll | Bin 0 -> 83128 bytes .../HZHControls/HandInput/HandInput64.dll | Bin 0 -> 87736 bytes .../HZHControls/HandInput/certificate | 1 + .../HZHControls/HandInput/certificate64 | 1 + .../HZHControls/HandInput/handinput.cupf | Bin 0 -> 235139 bytes .../HZHControls/HandInput/handinput.exe | Bin 0 -> 1587896 bytes .../HZHControls/HandInput/handinput.ini | Bin 0 -> 178 bytes UsingControl/HZHControls/HandInput/icon.png | Bin 0 -> 1542 bytes ...HW_PB_7000_kn.arpa.7e9.prune.1e-7.lm.fixed | Bin 0 -> 2033252 bytes .../HZHControls/HandInput/overlapEngine.dll | Bin 0 -> 930488 bytes .../HZHControls/HandInput/sgim_annex.bin | Bin 0 -> 1223506 bytes .../HZHControls/HandInput/sgim_hz.bin | Bin 0 -> 174178 bytes .../HZHControls/HandInput/sgim_py.bin | Bin 0 -> 7036 bytes .../HZHControls/HandInput/singleEngine.dll | Bin 0 -> 3963576 bytes .../HZHControls/Helpers/ControlHelper.cs | 1446 +++++ UsingControl/HZHControls/Helpers/Ext.cs | 476 ++ .../HZHControls/Helpers/GraphDirection.cs | 45 + UsingControl/HZHControls/Helpers/ITheme.cs | 53 + UsingControl/HZHControls/Helpers/MouseHook.cs | 213 + .../HZHControls/Helpers/NativeMethods.cs | 327 + .../HZHControls/Helpers/TextInputType.cs | 67 + .../HZHControls/Helpers/WindowsHook.cs | 178 + .../HZHControls/IconFont/ElegantIcons.ttf | Bin 0 -> 59388 bytes .../HZHControls/IconFont/FontAwesome.ttf | Bin 0 -> 165548 bytes .../HZHControls/IconFont/FontIcons.cs | 4174 +++++++++++++ .../HZHControls/IconFont/FontImages.cs | 338 ++ .../HZHControls/Properties/AssemblyInfo.cs | 51 + .../Properties/Resources.Designer.cs | 463 ++ .../HZHControls/Properties/Resources.resx | 241 + .../HZHControls/Resources/ComboBox.png | Bin 0 -> 189 bytes UsingControl/HZHControls/Resources/alarm.png | Bin 0 -> 1479 bytes UsingControl/HZHControls/Resources/back.png | Bin 0 -> 438 bytes .../HZHControls/Resources/caret-down.png | Bin 0 -> 281 bytes .../HZHControls/Resources/caret-right.png | Bin 0 -> 249 bytes .../HZHControls/Resources/checkbox0.png | Bin 0 -> 402 bytes .../HZHControls/Resources/checkbox00.png | Bin 0 -> 247 bytes .../HZHControls/Resources/checkbox1.png | Bin 0 -> 458 bytes .../HZHControls/Resources/checkbox10.png | Bin 0 -> 462 bytes .../HZHControls/Resources/chevron-left.png | Bin 0 -> 3059 bytes .../HZHControls/Resources/chevron-right.png | Bin 0 -> 3050 bytes .../HZHControls/Resources/dateRight.png | Bin 0 -> 3883 bytes .../HZHControls/Resources/datetLeft.png | Bin 0 -> 3412 bytes .../HZHControls/Resources/dialog_close.png | Bin 0 -> 256 bytes UsingControl/HZHControls/Resources/down.png | Bin 0 -> 295 bytes UsingControl/HZHControls/Resources/end.png | Bin 0 -> 544 bytes UsingControl/HZHControls/Resources/error.png | Bin 0 -> 3142 bytes UsingControl/HZHControls/Resources/first.png | Bin 0 -> 568 bytes .../HZHControls/Resources/handinput.exe | Bin 0 -> 1587896 bytes UsingControl/HZHControls/Resources/help.png | Bin 0 -> 783 bytes .../Resources/ic_add_black_18dp.png | Bin 0 -> 491 bytes .../Resources/ic_remove_black_18dp.png | Bin 0 -> 355 bytes .../Resources/ic_search_black_24dp.png | Bin 0 -> 558 bytes .../HZHControls/Resources/input_clear.png | Bin 0 -> 450 bytes .../HZHControls/Resources/keyboard.png | Bin 0 -> 773 bytes .../HZHControls/Resources/keyboard_bs.png | Bin 0 -> 2947 bytes UsingControl/HZHControls/Resources/left.png | Bin 0 -> 582 bytes .../HZHControls/Resources/list_add.png | Bin 0 -> 321 bytes .../HZHControls/Resources/list_subtract.png | Bin 0 -> 333 bytes .../HZHControls/Resources/loading.gif | Bin 0 -> 50707 bytes UsingControl/HZHControls/Resources/more1.png | Bin 0 -> 319 bytes .../HZHControls/Resources/qty_delete.png | Bin 0 -> 470 bytes .../HZHControls/Resources/radioButton0.png | Bin 0 -> 489 bytes .../HZHControls/Resources/radioButton00.png | Bin 0 -> 318 bytes .../HZHControls/Resources/radioButton1.png | Bin 0 -> 575 bytes .../HZHControls/Resources/radioButton10.png | Bin 0 -> 574 bytes UsingControl/HZHControls/Resources/right.png | Bin 0 -> 564 bytes UsingControl/HZHControls/Resources/rigth.png | Bin 0 -> 1200 bytes .../HZHControls/Resources/sanjiao1.png | Bin 0 -> 279 bytes .../HZHControls/Resources/sanjiao2.png | Bin 0 -> 300 bytes .../HZHControls/Resources/success.png | Bin 0 -> 2196 bytes UsingControl/HZHControls/Resources/tips.png | Bin 0 -> 362 bytes UsingControl/HZHControls/Resources/up.png | Bin 0 -> 299 bytes .../HZHControls/Resources/warning.png | Bin 0 -> 1954 bytes .../UIEditor/FrmSelectImage.Designer.cs | 250 + .../HZHControls/UIEditor/FrmSelectImage.cs | 103 + .../HZHControls/UIEditor/FrmSelectImage.resx | 120 + .../UIEditor/ImagePropertyEditor.cs | 38 + UsingControl/HZHControls/buidnuget.bat | 1 + UsingControl/HZHControls/nuget.exe | Bin 0 -> 5742704 bytes VisionEdit.sln | 77 +- VisionEdit/FormMain.Designer.cs | 1391 +++-- VisionEdit/FormMain.cs | 65 +- VisionEdit/FormMain.resx | 5328 ++++------------- VisionEdit/VisionEdit.csproj | 9 - VisionEdit/bin/Debug/DockPanel.config | Bin 5352 -> 5344 bytes ...gnTimeResolveAssemblyReferencesInput.cache | Bin 9086 -> 8831 bytes .../VisionEdit.csproj.FileListAbsolute.txt | 33 +- 474 files changed, 91916 insertions(+), 6429 deletions(-) rename CaliperTool/{CaliperTool.cs => Caliper.cs} (80%) create mode 100644 CommonMethods/packages.config create mode 100644 PMAlignTool/FormPMAlignTool.Designer.cs create mode 100644 PMAlignTool/FormPMAlignTool.cs create mode 100644 PMAlignTool/FormPMAlignTool.resx create mode 100644 PMAlignTool/PMAlign.cs rename ToolLib.Log/LogForm/LogForm.csproj => PMAlignTool/PMAlignTool.csproj (50%) create mode 100644 PMAlignTool/PMAlignToolRun.cs rename {ToolLib.Log/LogForm => PMAlignTool}/Properties/AssemblyInfo.cs (85%) create mode 100644 PMAlignTool/Properties/Resources.Designer.cs rename ToolLib.Log/LogForm/DetailMesForm.resx => PMAlignTool/Properties/Resources.resx (100%) delete mode 100644 ToolLib.Log/LogForm/DetailMesForm.Designer.cs delete mode 100644 ToolLib.Log/LogForm/DetailMesForm.cs delete mode 100644 ToolLib.Log/LogForm/UserLogger.Designer.cs delete mode 100644 ToolLib.Log/LogForm/UserLogger.cs create mode 100644 UsingControl/Controls/CButton.Designer.cs create mode 100644 UsingControl/Controls/CButton.cs create mode 100644 UsingControl/Controls/CButton.resx create mode 100644 UsingControl/Controls/CCheckBox.cs create mode 100644 UsingControl/Controls/CCheckBox.designer.cs create mode 100644 UsingControl/Controls/CCheckBox.resx create mode 100644 UsingControl/Controls/CComboBox.cs create mode 100644 UsingControl/Controls/CComboBox.designer.cs create mode 100644 UsingControl/Controls/CComboBox.resx create mode 100644 UsingControl/Controls/CNumeric.cs create mode 100644 UsingControl/Controls/CNumeric.designer.cs create mode 100644 UsingControl/Controls/CNumeric.resx create mode 100644 UsingControl/Controls/CNumericUpDown.cs create mode 100644 UsingControl/Controls/CNumericUpDown.designer.cs create mode 100644 UsingControl/Controls/CNumericUpDown.resx create mode 100644 UsingControl/Controls/CRadioBox.cs create mode 100644 UsingControl/Controls/CRadioBox.designer.cs create mode 100644 UsingControl/Controls/CRadioBox.resx create mode 100644 UsingControl/Controls/CTextBox.cs create mode 100644 UsingControl/Controls/CTextBox.designer.cs create mode 100644 UsingControl/Controls/CTextBox.resx create mode 100644 UsingControl/Controls/Controls.csproj create mode 100644 UsingControl/Controls/Properties/AssemblyInfo.cs create mode 100644 UsingControl/Controls/Properties/Resources.Designer.cs create mode 100644 UsingControl/Controls/Properties/Resources.resx create mode 100644 UsingControl/Controls/Resources/BlueImage.png create mode 100644 UsingControl/Controls/Resources/ButtonDown.png create mode 100644 UsingControl/Controls/Resources/ButtonEnter.png create mode 100644 UsingControl/Controls/Resources/ButtonUp.png create mode 100644 UsingControl/Controls/Resources/GrayImage.png create mode 100644 UsingControl/Controls/Resources/Hide.png create mode 100644 UsingControl/Controls/Resources/Show.png create mode 100644 UsingControl/Controls/Resources/blueAdd.png create mode 100644 UsingControl/Controls/Resources/blueSub.png create mode 100644 UsingControl/Controls/Resources/grayAdd.png create mode 100644 UsingControl/Controls/Resources/graySub.png create mode 100644 UsingControl/Controls/Resources/勾选.png create mode 100644 UsingControl/Controls/Resources/去勾选.png create mode 100644 UsingControl/Controls/Resources/去复选框.png create mode 100644 UsingControl/Controls/Resources/复选框.png create mode 100644 UsingControl/HZHControls/Colors/BasisColors.cs create mode 100644 UsingControl/HZHControls/Colors/BorderColors.cs create mode 100644 UsingControl/HZHControls/Colors/ColorEnums.cs create mode 100644 UsingControl/HZHControls/Colors/ColorExt.cs create mode 100644 UsingControl/HZHControls/Colors/GradientColors.cs create mode 100644 UsingControl/HZHControls/Colors/LineColors.cs create mode 100644 UsingControl/HZHControls/Colors/StatusColors.cs create mode 100644 UsingControl/HZHControls/Colors/TableColors.cs create mode 100644 UsingControl/HZHControls/Colors/TextColors.cs create mode 100644 UsingControl/HZHControls/Controls/Btn/UCBtnExt.Designer.cs create mode 100644 UsingControl/HZHControls/Controls/Btn/UCBtnExt.cs create mode 100644 UsingControl/HZHControls/Controls/Btn/UCBtnExt.resx create mode 100644 UsingControl/HZHControls/Controls/Btn/UCBtnFillet.Designer.cs create mode 100644 UsingControl/HZHControls/Controls/Btn/UCBtnFillet.cs create mode 100644 UsingControl/HZHControls/Controls/Btn/UCBtnFillet.resx create mode 100644 UsingControl/HZHControls/Controls/Btn/UCBtnImg.Designer.cs create mode 100644 UsingControl/HZHControls/Controls/Btn/UCBtnImg.cs create mode 100644 UsingControl/HZHControls/Controls/Btn/UCBtnImg.resx create mode 100644 UsingControl/HZHControls/Controls/Btn/UCDropDownBtn.Designer.cs create mode 100644 UsingControl/HZHControls/Controls/Btn/UCDropDownBtn.cs create mode 100644 UsingControl/HZHControls/Controls/Btn/UCDropDownBtn.resx create mode 100644 UsingControl/HZHControls/Controls/BtnsGroup/UCBtnsGroup.Designer.cs create mode 100644 UsingControl/HZHControls/Controls/BtnsGroup/UCBtnsGroup.cs create mode 100644 UsingControl/HZHControls/Controls/BtnsGroup/UCBtnsGroup.resx create mode 100644 UsingControl/HZHControls/Controls/Charts/AuxiliaryLable.cs create mode 100644 UsingControl/HZHControls/Controls/Charts/AuxiliaryLine.cs create mode 100644 UsingControl/HZHControls/Controls/Charts/FunnelChart/FunelChartAlignment.cs create mode 100644 UsingControl/HZHControls/Controls/Charts/FunnelChart/FunelChartDirection.cs create mode 100644 UsingControl/HZHControls/Controls/Charts/FunnelChart/FunelChartItem.cs create mode 100644 UsingControl/HZHControls/Controls/Charts/FunnelChart/UCFunnelChart.cs create mode 100644 UsingControl/HZHControls/Controls/Charts/MarkText.cs create mode 100644 UsingControl/HZHControls/Controls/Charts/MarkTextPositionStyle.cs create mode 100644 UsingControl/HZHControls/Controls/Charts/RadarChart/RadarLine.cs create mode 100644 UsingControl/HZHControls/Controls/Charts/RadarChart/RadarPosition.cs create mode 100644 UsingControl/HZHControls/Controls/Charts/RadarChart/UCRadarChart.cs create mode 100644 UsingControl/HZHControls/Controls/Charts/ZoomType.cs create mode 100644 UsingControl/HZHControls/Controls/Checkbox/UCCheckBox.Designer.cs create mode 100644 UsingControl/HZHControls/Controls/Checkbox/UCCheckBox.cs create mode 100644 UsingControl/HZHControls/Controls/Checkbox/UCCheckBox.resx create mode 100644 UsingControl/HZHControls/Controls/ComboBox/UCCombox.Designer.cs create mode 100644 UsingControl/HZHControls/Controls/ComboBox/UCCombox.cs create mode 100644 UsingControl/HZHControls/Controls/ComboBox/UCCombox.resx create mode 100644 UsingControl/HZHControls/Controls/ComboBox/UCComboxGrid.Designer.cs create mode 100644 UsingControl/HZHControls/Controls/ComboBox/UCComboxGrid.cs create mode 100644 UsingControl/HZHControls/Controls/ComboBox/UCComboxGrid.resx create mode 100644 UsingControl/HZHControls/Controls/ComboBox/UCComboxGridPanel.Designer.cs create mode 100644 UsingControl/HZHControls/Controls/ComboBox/UCComboxGridPanel.cs rename ToolLib.Log/LogForm/UserLogger.resx => UsingControl/HZHControls/Controls/ComboBox/UCComboxGridPanel.resx (97%) create mode 100644 UsingControl/HZHControls/Controls/DataGridView/DataGridViewCellEntity.cs create mode 100644 UsingControl/HZHControls/Controls/DataGridView/DataGridViewCellEventArgs.cs create mode 100644 UsingControl/HZHControls/Controls/DataGridView/DataGridViewCellEventHandler.cs create mode 100644 UsingControl/HZHControls/Controls/DataGridView/DataGridViewColumnEntity.cs create mode 100644 UsingControl/HZHControls/Controls/DataGridView/DataGridViewRowCustomEventArgs.cs create mode 100644 UsingControl/HZHControls/Controls/DataGridView/IDataGridViewCustomCell.cs create mode 100644 UsingControl/HZHControls/Controls/DataGridView/IDataGridViewRow.cs create mode 100644 UsingControl/HZHControls/Controls/DataGridView/UCDataGridView.Designer.cs create mode 100644 UsingControl/HZHControls/Controls/DataGridView/UCDataGridView.cs create mode 100644 UsingControl/HZHControls/Controls/DataGridView/UCDataGridView.resx create mode 100644 UsingControl/HZHControls/Controls/DataGridView/UCDataGridViewRow.Designer.cs create mode 100644 UsingControl/HZHControls/Controls/DataGridView/UCDataGridViewRow.cs create mode 100644 UsingControl/HZHControls/Controls/DataGridView/UCDataGridViewRow.resx create mode 100644 UsingControl/HZHControls/Controls/DataGridView/UCDataGridViewTreeRow.Designer.cs create mode 100644 UsingControl/HZHControls/Controls/DataGridView/UCDataGridViewTreeRow.cs create mode 100644 UsingControl/HZHControls/Controls/DataGridView/UCDataGridViewTreeRow.resx create mode 100644 UsingControl/HZHControls/Controls/DateTime/DateTimePickerType.cs create mode 100644 UsingControl/HZHControls/Controls/DateTime/UCDatePickerExt.Designer.cs create mode 100644 UsingControl/HZHControls/Controls/DateTime/UCDatePickerExt.cs create mode 100644 UsingControl/HZHControls/Controls/DateTime/UCDatePickerExt.resx create mode 100644 UsingControl/HZHControls/Controls/DateTime/UCDateTimeSelectPan.Designer.cs create mode 100644 UsingControl/HZHControls/Controls/DateTime/UCDateTimeSelectPan.cs create mode 100644 UsingControl/HZHControls/Controls/DateTime/UCDateTimeSelectPan.resx create mode 100644 UsingControl/HZHControls/Controls/DateTime/UCTimePanel.Designer.cs create mode 100644 UsingControl/HZHControls/Controls/DateTime/UCTimePanel.cs create mode 100644 UsingControl/HZHControls/Controls/DateTime/UCTimePanel.resx create mode 100644 UsingControl/HZHControls/Controls/FactoryControls/Arrow/UCArrow.cs create mode 100644 UsingControl/HZHControls/Controls/FactoryControls/Blower/UCBlower.cs create mode 100644 UsingControl/HZHControls/Controls/FactoryControls/Bottle/UCBottle.cs create mode 100644 UsingControl/HZHControls/Controls/FactoryControls/Conduit/UCConduit.cs create mode 100644 UsingControl/HZHControls/Controls/FactoryControls/Conveyor/UCConveyor.cs create mode 100644 UsingControl/HZHControls/Controls/FactoryControls/Lamp/UCAlarmLamp.cs create mode 100644 UsingControl/HZHControls/Controls/FactoryControls/Lamp/UCSignalLamp.cs create mode 100644 UsingControl/HZHControls/Controls/FactoryControls/Meter/UCMeter.cs create mode 100644 UsingControl/HZHControls/Controls/FactoryControls/MindMapping/MindMappingItemEntity.cs create mode 100644 UsingControl/HZHControls/Controls/FactoryControls/MindMapping/UCMindMapping.cs create mode 100644 UsingControl/HZHControls/Controls/FactoryControls/MindMapping/UCMindMappingPanel.Designer.cs create mode 100644 UsingControl/HZHControls/Controls/FactoryControls/MindMapping/UCMindMappingPanel.cs create mode 100644 UsingControl/HZHControls/Controls/FactoryControls/MindMapping/UCMindMappingPanel.resx create mode 100644 UsingControl/HZHControls/Controls/FactoryControls/Pond/UCPond.cs create mode 100644 UsingControl/HZHControls/Controls/FactoryControls/Thermometer/UCThermometer.cs create mode 100644 UsingControl/HZHControls/Controls/FactoryControls/Valve/UCValve.cs create mode 100644 UsingControl/HZHControls/Controls/GraphicalOverlay/GraphicalOverlayComponent.cs create mode 100644 UsingControl/HZHControls/Controls/GraphicalOverlay/GraphicalOverlayComponent.designer.cs create mode 100644 UsingControl/HZHControls/Controls/KeyBord/UCKeyBorderAll.Designer.cs create mode 100644 UsingControl/HZHControls/Controls/KeyBord/UCKeyBorderAll.cs create mode 100644 UsingControl/HZHControls/Controls/KeyBord/UCKeyBorderAll.resx create mode 100644 UsingControl/HZHControls/Controls/KeyBord/UCKeyBorderNum.Designer.cs create mode 100644 UsingControl/HZHControls/Controls/KeyBord/UCKeyBorderNum.cs create mode 100644 UsingControl/HZHControls/Controls/KeyBord/UCKeyBorderNum.resx create mode 100644 UsingControl/HZHControls/Controls/KeyBord/UCKeyBorderPay.Designer.cs create mode 100644 UsingControl/HZHControls/Controls/KeyBord/UCKeyBorderPay.cs create mode 100644 UsingControl/HZHControls/Controls/KeyBord/UCKeyBorderPay.resx create mode 100644 UsingControl/HZHControls/Controls/LED/UCLEDData.Designer.cs create mode 100644 UsingControl/HZHControls/Controls/LED/UCLEDData.cs create mode 100644 UsingControl/HZHControls/Controls/LED/UCLEDData.resx create mode 100644 UsingControl/HZHControls/Controls/LED/UCLEDDataTime.Designer.cs create mode 100644 UsingControl/HZHControls/Controls/LED/UCLEDDataTime.cs create mode 100644 UsingControl/HZHControls/Controls/LED/UCLEDDataTime.resx create mode 100644 UsingControl/HZHControls/Controls/LED/UCLEDNum.cs create mode 100644 UsingControl/HZHControls/Controls/LED/UCLEDNums.Designer.cs create mode 100644 UsingControl/HZHControls/Controls/LED/UCLEDNums.cs create mode 100644 UsingControl/HZHControls/Controls/LED/UCLEDNums.resx create mode 100644 UsingControl/HZHControls/Controls/LED/UCLEDTime.Designer.cs create mode 100644 UsingControl/HZHControls/Controls/LED/UCLEDTime.cs create mode 100644 UsingControl/HZHControls/Controls/LED/UCLEDTime.resx create mode 100644 UsingControl/HZHControls/Controls/List/IListViewItem.cs create mode 100644 UsingControl/HZHControls/Controls/List/UCHorizontalList.Designer.cs create mode 100644 UsingControl/HZHControls/Controls/List/UCHorizontalList.cs create mode 100644 UsingControl/HZHControls/Controls/List/UCHorizontalList.resx create mode 100644 UsingControl/HZHControls/Controls/List/UCHorizontalListItem.Designer.cs create mode 100644 UsingControl/HZHControls/Controls/List/UCHorizontalListItem.cs create mode 100644 UsingControl/HZHControls/Controls/List/UCHorizontalListItem.resx create mode 100644 UsingControl/HZHControls/Controls/List/UCListExt.Designer.cs create mode 100644 UsingControl/HZHControls/Controls/List/UCListExt.cs create mode 100644 UsingControl/HZHControls/Controls/List/UCListExt.resx create mode 100644 UsingControl/HZHControls/Controls/List/UCListItemExt.Designer.cs create mode 100644 UsingControl/HZHControls/Controls/List/UCListItemExt.cs create mode 100644 UsingControl/HZHControls/Controls/List/UCListItemExt.resx create mode 100644 UsingControl/HZHControls/Controls/List/UCListView.Designer.cs create mode 100644 UsingControl/HZHControls/Controls/List/UCListView.cs create mode 100644 UsingControl/HZHControls/Controls/List/UCListView.resx create mode 100644 UsingControl/HZHControls/Controls/List/UCListViewItem.Designer.cs create mode 100644 UsingControl/HZHControls/Controls/List/UCListViewItem.cs create mode 100644 UsingControl/HZHControls/Controls/List/UCListViewItem.resx create mode 100644 UsingControl/HZHControls/Controls/Menu/IMenuItem.cs create mode 100644 UsingControl/HZHControls/Controls/Menu/MenuItemEntity.cs create mode 100644 UsingControl/HZHControls/Controls/Menu/UCMenu.Designer.cs create mode 100644 UsingControl/HZHControls/Controls/Menu/UCMenu.cs create mode 100644 UsingControl/HZHControls/Controls/Menu/UCMenu.resx create mode 100644 UsingControl/HZHControls/Controls/Menu/UCMenuChildrenItem.Designer.cs create mode 100644 UsingControl/HZHControls/Controls/Menu/UCMenuChildrenItem.cs create mode 100644 UsingControl/HZHControls/Controls/Menu/UCMenuChildrenItem.resx create mode 100644 UsingControl/HZHControls/Controls/Menu/UCMenuParentItem.Designer.cs create mode 100644 UsingControl/HZHControls/Controls/Menu/UCMenuParentItem.cs create mode 100644 UsingControl/HZHControls/Controls/Menu/UCMenuParentItem.resx create mode 100644 UsingControl/HZHControls/Controls/Navigation/CrumbNavigationClickEventArgs.cs create mode 100644 UsingControl/HZHControls/Controls/Navigation/CrumbNavigationItem.cs create mode 100644 UsingControl/HZHControls/Controls/Navigation/UCCrumbNavigation.Designer.cs create mode 100644 UsingControl/HZHControls/Controls/Navigation/UCCrumbNavigation.cs create mode 100644 UsingControl/HZHControls/Controls/Navigation/UCCrumbNavigation.resx create mode 100644 UsingControl/HZHControls/Controls/NavigationMenu/NavigationMenuItem.cs create mode 100644 UsingControl/HZHControls/Controls/NavigationMenu/NavigationMenuItemBase.cs create mode 100644 UsingControl/HZHControls/Controls/NavigationMenu/NavigationMenuItemExt.cs create mode 100644 UsingControl/HZHControls/Controls/NavigationMenu/UCNavigationMenu.Designer.cs create mode 100644 UsingControl/HZHControls/Controls/NavigationMenu/UCNavigationMenu.cs create mode 100644 UsingControl/HZHControls/Controls/NavigationMenu/UCNavigationMenu.resx create mode 100644 UsingControl/HZHControls/Controls/NavigationMenu/UCNavigationMenuExt.Designer.cs create mode 100644 UsingControl/HZHControls/Controls/NavigationMenu/UCNavigationMenuExt.cs create mode 100644 UsingControl/HZHControls/Controls/NavigationMenu/UCNavigationMenuExt.resx create mode 100644 UsingControl/HZHControls/Controls/NavigationMenu/UCNavigationMenuOffice.Designer.cs create mode 100644 UsingControl/HZHControls/Controls/NavigationMenu/UCNavigationMenuOffice.cs create mode 100644 UsingControl/HZHControls/Controls/NavigationMenu/UCNavigationMenuOffice.resx create mode 100644 UsingControl/HZHControls/Controls/Page/IPageControl.cs create mode 100644 UsingControl/HZHControls/Controls/Page/PageControlEventHandler.cs create mode 100644 UsingControl/HZHControls/Controls/Page/PageModel.cs create mode 100644 UsingControl/HZHControls/Controls/Page/UCPagerControl.Designer.cs create mode 100644 UsingControl/HZHControls/Controls/Page/UCPagerControl.cs create mode 100644 UsingControl/HZHControls/Controls/Page/UCPagerControl.resx create mode 100644 UsingControl/HZHControls/Controls/Page/UCPagerControl2.Designer.cs create mode 100644 UsingControl/HZHControls/Controls/Page/UCPagerControl2.cs create mode 100644 UsingControl/HZHControls/Controls/Page/UCPagerControl2.resx create mode 100644 UsingControl/HZHControls/Controls/Page/UCPagerControlBase.cs create mode 100644 UsingControl/HZHControls/Controls/Page/UCPagerControlBase.resx create mode 100644 UsingControl/HZHControls/Controls/Panel/UCPanelQuote.cs create mode 100644 UsingControl/HZHControls/Controls/Panel/UCPanelTitle.Designer.cs create mode 100644 UsingControl/HZHControls/Controls/Panel/UCPanelTitle.cs create mode 100644 UsingControl/HZHControls/Controls/Panel/UCPanelTitle.resx create mode 100644 UsingControl/HZHControls/Controls/Process/UCProcessEllipse.Designer.cs create mode 100644 UsingControl/HZHControls/Controls/Process/UCProcessEllipse.cs create mode 100644 UsingControl/HZHControls/Controls/Process/UCProcessEllipse.resx create mode 100644 UsingControl/HZHControls/Controls/Process/UCProcessExt.Designer.cs create mode 100644 UsingControl/HZHControls/Controls/Process/UCProcessExt.cs create mode 100644 UsingControl/HZHControls/Controls/Process/UCProcessExt.resx create mode 100644 UsingControl/HZHControls/Controls/Process/UCProcessLine.cs create mode 100644 UsingControl/HZHControls/Controls/Process/UCProcessLineExt.Designer.cs create mode 100644 UsingControl/HZHControls/Controls/Process/UCProcessLineExt.cs create mode 100644 UsingControl/HZHControls/Controls/Process/UCProcessLineExt.resx create mode 100644 UsingControl/HZHControls/Controls/Process/UCProcessWave.Designer.cs create mode 100644 UsingControl/HZHControls/Controls/Process/UCProcessWave.cs create mode 100644 UsingControl/HZHControls/Controls/Process/UCProcessWave.resx create mode 100644 UsingControl/HZHControls/Controls/RadioButton/UCRadioButton.Designer.cs create mode 100644 UsingControl/HZHControls/Controls/RadioButton/UCRadioButton.cs create mode 100644 UsingControl/HZHControls/Controls/RadioButton/UCRadioButton.resx create mode 100644 UsingControl/HZHControls/Controls/Roll/UCRollText.cs create mode 100644 UsingControl/HZHControls/Controls/Sampling/UCSampling.cs create mode 100644 UsingControl/HZHControls/Controls/ScrollBar/ScrollbarComponent.cs create mode 100644 UsingControl/HZHControls/Controls/ScrollBar/ScrollbarControlDesigner.cs create mode 100644 UsingControl/HZHControls/Controls/ScrollBar/UCHScrollbar.cs create mode 100644 UsingControl/HZHControls/Controls/ScrollBar/UCVScrollbar.cs create mode 100644 UsingControl/HZHControls/Controls/ScrollBar/UCVScrollbar.resx create mode 100644 UsingControl/HZHControls/Controls/Shadow/ShadowComponent.cs create mode 100644 UsingControl/HZHControls/Controls/Split/UCSplitLine_H.Designer.cs create mode 100644 UsingControl/HZHControls/Controls/Split/UCSplitLine_H.cs create mode 100644 UsingControl/HZHControls/Controls/Split/UCSplitLine_H.resx create mode 100644 UsingControl/HZHControls/Controls/Split/UCSplitLine_V.Designer.cs create mode 100644 UsingControl/HZHControls/Controls/Split/UCSplitLine_V.cs create mode 100644 UsingControl/HZHControls/Controls/Split/UCSplitLine_V.resx create mode 100644 UsingControl/HZHControls/Controls/SplitLabel/UCSplitLabel.cs create mode 100644 UsingControl/HZHControls/Controls/Step/UCStep.Designer.cs create mode 100644 UsingControl/HZHControls/Controls/Step/UCStep.cs create mode 100644 UsingControl/HZHControls/Controls/Step/UCStep.resx create mode 100644 UsingControl/HZHControls/Controls/Switch/UCSwitch.Designer.cs create mode 100644 UsingControl/HZHControls/Controls/Switch/UCSwitch.cs create mode 100644 UsingControl/HZHControls/Controls/Switch/UCSwitch.resx create mode 100644 UsingControl/HZHControls/Controls/Tab/TabControlExt.cs create mode 100644 UsingControl/HZHControls/Controls/Text/KeyBoardType.cs create mode 100644 UsingControl/HZHControls/Controls/Text/TextBoxEx.Designer.cs create mode 100644 UsingControl/HZHControls/Controls/Text/TextBoxEx.cs create mode 100644 UsingControl/HZHControls/Controls/Text/TextBoxTransparent.cs create mode 100644 UsingControl/HZHControls/Controls/Text/TextBoxTransparent.resx create mode 100644 UsingControl/HZHControls/Controls/Text/UCNumTextBox.Designer.cs create mode 100644 UsingControl/HZHControls/Controls/Text/UCNumTextBox.cs create mode 100644 UsingControl/HZHControls/Controls/Text/UCNumTextBox.resx create mode 100644 UsingControl/HZHControls/Controls/Text/UCTextBoxEx.Designer.cs create mode 100644 UsingControl/HZHControls/Controls/Text/UCTextBoxEx.cs create mode 100644 UsingControl/HZHControls/Controls/Text/UCTextBoxEx.resx create mode 100644 UsingControl/HZHControls/Controls/Text/win32.cs create mode 100644 UsingControl/HZHControls/Controls/TimeLine/UCTimeLine.Designer.cs create mode 100644 UsingControl/HZHControls/Controls/TimeLine/UCTimeLine.cs create mode 100644 UsingControl/HZHControls/Controls/TimeLine/UCTimeLine.resx create mode 100644 UsingControl/HZHControls/Controls/TrackBar/UCTrackBar.cs create mode 100644 UsingControl/HZHControls/Controls/Transfer/TransferEventArgs.cs create mode 100644 UsingControl/HZHControls/Controls/Transfer/UCTransfer.Designer.cs create mode 100644 UsingControl/HZHControls/Controls/Transfer/UCTransfer.cs create mode 100644 UsingControl/HZHControls/Controls/Transfer/UCTransfer.resx create mode 100644 UsingControl/HZHControls/Controls/Treeview/TreeViewEx.cs create mode 100644 UsingControl/HZHControls/Controls/UCControlBase.Designer.cs create mode 100644 UsingControl/HZHControls/Controls/UCControlBase.cs create mode 100644 UsingControl/HZHControls/Controls/UCControlBase.resx create mode 100644 UsingControl/HZHControls/Controls/Verification/VerificationAttribute.cs create mode 100644 UsingControl/HZHControls/Controls/Verification/VerificationComponent.cs create mode 100644 UsingControl/HZHControls/Controls/Verification/VerificationEventArgs.cs create mode 100644 UsingControl/HZHControls/Controls/Verification/VerificationModel.cs create mode 100644 UsingControl/HZHControls/Controls/Wave/UCWave.cs create mode 100644 UsingControl/HZHControls/Controls/Wave/UCWaveChart.cs create mode 100644 UsingControl/HZHControls/Forms/FrmAnchor.Designer.cs create mode 100644 UsingControl/HZHControls/Forms/FrmAnchor.cs create mode 100644 UsingControl/HZHControls/Forms/FrmAnchor.resx create mode 100644 UsingControl/HZHControls/Forms/FrmAnchorTips.Designer.cs create mode 100644 UsingControl/HZHControls/Forms/FrmAnchorTips.cs create mode 100644 UsingControl/HZHControls/Forms/FrmAnchorTips.resx create mode 100644 UsingControl/HZHControls/Forms/FrmBack.Designer.cs create mode 100644 UsingControl/HZHControls/Forms/FrmBack.cs create mode 100644 UsingControl/HZHControls/Forms/FrmBack.resx create mode 100644 UsingControl/HZHControls/Forms/FrmBase.Designer.cs create mode 100644 UsingControl/HZHControls/Forms/FrmBase.cs create mode 100644 UsingControl/HZHControls/Forms/FrmBase.resx create mode 100644 UsingControl/HZHControls/Forms/FrmDialog.Designer.cs create mode 100644 UsingControl/HZHControls/Forms/FrmDialog.cs create mode 100644 UsingControl/HZHControls/Forms/FrmDialog.resx create mode 100644 UsingControl/HZHControls/Forms/FrmInputs.Designer.cs create mode 100644 UsingControl/HZHControls/Forms/FrmInputs.cs create mode 100644 UsingControl/HZHControls/Forms/FrmInputs.resx create mode 100644 UsingControl/HZHControls/Forms/FrmLoading.Designer.cs create mode 100644 UsingControl/HZHControls/Forms/FrmLoading.cs create mode 100644 UsingControl/HZHControls/Forms/FrmLoading.resx create mode 100644 UsingControl/HZHControls/Forms/FrmTips.Designer.cs create mode 100644 UsingControl/HZHControls/Forms/FrmTips.cs create mode 100644 UsingControl/HZHControls/Forms/FrmTips.resx create mode 100644 UsingControl/HZHControls/Forms/FrmTransparent.Designer.cs create mode 100644 UsingControl/HZHControls/Forms/FrmTransparent.cs create mode 100644 UsingControl/HZHControls/Forms/FrmTransparent.resx create mode 100644 UsingControl/HZHControls/Forms/FrmWaiting.Designer.cs create mode 100644 UsingControl/HZHControls/Forms/FrmWaiting.cs create mode 100644 UsingControl/HZHControls/Forms/FrmWaiting.resx create mode 100644 UsingControl/HZHControls/Forms/FrmWithOKCancel1.Designer.cs create mode 100644 UsingControl/HZHControls/Forms/FrmWithOKCancel1.cs create mode 100644 UsingControl/HZHControls/Forms/FrmWithOKCancel1.resx create mode 100644 UsingControl/HZHControls/Forms/FrmWithOKCancel2.Designer.cs create mode 100644 UsingControl/HZHControls/Forms/FrmWithOKCancel2.cs create mode 100644 UsingControl/HZHControls/Forms/FrmWithOKCancel2.resx create mode 100644 UsingControl/HZHControls/Forms/FrmWithTitle.Designer.cs create mode 100644 UsingControl/HZHControls/Forms/FrmWithTitle.cs create mode 100644 UsingControl/HZHControls/Forms/FrmWithTitle.resx create mode 100644 UsingControl/HZHControls/HZH_Controls.csproj create mode 100644 UsingControl/HZHControls/HZH_Controls.nuspec create mode 100644 UsingControl/HZHControls/HandInput/HandInput.dll create mode 100644 UsingControl/HZHControls/HandInput/HandInput64.dll create mode 100644 UsingControl/HZHControls/HandInput/certificate create mode 100644 UsingControl/HZHControls/HandInput/certificate64 create mode 100644 UsingControl/HZHControls/HandInput/handinput.cupf create mode 100644 UsingControl/HZHControls/HandInput/handinput.exe create mode 100644 UsingControl/HZHControls/HandInput/handinput.ini create mode 100644 UsingControl/HZHControls/HandInput/icon.png create mode 100644 UsingControl/HZHControls/HandInput/lm_HW_PB_7000_kn.arpa.7e9.prune.1e-7.lm.fixed create mode 100644 UsingControl/HZHControls/HandInput/overlapEngine.dll create mode 100644 UsingControl/HZHControls/HandInput/sgim_annex.bin create mode 100644 UsingControl/HZHControls/HandInput/sgim_hz.bin create mode 100644 UsingControl/HZHControls/HandInput/sgim_py.bin create mode 100644 UsingControl/HZHControls/HandInput/singleEngine.dll create mode 100644 UsingControl/HZHControls/Helpers/ControlHelper.cs create mode 100644 UsingControl/HZHControls/Helpers/Ext.cs create mode 100644 UsingControl/HZHControls/Helpers/GraphDirection.cs create mode 100644 UsingControl/HZHControls/Helpers/ITheme.cs create mode 100644 UsingControl/HZHControls/Helpers/MouseHook.cs create mode 100644 UsingControl/HZHControls/Helpers/NativeMethods.cs create mode 100644 UsingControl/HZHControls/Helpers/TextInputType.cs create mode 100644 UsingControl/HZHControls/Helpers/WindowsHook.cs create mode 100644 UsingControl/HZHControls/IconFont/ElegantIcons.ttf create mode 100644 UsingControl/HZHControls/IconFont/FontAwesome.ttf create mode 100644 UsingControl/HZHControls/IconFont/FontIcons.cs create mode 100644 UsingControl/HZHControls/IconFont/FontImages.cs create mode 100644 UsingControl/HZHControls/Properties/AssemblyInfo.cs create mode 100644 UsingControl/HZHControls/Properties/Resources.Designer.cs create mode 100644 UsingControl/HZHControls/Properties/Resources.resx create mode 100644 UsingControl/HZHControls/Resources/ComboBox.png create mode 100644 UsingControl/HZHControls/Resources/alarm.png create mode 100644 UsingControl/HZHControls/Resources/back.png create mode 100644 UsingControl/HZHControls/Resources/caret-down.png create mode 100644 UsingControl/HZHControls/Resources/caret-right.png create mode 100644 UsingControl/HZHControls/Resources/checkbox0.png create mode 100644 UsingControl/HZHControls/Resources/checkbox00.png create mode 100644 UsingControl/HZHControls/Resources/checkbox1.png create mode 100644 UsingControl/HZHControls/Resources/checkbox10.png create mode 100644 UsingControl/HZHControls/Resources/chevron-left.png create mode 100644 UsingControl/HZHControls/Resources/chevron-right.png create mode 100644 UsingControl/HZHControls/Resources/dateRight.png create mode 100644 UsingControl/HZHControls/Resources/datetLeft.png create mode 100644 UsingControl/HZHControls/Resources/dialog_close.png create mode 100644 UsingControl/HZHControls/Resources/down.png create mode 100644 UsingControl/HZHControls/Resources/end.png create mode 100644 UsingControl/HZHControls/Resources/error.png create mode 100644 UsingControl/HZHControls/Resources/first.png create mode 100644 UsingControl/HZHControls/Resources/handinput.exe create mode 100644 UsingControl/HZHControls/Resources/help.png create mode 100644 UsingControl/HZHControls/Resources/ic_add_black_18dp.png create mode 100644 UsingControl/HZHControls/Resources/ic_remove_black_18dp.png create mode 100644 UsingControl/HZHControls/Resources/ic_search_black_24dp.png create mode 100644 UsingControl/HZHControls/Resources/input_clear.png create mode 100644 UsingControl/HZHControls/Resources/keyboard.png create mode 100644 UsingControl/HZHControls/Resources/keyboard_bs.png create mode 100644 UsingControl/HZHControls/Resources/left.png create mode 100644 UsingControl/HZHControls/Resources/list_add.png create mode 100644 UsingControl/HZHControls/Resources/list_subtract.png create mode 100644 UsingControl/HZHControls/Resources/loading.gif create mode 100644 UsingControl/HZHControls/Resources/more1.png create mode 100644 UsingControl/HZHControls/Resources/qty_delete.png create mode 100644 UsingControl/HZHControls/Resources/radioButton0.png create mode 100644 UsingControl/HZHControls/Resources/radioButton00.png create mode 100644 UsingControl/HZHControls/Resources/radioButton1.png create mode 100644 UsingControl/HZHControls/Resources/radioButton10.png create mode 100644 UsingControl/HZHControls/Resources/right.png create mode 100644 UsingControl/HZHControls/Resources/rigth.png create mode 100644 UsingControl/HZHControls/Resources/sanjiao1.png create mode 100644 UsingControl/HZHControls/Resources/sanjiao2.png create mode 100644 UsingControl/HZHControls/Resources/success.png create mode 100644 UsingControl/HZHControls/Resources/tips.png create mode 100644 UsingControl/HZHControls/Resources/up.png create mode 100644 UsingControl/HZHControls/Resources/warning.png create mode 100644 UsingControl/HZHControls/UIEditor/FrmSelectImage.Designer.cs create mode 100644 UsingControl/HZHControls/UIEditor/FrmSelectImage.cs create mode 100644 UsingControl/HZHControls/UIEditor/FrmSelectImage.resx create mode 100644 UsingControl/HZHControls/UIEditor/ImagePropertyEditor.cs create mode 100644 UsingControl/HZHControls/buidnuget.bat create mode 100644 UsingControl/HZHControls/nuget.exe diff --git a/.vs/VisionEdit/v14/.suo b/.vs/VisionEdit/v14/.suo index 4abcd9c16a91f25debae8179cd7f042504a01ac6..de35ceb26b52a0abd7b07d64c452d16886f0f872 100644 GIT binary patch delta 65195 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�KF1z^X z`iK2j zz(RJZc&(m4C^ZotwF~Y*2bku(`lJ1at~>v;r`Nx8>xk_Dp~83o-DfPA>NrfReUZcF zFxafcLA}8k@LK}K%U9HC)(|iyO&PHPS=-dh;>fk^oWLCSWM6qh-Qos+O`*4{I=H;> z{8e`AMBnUrt`$|)l|F;HSnsQ-s`bsT3N+L$uM0I6yX8oo#qJdi4Z+&R1;GZ|87yw} zH!Kb|(xj>3|6IGGx_YX{w4|}Ie)77Ab9hXyX>pU NI_eSP_%ZFU{{;kUS97?X=Q*y9FX3Hq2si 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 - + Form @@ -76,12 +76,8 @@ {7CD50B44-BF56-4E8E-8FA1-05F6968C1835} ToolBase - - {6b38d68f-e77b-4761-bde5-a261ea8925dd} - LogForm - - {d4e052b9-e541-4b67-a1f9-273073ef1d4b} + {D4E052B9-E541-4B67-A1F9-273073EF1D4B} Logger diff --git a/CaliperTool/CaliperToolRun.cs b/CaliperTool/CaliperToolRun.cs index 4cd0862..0cfde12 100644 --- a/CaliperTool/CaliperToolRun.cs +++ b/CaliperTool/CaliperToolRun.cs @@ -15,6 +15,7 @@ using CommonMethods; using CommonMethods.Interface; using FormLib; using HalconDotNet; +using Logger; using System; using System.Collections.Generic; using System.Drawing; @@ -38,7 +39,7 @@ namespace CaliperTool if (L_toolList[toolIndex].toolInput[j].IOName == "InputImage" && L_toolList[toolIndex].GetInput(L_toolList[toolIndex].toolInput[j].IOName).value == null) { selectNode.ForeColor = Color.Red; - Logger.LoggerClass.WriteLog($"{L_toolList[toolIndex].toolName} 无输入图像"); + LoggerClass.WriteLog($"{L_toolList[toolIndex].toolName} 无输入图像"); break; } else @@ -46,9 +47,9 @@ namespace CaliperTool if (L_toolList[toolIndex].GetInput(L_toolList[toolIndex].toolInput[j].IOName).value != null) { string sourceFrom = L_toolList[toolIndex].GetInput(L_toolList[toolIndex].toolInput[j].IOName).value.ToString(); - string sourceToolName = Regex.Split(sourceFrom, " . ")[0]; - sourceToolName = sourceToolName.Substring(3, Regex.Split(sourceFrom, " . ")[0].Length - 3); - string toolItem = Regex.Split(sourceFrom, " . ")[1]; + string sourceToolName = Regex.Split(sourceFrom, "->")[0]; + sourceToolName = sourceToolName.Substring(3, Regex.Split(sourceFrom, "->")[0].Length - 3); + string toolItem = Regex.Split(sourceFrom, "->")[1]; if (L_toolList[toolIndex].toolInput[j].IOName == "InputImage") { myCaliper.inputImage = myJob.GetToolInfoByToolName(sourceToolName).GetOutput(toolItem).value as HObject; @@ -72,7 +73,7 @@ namespace CaliperTool myCaliper.Run(SoftwareRunState.Release); if (myCaliper.toolRunStatu == ToolRunStatu.Succeed) { - myCaliper.DispMainWindow(FormImageWindow.Instance.myHWindow); + myCaliper.DispMainWindow(FormImageWindow.Instance.myHWindow.DispHWindow); myJob.FormLogDisp(L_toolList[toolIndex].toolName + " 运行成功", Color.Green, selectNode); } else diff --git a/CaliperTool/FormCaliper.Designer.cs b/CaliperTool/FormCaliper.Designer.cs index 6de3af7..11185b2 100644 --- a/CaliperTool/FormCaliper.Designer.cs +++ b/CaliperTool/FormCaliper.Designer.cs @@ -45,7 +45,6 @@ this.btn_moveCliperRegion = new System.Windows.Forms.Button(); this.cbx_edgeSelect = new System.Windows.Forms.ComboBox(); this.tbx_resultStartCol = new System.Windows.Forms.TextBox(); - this.txbLog = new System.Windows.Forms.TextBox(); this.splitContainer1 = new System.Windows.Forms.SplitContainer(); this.panel1 = new System.Windows.Forms.Panel(); this.groupBox4 = new System.Windows.Forms.GroupBox(); @@ -63,6 +62,11 @@ this.groupBox2 = new System.Windows.Forms.GroupBox(); this.label7 = new System.Windows.Forms.Label(); this.label9 = new System.Windows.Forms.Label(); + this.panel2 = new System.Windows.Forms.Panel(); + this.statusStrip = new System.Windows.Forms.StatusStrip(); + this.lb_RunStatus = new System.Windows.Forms.ToolStripStatusLabel(); + this.lb_Split = new System.Windows.Forms.ToolStripStatusLabel(); + this.lb_RunTime = new System.Windows.Forms.ToolStripStatusLabel(); ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit(); this.splitContainer1.Panel1.SuspendLayout(); this.splitContainer1.Panel2.SuspendLayout(); @@ -71,6 +75,7 @@ this.groupBox3.SuspendLayout(); this.groupBox1.SuspendLayout(); this.groupBox2.SuspendLayout(); + this.statusStrip.SuspendLayout(); this.SuspendLayout(); // // tbx_resultStartRow @@ -242,16 +247,6 @@ this.tbx_resultStartCol.Size = new System.Drawing.Size(71, 21); this.tbx_resultStartCol.TabIndex = 104; // - // txbLog - // - this.txbLog.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.txbLog.Location = new System.Drawing.Point(1, 487); - this.txbLog.Name = "txbLog"; - this.txbLog.ReadOnly = true; - this.txbLog.Size = new System.Drawing.Size(1127, 21); - this.txbLog.TabIndex = 276; - // // splitContainer1 // this.splitContainer1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) @@ -267,6 +262,7 @@ // splitContainer1.Panel2 // this.splitContainer1.Panel2.BackColor = System.Drawing.Color.White; + this.splitContainer1.Panel2.Controls.Add(this.panel2); this.splitContainer1.Panel2.Controls.Add(this.groupBox4); this.splitContainer1.Panel2.Controls.Add(this.groupBox3); this.splitContainer1.Panel2.Controls.Add(this.groupBox1); @@ -452,12 +448,49 @@ this.label9.TabIndex = 105; this.label9.Text = "中心列坐标:"; // + // panel2 + // + this.panel2.Location = new System.Drawing.Point(-566, 485); + this.panel2.Name = "panel2"; + this.panel2.Size = new System.Drawing.Size(1127, 25); + this.panel2.TabIndex = 276; + // + // statusStrip + // + this.statusStrip.BackColor = System.Drawing.Color.White; + this.statusStrip.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.statusStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.lb_RunStatus, + this.lb_Split, + this.lb_RunTime}); + this.statusStrip.Location = new System.Drawing.Point(0, 485); + this.statusStrip.Name = "statusStrip"; + this.statusStrip.Size = new System.Drawing.Size(1132, 24); + this.statusStrip.TabIndex = 276; + this.statusStrip.Text = "statusStrip1"; + // + // lb_RunStatus + // + this.lb_RunStatus.Name = "lb_RunStatus"; + this.lb_RunStatus.Size = new System.Drawing.Size(0, 19); + // + // lb_Split + // + this.lb_Split.Name = "lb_Split"; + this.lb_Split.Size = new System.Drawing.Size(189, 19); + this.lb_Split.Text = " "; + // + // lb_RunTime + // + this.lb_RunTime.Name = "lb_RunTime"; + this.lb_RunTime.Size = new System.Drawing.Size(0, 19); + // // FormCaliper // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(1132, 509); - this.Controls.Add(this.txbLog); + this.Controls.Add(this.statusStrip); this.Controls.Add(this.splitContainer1); this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); this.Name = "FormCaliper"; @@ -475,6 +508,8 @@ this.groupBox1.PerformLayout(); this.groupBox2.ResumeLayout(false); this.groupBox2.PerformLayout(); + this.statusStrip.ResumeLayout(false); + this.statusStrip.PerformLayout(); this.ResumeLayout(false); this.PerformLayout(); @@ -497,7 +532,6 @@ private System.Windows.Forms.Button btn_moveCliperRegion; public System.Windows.Forms.ComboBox cbx_edgeSelect; public System.Windows.Forms.TextBox tbx_resultStartCol; - public System.Windows.Forms.TextBox txbLog; private System.Windows.Forms.SplitContainer splitContainer1; private System.Windows.Forms.Panel panel1; private System.Windows.Forms.GroupBox groupBox3; @@ -515,5 +549,10 @@ private System.Windows.Forms.Label label9; private System.Windows.Forms.GroupBox groupBox4; private System.Windows.Forms.CheckBox chBDispCaliperROI; + private System.Windows.Forms.Panel panel2; + public System.Windows.Forms.StatusStrip statusStrip; + public System.Windows.Forms.ToolStripStatusLabel lb_RunStatus; + private System.Windows.Forms.ToolStripStatusLabel lb_Split; + public System.Windows.Forms.ToolStripStatusLabel lb_RunTime; } } \ No newline at end of file diff --git a/CaliperTool/FormCaliper.cs b/CaliperTool/FormCaliper.cs index 061feb9..5599a70 100644 --- a/CaliperTool/FormCaliper.cs +++ b/CaliperTool/FormCaliper.cs @@ -9,6 +9,7 @@ using System.Threading.Tasks; using System.Windows.Forms; using CommonMethods; using ChoiceTech.Halcon.Control; +using HalconDotNet; namespace CaliperTool { @@ -17,32 +18,43 @@ namespace CaliperTool public Caliper myCaliper = null; public IToolInfo myToolInfo = null; - public HWindow_Final myHwindow = new HWindow_Final(); + public HSmartWindowControl myHwindow = new HSmartWindowControl(); - private static FormCaliper _instance = null; + private static FormCaliper _instance; public FormCaliper(ref object caliper) { InitializeComponent(); - myToolInfo = (IToolInfo)caliper; - myCaliper = (Caliper)myToolInfo.tool; _instance = this; - myCaliper.DispImage(); + if (caliper.GetType().FullName != "System.Object") + { + myToolInfo = (IToolInfo)caliper; + myCaliper = (Caliper)myToolInfo.tool; + myCaliper.DispImage(); + } } public static FormCaliper Instance { get { - if(_instance!= null) + if (_instance != null) { - return _instance; + lock (_instance) + { + if (_instance == null) + { + object calib = new object(); + _instance = new FormCaliper(ref calib); + } + return _instance; + } } else { - object caliper = new object(); - _instance = new FormCaliper(ref caliper); + object line = new object(); + _instance = new FormCaliper(ref line); return _instance; } - + } } @@ -78,16 +90,7 @@ namespace CaliperTool private void btn_moveCliperRegion_Click(object sender, EventArgs e) { myCaliper.UpdateImage(); - myCaliper.DrawExpectLine(myHwindow); - } - - public void TextBoxMessageDisp(string mes, Color setColor) - { - txbLog.BackColor = setColor; - txbLog.Text = mes; - txbLog.Font = new Font("微软雅黑", 10, FontStyle.Bold); - //CommonMethods.CommonMethods.Delay(2000); - txbLog.BackColor = Color.White; + myCaliper.DrawExpectLine(myHwindow.HalconWindow); } private void btn_runCaliperool_Click(object sender, EventArgs e) @@ -105,5 +108,29 @@ namespace CaliperTool myCaliper.sigma = Convert.ToDouble(tbx_Sigma.Text.Trim()); myCaliper.Run(SoftwareRunState.Debug); } + + ///

+ /// 设定工具运行状态 + /// + /// 运行中的信息 + /// 运行状态 + public void SetToolStatus(string msg, ToolRunStatu status) + { + if (myCaliper != null) + { + myCaliper.runMessage = msg; + myCaliper.toolRunStatu = status; + lb_RunStatus.Text = myCaliper.toolRunStatu == ToolRunStatu.Succeed ? "工具运行成功!" : $"工具运行异常, 异常原因:{myCaliper.runMessage}"; + lb_RunTime.Text = myCaliper.runTime; + if (myCaliper.toolRunStatu == ToolRunStatu.Succeed) + { + statusStrip.BackColor = Color.LimeGreen; + } + else + { + statusStrip.BackColor = Color.Red; + } + } + } } } diff --git a/CaliperTool/FormCaliper.resx b/CaliperTool/FormCaliper.resx index 6c0e7bb..93b2685 100644 --- a/CaliperTool/FormCaliper.resx +++ b/CaliperTool/FormCaliper.resx @@ -117,6 +117,9 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 17, 17 + diff --git a/CaliperTool/obj/Debug/CaliperTool.csproj.FileListAbsolute.txt b/CaliperTool/obj/Debug/CaliperTool.csproj.FileListAbsolute.txt index 211d2e4..1fbb4fa 100644 --- a/CaliperTool/obj/Debug/CaliperTool.csproj.FileListAbsolute.txt +++ b/CaliperTool/obj/Debug/CaliperTool.csproj.FileListAbsolute.txt @@ -32,6 +32,9 @@ G:\VisionEdit\VisionEdit\CaliperTool\obj\Debug\CaliperTool.FormCaliper.resources G:\VisionEdit\VisionEdit\CaliperTool\obj\Debug\CaliperTool.csproj.GenerateResource.Cache G:\VisionEdit\VisionEdit\CaliperTool\obj\Debug\CaliperTool.dll G:\VisionEdit\VisionEdit\CaliperTool\obj\Debug\CaliperTool.pdb +F:\GitHubClone\最新克隆\VisionEdit\CaliperTool\obj\Debug\CaliperTool.csprojResolveAssemblyReference.cache +F:\GitHubClone\最新克隆\VisionEdit\CaliperTool\obj\Debug\CaliperTool.FormCaliper.resources +F:\GitHubClone\最新克隆\VisionEdit\CaliperTool\obj\Debug\CaliperTool.csproj.GenerateResource.Cache F:\GitHubClone\最新克隆\VisionEdit\CaliperTool\bin\Debug\log4net.config F:\GitHubClone\最新克隆\VisionEdit\CaliperTool\bin\Debug\CaliperTool.dll F:\GitHubClone\最新克隆\VisionEdit\CaliperTool\bin\Debug\CaliperTool.pdb @@ -40,7 +43,6 @@ F:\GitHubClone\最新克隆\VisionEdit\CaliperTool\bin\Debug\DataStruct.dll F:\GitHubClone\最新克隆\VisionEdit\CaliperTool\bin\Debug\FormLib.dll F:\GitHubClone\最新克隆\VisionEdit\CaliperTool\bin\Debug\halcondotnet.dll F:\GitHubClone\最新克隆\VisionEdit\CaliperTool\bin\Debug\HWindow_Tool.dll -F:\GitHubClone\最新克隆\VisionEdit\CaliperTool\bin\Debug\LogForm.dll F:\GitHubClone\最新克隆\VisionEdit\CaliperTool\bin\Debug\Logger.dll F:\GitHubClone\最新克隆\VisionEdit\CaliperTool\bin\Debug\ToolBase.dll F:\GitHubClone\最新克隆\VisionEdit\CaliperTool\bin\Debug\ToolLib.VisionJob.dll @@ -52,15 +54,11 @@ F:\GitHubClone\最新克隆\VisionEdit\CaliperTool\bin\Debug\CommonMethods.pdb F:\GitHubClone\最新克隆\VisionEdit\CaliperTool\bin\Debug\DataStruct.pdb F:\GitHubClone\最新克隆\VisionEdit\CaliperTool\bin\Debug\FormLib.pdb F:\GitHubClone\最新克隆\VisionEdit\CaliperTool\bin\Debug\ToolBase.pdb -F:\GitHubClone\最新克隆\VisionEdit\CaliperTool\bin\Debug\LogForm.pdb F:\GitHubClone\最新克隆\VisionEdit\CaliperTool\bin\Debug\Logger.pdb F:\GitHubClone\最新克隆\VisionEdit\CaliperTool\bin\Debug\ToolLib.VisionJob.pdb F:\GitHubClone\最新克隆\VisionEdit\CaliperTool\bin\Debug\HWindow_Tool.pdb F:\GitHubClone\最新克隆\VisionEdit\CaliperTool\bin\Debug\halcondotnet.xml -F:\GitHubClone\最新克隆\VisionEdit\CaliperTool\bin\Debug\WeifenLuo.WinFormsUI.Docking.pdb +F:\GitHubClone\最新克隆\VisionEdit\CaliperTool\bin\Debug\Newtonsoft.Json.xml F:\GitHubClone\最新克隆\VisionEdit\CaliperTool\bin\Debug\DevComponents.DotNetBar2.xml -F:\GitHubClone\最新克隆\VisionEdit\CaliperTool\obj\Debug\CaliperTool.csprojResolveAssemblyReference.cache -F:\GitHubClone\最新克隆\VisionEdit\CaliperTool\obj\Debug\CaliperTool.FormCaliper.resources -F:\GitHubClone\最新克隆\VisionEdit\CaliperTool\obj\Debug\CaliperTool.csproj.GenerateResource.Cache F:\GitHubClone\最新克隆\VisionEdit\CaliperTool\obj\Debug\CaliperTool.dll F:\GitHubClone\最新克隆\VisionEdit\CaliperTool\obj\Debug\CaliperTool.pdb diff --git a/CaliperTool/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/CaliperTool/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache index ee6036d4411302859799f3eb76800976387c6b31..29b7bbceccb904b9f8930024049c047bd8b6ec60 100644 GIT binary patch delta 381 zcmZp+S!=yvIS-@o<`q2i85#X1Z{$&*oX^KU`3j#Tqx|G|e0hutlVkbQSQQx<7*ZxD z@`p}V5N79c&M!*UOUcP$Q<|(NP|d20EXn7RSds{qQ~?Ud!}M^1l&b)qQEj=KY#jP|ahmixwVg+JOWG#%GaM8&R zCFK|mCP~RM8cvpz5@$C8%1Bj*Om<)rW2vlVGoBpI?I~db6y&WAN-THF%t`f2%uTIj nGX)CS0v)9>`M#7qqZ!cVC{}ZzSS;8Jo27*qbv7T9wq*hUtMpZg delta 380 zcmZ2$-E6aAIS-@A<`q2i87FVx(U_di$FJa)Uz8h@l$jUflA2VS9^;dr4ieEz$;n}p zXJBCPo4k=n9jH))RRPG$oP19xbn-_&QC3ADFA>a3;OAvjnw-a<$*K$#D+7wfOtuh^ zW>f)+C2+YUmL!4=Q=Pm|Aca*8s3aYvgx94gu{<*`9W19ld4garqsHWaf<=s)lM971 z7`1>R36rgad0DlAI^4jHC>B;=)dBJ%K)lWSg*8~kb%9(M5M%?g7=f5gZ}LBhWG#Il zlf|txCx?*($YKRzPGseboN&>}-I8*QhLcxG%1Rmm1%;|TGV@9T5=%1Nit=+kOHy-d z*^DPYkd$XMnIz>YVhU8kTOE{G?v|O8>X(?CTFYiOIabP>(Hv-PBpaIrP(BtMGO^M^ LjJlf(q-~i1%(q_& diff --git a/CommonMethods/CommonHelper.csproj b/CommonMethods/CommonHelper.csproj index f3add07..6da8b41 100644 --- a/CommonMethods/CommonHelper.csproj +++ b/CommonMethods/CommonHelper.csproj @@ -33,8 +33,9 @@ C:\Program Files\MVTec\HALCON-19.05-Progress\bin\dotnet20\halcondotnet.dll - - G:\2D程序最新版本\G3\UMP_BandOnly_2D_V2.5.4\UMP_BandOnly_S3\bin\x64\Debug\Newtonsoft.Json.dll + + ..\packages\Newtonsoft.Json.13.0.1\lib\net45\Newtonsoft.Json.dll + True @@ -58,6 +59,9 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + + 138, 17 + + + + + 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 + + + + True + + + True + + + True + + + True + + + True + + + 71 + + + + AAABAAQAMDAAAAEAIACoJQAARgAAAEBAAAABACAAKEIAAO4lAACAgAAAAQAgACgIAQAWaAAAAAAAAAEA + IACOJgAAPnABACgAAAAwAAAAYAAAAAEAIAAAAAAAUCUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAE9HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/AAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE9HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE9HN/9PRzf/1LgA/9S4 + AP/UuAD/1LgA/9S4AP/UuAD/1LgA/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/1LgA/9S4AP/UuAD/1LgA/9S4 + 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 + GP///xj///8Y////GP///xj///8Y////GP///xj///8Y////GP///xj///8Y////GP///xj///8Y//// + GP///xj///8Y////GP///xj///8Y////GP///xj///8Y////GP///xj///8Y////GP///xj///8Y//// + GP///xj///8Y////GP///xj/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP// + GP///xj///8Y////GP///xj///8Y////GP///xj///8Y////GP///xj///8Y////GP///xj///8Y//// + GP///xj///8Y////GP///xj///8Y////GP///xj///8Y////GP///xj///8Y////GP///xj///8Y//// + GP///xj///8Y////GP///xj///8Y////GP///xj/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVar/A023 + /+5Nt///TLf/uwAAAABMtv+QTbf//023//9PuP9ETrH/DU63/+NNt///Tbf//k22/34AAAAATbf/Y023 + //tNt///Tbf/+2bM/wUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAATbf/NU23//9Nt///Trb/aVWq/wZNuP/vTbf//023/8QAAAAATbf/kU23//9Nt///TLf/cgAA + AABMtv9XTbf//023//9Nt//7Tbb/bQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAATrf/X023//9Nt///Tbj/Mk+1/zdNt///Tbf//062/2lRvP8TTbf/9023 + //9Ot//CAP//AU+5/x1Nt//zTbf//024/+9Ptf83AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + 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 + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArqSQ/66kkP8AAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABPuf86Tbf/wE23//9Nt///Tbf//023//9Nt///Tbf//023 + //9Nt//SAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACupJD/rqSQ/wAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArqSQ/66k + kP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEu0/yJNtv9tTLf/sU23 + /9RNt//zTbf//023//hNuP+IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AACupJD/rqSQ/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAArqSQ/66kkP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAACupJD/rqSQ/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAArqSQ/66kkP+upJD/rqSQ/66kkP+upJD/rqSQ/wAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAArqSQ/66kkP+upJD/rqSQ/66kkP+upJD/rqSQ/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArqSQ/66kkP+upJD/rqSQ/66kkP+upJD/rqSQ/wAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAArqSQ/66kkP+upJD/rqSQ/66kkP+upJD/rqSQ/wAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////8AAP///////wAA////////AAD///////8AAP// + /////wAA////////AAD4AAAAAB8AAPgAAAAAHwAA+AAAAAAfAAD4AAAAAB8AAPgAAAAAHwAA+AAAAAAf + AAD4AAAAAB8AAPgAAAAAHwAA+AAAAAAfAAD4AAAAAB8AAPgAAAAAHwAA+AAAAAAfAAD4AAAAAB8AAPgA + AAAAHwAA//+Ixx//AAD//5iOP/8AAP//mYx//wAA//+ZmM//AAD//xkYj/8AAP/7mRGP/wAA//GY8R// + AAD/8ZhjH/8AAP/xjAY//wAA//nGDH//AAD/+MP4f/8AAP/44OD//wAA//x4Af//AAD//jwH//8AAP/+ + H////wAA/n8H//5/AAD+f4Af/n8AAP5/4A/+fwAA/n/8D/5/AAD+f////n8AAP4D///AfwAA/gP//8B/ + AAD///////8AAP///////wAA////////AAD///////8AAP///////wAA////////AAAoAAAAQAAAAIAA + AAABACAAAAAAAABCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AABOSDZVT0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9OSDZVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAATkg2VU9HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/Tkg2VQAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE5INlVPRzf/T0c3/21fK/98bCX/fGwl/3xs + Jf98bCX/fGwl/3xsJf98bCX/fGwl/21fK/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/21fK/98bCX/fGwl/3xsJf98bCX/fGwl/3xsJf98bCX/fGwl/21fK/9PRzf/T0c3/05I + NlUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOSDZVT0c3/09H + N/+okhL/1LgA/9S4AP/UuAD/1LgA/9S4AP/UuAD/1LgA/9S4AP+okhL/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/+okhL/1LgA/9S4AP/UuAD/1LgA/9S4AP/UuAD/1LgA/9S4 + AP+okhL/T0c3/09HN/9OSDZVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAATkg2VU9HN/9PRzf/qJIS/9S4AP/UuAD/1LgA/9S4AP/UuAD/1LgA/9S4AP/UuAD/qJIS/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/qJIS/9S4AP/UuAD/1LgA/9S4 + AP/UuAD/1LgA/9S4AP/UuAD/qJIS/09HN/9PRzf/Tkg2VQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAE5INlVPRzf/T0c3/6iSEv/UuAD/1LgA/3xsJf98bCX/fGwl/3xs + Jf98bCX/fGwl/21fK/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/92aiv/u6gV/6GRHf9QSDf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/21f + K/98bCX/fGwl/3xsJf98bCX/fGwl/3xsJf/UuAD/1LgA/6iSEv9PRzf/T0c3/05INlUAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOSDZVT0c3/09HN/+okhL/1LgA/9S4 + AP9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/3ltKv/Quw///+UA///lAP//5QD/nY0f/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/1LgA/9S4AP+okhL/T0c3/09H + N/9OSDZVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATkg2VU9H + N/9PRzf/qJIS/9S4AP/UuAD/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/WVA0/7ypFf//5QD//+UA///lAP//5QD//+UA/6WU + HP9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/9S4 + AP/UuAD/qJIS/09HN/9PRzf/Tkg2VQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAE5INlVPRzf/T0c3/6iSEv/UuAD/1LgA/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/eGwq/+vTBv//5QD//+UA///l + AP//5QD/+eAC/7KfGP9VTDX/T0c3/1BIN/9rYS7/iHol/5OEIv+VhiH/aV4v/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN//UuAD/1LgA/6iSEv9PRzf/T0c3/05INlUAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOSDZVT0c3/09HN/+okhL/1LgA/9S4AP9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/g3Un//ng + Av//5QD//+UA///lAP/54AL/sp8Y/2FXMf9PRzf/fnEo/7+rFP/13AP//+UA///lAP//5QD//+UA//Pb + BP9XTzT/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/1LgA/9S4AP+okhL/T0c3/09HN/9OSDZVAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATkg2VU9HN/9PRzf/qJIS/9S4 + AP/UuAD/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/iHsl//ziAf//5QD//+UA///lAP/Zwwz/a2Eu/09HN/9/cij/28QL///lAP//5QD//+UA///l + AP//5QD//+UA///lAP//5QD/al8v/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/9S4AP/UuAD/qJIS/09H + N/9PRzf/Tkg2VQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE5I + NlVPRzf/T0c3/6iSEv/UuAD/1LgA/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/cmYs//jfAv//5QD//+UA///lAP+wnxn/UUk2/1VMNf+3pRb//uQA///l + AP//5QD//+UA///lAP//5QD//uQA//PbBP/u1gX/sJ8Z/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N//UuAD/1LgA/6iSEv9PRzf/T0c3/05INlUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAABOSDZVT0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/XlUy/+rSBv//5QD//+UA//7kAP+gkB7/T0c3/1lQ + NP/Uvg7//+UA///lAP//5QD//+UA/+vTBv+qmRv/dGgs/1RLNf9RSTb/ZFow/1BIN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9OSDZVAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATkg2VU9HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/8i0Ef//5QD//+UA///l + AP+rmhr/T0c3/1VMNf/Ywwz//+UA///lAP//5QD/9dwD/5eIIP9RSTb/T0c3/1BIN/+OgCP/5s8I///l + AP/JtRH/UUk2/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/Tkg2VQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE5INlVPRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/4N2 + J///5QD//+UA///lAP/JtRH/UEg3/1BIN//GsRL//+UA///lAP//5QD/5c4I/2dcL/9PRzf/T0c3/4N2 + J//iywn//+UA///lAP//5QD//+UA/2xhLv9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/05INlUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AABOSDZVT0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/1BIN//gygr//+UA///lAP/x2AX/W1Ez/09HN/+ThCL//+UA///lAP//5QD/7dUG/2Zd + MP9PRzf/WVA0/72qFf//5QD//+UA///lAP//5QD//+UA/9bADf9USzX/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9OSDZVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAt7Ukjv//GP///xj///8Y////GP///xj///8Y////GP///xj///8Y//// + GP///xj///8Y////GP///xj///8Y////GP///xj///8Y////GP///xj///8Y////GP///xj///8Y//// + GP///xj///8Y////GP///xj///8Y////GP///xj///8Y////GP///xj///8Y////GP///xj///8Y//// + GP///xj///8Y////GP///xj///8Y////GP///xj///8Y////GP///xj/t7UkjgAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALe1JI7//xj///8Y////GP///xj///8Y//// + GP///xj///8Y////GP///xj///8Y////GP///xj///8Y////GP///xj///8Y////GP///xj///8Y//// + GP///xj///8Y////GP///xj///8Y////GP///xj///8Y////GP///xj///8Y////GP///xj///8Y//// + GP///xj///8Y////GP///xj///8Y////GP///xj///8Y////GP///xj///8Y////GP///xj///8Y/7e1 + JI4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwrSRk09If49PS + H+PT0h/j09If49PSH+PT0h/j09If49PSH+PT0h/j09If49PSH+PT0h/j09If49PSH+PT0h/j0tIk5c3b + Pe/N2z3vzds979DXL+nT0h/j0tQl5c3bPe/N2z3vzds978/YM+vT0h/j09If48/YMurP2DPrz9gz68/Y + M+vP1zLq09Ih49PSH+PS0ybmzds9783bPe/N2z3vztg069PSH+PT0h/j09If49PSH+PT0h/j09If49PS + H+PT0h/j09If49PSH+OwrSRkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAE63/05Nt///Tbf//023//9Ntv9GAAAAAE64/31Nt///Tbf//023//9Ntv9GAAAAAE23 + /2NNt///Tbf//023//9Nt//nT7n/OgAAAABKtf8mTbf/3E23//9Nt///Tbf//063/6sAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMtv+TTbf//023//9Nt//pVar/A1Wq/wNNt//lTbf//023 + //9Nt//DAAAAAEq1/xhNt//xTbf//023//9Nt//rT7b/KgAAAABSuP8ZTbf/5k23//9Nt///Tbf//022 + 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 + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACuo49yrqSRq66kkauupJGrrqSRq66k + kauupJGrrqSQ/66kkP+upJGrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArqSRq66kkP+upJD/rqSQ/66kkP+upJD/rqSQ/66k + kP+upJD/rqSRqwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArqSRq66k + kP+upJD/rqSQ/66kkP+upJD/rqSQ/66kkP+upJD/rqSRqwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK6kkauupJD/rqSQ/66k + kP+upJD/rqSQ/66kkP+upJD/rqSQ/66kkasAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAK6kkauupJD/rqSQ/66kkP+upJD/rqSQ/66kkP+upJD/rqSQ/66kkasAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////////////////////////////////// + ///////////////////////////////////////////////////+AAAAAAAAf/4AAAAAAAB//gAAAAAA + AH/+AAAAAAAAf/4AAAAAAAB//gAAAAAAAH/+AAAAAAAAf/4AAAAAAAB//gAAAAAAAH/+AAAAAAAAf/4A + AAAAAAB//gAAAAAAAH/+AAAAAAAAf/4AAAAAAAB//gAAAAAAAH/+AAAAAAAAf/wAAAAAAAA//AAAAAAA + AD/+AAAAAAAAf////jjhwf/////8MMOD//////wxhwf//////HGHD//////8YY4Y//////xhDDD///// + /GEMMP////8ccZhx/////www+GH/////DDBww/////8OOAHD/////44cAYf/////hw4DD/////+HB/4P + /////8OB/B//////w8AAP//////h8AB//////+D8Af//////8H+P///////4P///////j/wP///x//+P + /gB///H//4//AAf/8f//j//AB//x//+P//wH//H//4//////8f//gD////wB//+AH///+AH//4Af///4 + Af////////////////////////////////////////////////////////////////////////////// + ////////KAAAAIAAAAAAAQAAAQAgAAAAAAAACAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAE9IN6tPRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0g3qwAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAT0g3q09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PSDerAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAABPSDerT0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09I + N6sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE9IN6tPRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0g3qwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAT0g3q09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PSDerAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABPSDerT0c3/09H + N/9PRzf/T0c3/21fK/+okhL/qJIS/6iSEv+okhL/qJIS/6iSEv+okhL/qJIS/6iSEv+okhL/qJIS/6iS + Ev+okhL/qJIS/6iSEv+okhL/qJIS/6iSEv9tXyv/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/21f + K/+okhL/qJIS/6iSEv+okhL/qJIS/6iSEv+okhL/qJIS/6iSEv+okhL/qJIS/6iSEv+okhL/qJIS/6iS + Ev+okhL/qJIS/6iSEv9tXyv/T0c3/09HN/9PRzf/T0c3/09IN6sAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAE9IN6tPRzf/T0c3/09HN/9PRzf/fGwl/9S4AP/UuAD/1LgA/9S4 + AP/UuAD/1LgA/9S4AP/UuAD/1LgA/9S4AP/UuAD/1LgA/9S4AP/UuAD/1LgA/9S4AP/UuAD/1LgA/3xs + Jf9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/fGwl/9S4AP/UuAD/1LgA/9S4AP/UuAD/1LgA/9S4 + AP/UuAD/1LgA/9S4AP/UuAD/1LgA/9S4AP/UuAD/1LgA/9S4AP/UuAD/1LgA/3xsJf9PRzf/T0c3/09H + N/9PRzf/T0g3qwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAT0g3q09H + N/9PRzf/T0c3/09HN/98bCX/1LgA/9S4AP/UuAD/1LgA/9S4AP/UuAD/1LgA/9S4AP/UuAD/1LgA/9S4 + AP/UuAD/1LgA/9S4AP/UuAD/1LgA/9S4AP/UuAD/fGwl/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/98bCX/1LgA/9S4AP/UuAD/1LgA/9S4AP/UuAD/1LgA/9S4AP/UuAD/1LgA/9S4AP/UuAD/1LgA/9S4 + AP/UuAD/1LgA/9S4AP/UuAD/fGwl/09HN/9PRzf/T0c3/09HN/9PSDerAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABPSDerT0c3/09HN/9PRzf/T0c3/3xsJf/UuAD/1LgA/9S4 + AP/UuAD/1LgA/9S4AP/UuAD/1LgA/9S4AP/UuAD/1LgA/9S4AP/UuAD/1LgA/9S4AP/UuAD/1LgA/9S4 + AP98bCX/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/3xsJf/UuAD/1LgA/9S4AP/UuAD/1LgA/9S4 + AP/UuAD/1LgA/9S4AP/UuAD/1LgA/9S4AP/UuAD/1LgA/9S4AP/UuAD/1LgA/9S4AP98bCX/T0c3/09H + N/9PRzf/T0c3/09IN6sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE9I + N6tPRzf/T0c3/09HN/9PRzf/fGwl/9S4AP/UuAD/1LgA/9S4AP/UuAD/1LgA/9S4AP/UuAD/1LgA/9S4 + AP/UuAD/1LgA/9S4AP/UuAD/1LgA/9S4AP/UuAD/1LgA/3xsJf9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/fGwl/9S4AP/UuAD/1LgA/9S4AP/UuAD/1LgA/9S4AP/UuAD/1LgA/9S4AP/UuAD/1LgA/9S4 + AP/UuAD/1LgA/9S4AP/UuAD/1LgA/3xsJf9PRzf/T0c3/09HN/9PRzf/T0g3qwAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAT0g3q09HN/9PRzf/T0c3/09HN/98bCX/1LgA/9S4 + AP/UuAD/1LgA/9S4AP+okhL/qJIS/6iSEv+okhL/qJIS/6iSEv+okhL/qJIS/6iSEv+okhL/qJIS/6iS + Ev+okhL/bV8r/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/YFYy/35xKP9uYi3/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9tXyv/qJIS/6iSEv+okhL/qJIS/6iS + Ev+okhL/qJIS/6iSEv+okhL/qJIS/6iSEv+okhL/qJIS/9S4AP/UuAD/1LgA/9S4AP/UuAD/fGwl/09H + N/9PRzf/T0c3/09HN/9PSDerAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AABPSDerT0c3/09HN/9PRzf/T0c3/3xsJf/UuAD/1LgA/9S4AP/UuAD/1LgA/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/cGUt/76rFP/74gH//+UA///l + AP/Quw//W1Ez/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/1LgA/9S4AP/UuAD/1LgA/9S4AP98bCX/T0c3/09HN/9PRzf/T0c3/09IN6sAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE9IN6tPRzf/T0c3/09HN/9PRzf/fGwl/9S4 + AP/UuAD/1LgA/9S4AP/UuAD/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/eW0q/9G8Dv//5QD//+UA///lAP//5QD//+UA///lAP/JtRH/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN//UuAD/1LgA/9S4AP/UuAD/1LgA/3xs + Jf9PRzf/T0c3/09HN/9PRzf/T0g3qwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAT0g3q09HN/9PRzf/T0c3/09HN/98bCX/1LgA/9S4AP/UuAD/1LgA/9S4AP9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/cmcs/865D///5QD//+UA///lAP//5QD//+UA///l + AP//5QD//+UA///lAP9hVzH/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/9S4AP/UuAD/1LgA/9S4AP/UuAD/fGwl/09HN/9PRzf/T0c3/09HN/9PSDerAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABPSDerT0c3/09HN/9PRzf/T0c3/3xs + Jf/UuAD/1LgA/9S4AP/UuAD/1LgA/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/WlE0/7ek + F//+5AD//+UA///lAP//5QD//+UA///lAP//5QD//+UA///lAP//5QD//+UA/2hdL/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/1LgA/9S4AP/UuAD/1LgA/9S4 + AP98bCX/T0c3/09HN/9PRzf/T0c3/09IN6sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAE9IN6tPRzf/T0c3/09HN/9PRzf/fGwl/9S4AP/UuAD/1LgA/9S4AP/UuAD/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/4V3Jv/u1gX//+UA///lAP//5QD//+UA///lAP//5QD//+UA///l + AP//5QD//+UA///lAP/axAv/UEg3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN//UuAD/1LgA/9S4AP/UuAD/1LgA/3xsJf9PRzf/T0c3/09HN/9PRzf/T0g3qwAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAT0g3q09HN/9PRzf/T0c3/09H + N/98bCX/1LgA/9S4AP/UuAD/1LgA/9S4AP9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/1RLNf+0oRj//uQA///l + AP//5QD//+UA///lAP//5QD//+UA///lAP//5QD//+UA///lAP//5QD/1b8N/2VbMP9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/9S4AP/UuAD/1LgA/9S4 + AP/UuAD/fGwl/09HN/9PRzf/T0c3/09HN/9PSDerAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAABPSDerT0c3/09HN/9PRzf/T0c3/3xsJf/UuAD/1LgA/9S4AP/UuAD/1LgA/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9hVzH/28QL///lAP//5QD//+UA///lAP//5QD//+UA///lAP//5QD//+UA///l + AP//5QD/38gK/4d5Jv9QSDf/T0c3/09HN/9PRzf/T0c3/09HN/9YTzT/e24p/5+PHv+/rBT/z7kP/9/I + Cv/s1Qb/89sE/+nRB/+zoRj/V080/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/1LgA/9S4AP/UuAD/1LgA/9S4AP98bCX/T0c3/09HN/9PRzf/T0c3/09I + N6sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE9IN6tPRzf/T0c3/09H + N/9PRzf/fGwl/9S4AP/UuAD/1LgA/9S4AP/UuAD/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/bWIu/+jQB///5QD//+UA///l + AP//5QD//+UA///lAP//5QD//+UA///lAP//5QD/6NAH/5WHIf9SSjb/T0c3/09HN/9PRzf/T0c3/2th + Lv+nlhv/4MoK//7kAP//5QD//+UA///lAP//5QD//+UA///lAP//5QD//+UA///lAP/OuQ//T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN//UuAD/1LgA/9S4 + AP/UuAD/1LgA/3xsJf9PRzf/T0c3/09HN/9PRzf/T0g3qwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAT0g3q09HN/9PRzf/T0c3/09HN/98bCX/1LgA/9S4AP/UuAD/1LgA/9S4 + AP9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/3ZpK//23QP//+UA///lAP//5QD//+UA///lAP//5QD//+UA///lAP//5QD/5M0I/4h7 + Jf9QSDf/T0c3/09HN/9PRzf/U0o2/5qKIP/fyQr//+UA///lAP//5QD//+UA///lAP//5QD//+UA///l + AP//5QD//+UA///lAP//5QD//+UA///lAP9xZSz/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/9S4AP/UuAD/1LgA/9S4AP/UuAD/fGwl/09HN/9PRzf/T0c3/09H + N/9PSDerAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABPSDerT0c3/09H + N/9PRzf/T0c3/3xsJf/UuAD/1LgA/9S4AP/UuAD/1LgA/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9zaCz/9dwD///lAP//5QD//+UA///l + AP//5QD//+UA///lAP//5QD/+N8C/6OTHf9TSjb/T0c3/09HN/9PRzf/UEg3/46AI//o0Af//+UA///l + AP//5QD//+UA///lAP//5QD//+UA///lAP//5QD//+UA///lAP//5QD//+UA///lAP//5QD//+UA/5CB + I/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/1LgA/9S4 + AP/UuAD/1LgA/9S4AP98bCX/T0c3/09HN/9PRzf/T0c3/09IN6sAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAE9IN6tPRzf/T0c3/09HN/9PRzf/fGwl/9S4AP/UuAD/1LgA/9S4 + AP/UuAD/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/al8v//PaBP//5QD//+UA///lAP//5QD//+UA///lAP//5QD//+UA/9/ICv9rYC7/T0c3/09H + N/9PRzf/T0c3/3JmLP/fyAr//+UA///lAP//5QD//+UA///lAP//5QD//+UA///lAP//5QD//+UA///l + AP//5QD//+UA///lAP//5QD//+UA///lAP//5QD/hHcm/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN//UuAD/1LgA/9S4AP/UuAD/1LgA/3xsJf9PRzf/T0c3/09H + N/9PRzf/T0g3qwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAT0g3q09H + N/9PRzf/T0c3/09HN/98bCX/1LgA/9S4AP/UuAD/1LgA/9S4AP9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/11UMv/ozwf//+UA///lAP//5QD//+UA///l + AP//5QD//+UA///lAP+5pRb/VUw1/09HN/9PRzf/T0c3/1JKNv+lkxz//OIB///lAP//5QD//+UA///l + AP//5QD//+UA///lAP//5QD//+UA///lAP//5QD//+UA///lAP//5QD//+UA///lAP//5QD//+UA/9C7 + D/9QSDf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/9S4 + AP/UuAD/1LgA/9S4AP/UuAD/fGwl/09HN/9PRzf/T0c3/09HN/9PSDerAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABPSDerT0c3/09HN/9PRzf/T0c3/3xsJf/UuAD/1LgA/9S4 + AP/UuAD/1LgA/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9USzX/2MIM///lAP//5QD//+UA///lAP//5QD//+UA///lAP/84gH/mIgg/09HN/9PRzf/T0c3/09H + N/9jWTH/2MMM///lAP//5QD//+UA///lAP//5QD//+UA///lAP//5QD//+UA///lAP//5QD//+UA///l + AP//5QD/9dwD/+jPB//cxgv/3MUL/8i0Ef+VhiH/Uko2/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/1LgA/9S4AP/UuAD/1LgA/9S4AP98bCX/T0c3/09H + N/9PRzf/T0c3/09IN6sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE9I + N6tPRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/7CfGf//5QD//+UA///lAP//5QD//+UA///l + AP//5QD//eMB/46AI/9PRzf/T0c3/09HN/9PRzf/bWIu/+zUBv//5QD//+UA///lAP//5QD//+UA///l + AP//5QD//+UA///lAP//5QD//+UA/+bPCP+ynxj/hXcm/2VbMP9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0g3qwAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAT0g3q09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/+MfST//+UA///lAP//5QD//+UA///lAP//5QD//+UA//3jAf+JeyX/T0c3/09HN/9PRzf/T0c3/3hs + Kv/z2wT//+UA///lAP//5QD//+UA///lAP//5QD//+UA///lAP//5QD/990D/7elFv9vYy3/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/XVQy/4h7Jf+BdSf/VUw1/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PSDerAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AABPSDerT0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/YVcx//XcA///5QD//+UA///lAP//5QD//+UA///l + AP//5QD/mosf/09HN/9PRzf/T0c3/09HN/97bin/+eAC///lAP//5QD//+UA///lAP//5QD//+UA///l + AP//5QD//OIB/7KgGP9bUTP/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/Zlww/7akF//54AL//+UA///l + AP/s1Ab/cGUt/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09IN6sAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE9IN6tPRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N//EsBP//+UA///lAP//5QD//+UA///lAP//5QD//+UA/7WjF/9PRzf/T0c3/09HN/9PRzf/a2Au//Pb + BP//5QD//+UA///lAP//5QD//+UA///lAP//5QD//+UA/9vEC/9tYi7/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/Zl0w/8CsFP/84gH//+UA///lAP//5QD//+UA///lAP/q0gb/WE80/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0g3qwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAT0g3q09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/em4p//7kAP//5QD//+UA///lAP//5QD//+UA///l + AP/axAz/VEs1/09HN/9PRzf/T0c3/1tSM//kzQj//+UA///lAP//5QD//+UA///lAP//5QD//+UA///l + AP+/qxT/Vk01/09HN/9PRzf/T0c3/09HN/9PRzf/VUw1/6GRHf/23QP//+UA///lAP//5QD//+UA///l + AP//5QD//+UA///lAP+Ddif/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PSDerAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABPSDerT0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/1JK + Nv/lzgj//+UA///lAP//5QD//+UA///lAP//5QD/7tYF/2BWMv9PRzf/T0c3/09HN/9SSjb/2MIM///l + AP//5QD//+UA///lAP//5QD//+UA///lAP/94wH/k4Qi/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/4h6 + Jf/u1gX//+UA///lAP//5QD//+UA///lAP//5QD//+UA///lAP//5QD//+UA/4x9JP9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09IN6sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAE9IN6tPRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/kYIj///lAP//5QD//+UA///lAP//5QD//+UA///l + AP+Edyb/T0c3/09HN/9PRzf/T0c3/6mYG///5QD//+UA///lAP//5QD//+UA///lAP//5QD/+uEC/4h7 + Jf9PRzf/T0c3/09HN/9PRzf/T0c3/1xTM//CrhP//+UA///lAP//5QD//+UA///lAP//5QD//+UA///l + AP//5QD//+UA///lAP/02wP/YFYy/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0g3qwAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAT0g3q09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/1FJ + Nv/jzAn//+UA///lAP//5QD//+UA///lAP//5QD/0bwO/09HN/9PRzf/T0c3/09HN/9xZSz/++IB///l + AP//5QD//+UA///lAP//5QD//+UA//7kAP+RgiL/T0c3/09HN/9PRzf/T0c3/09HN/94bCr/7NUG///l + AP//5QD//+UA///lAP//5QD//+UA///lAP//5QD//+UA///lAP//5QD/7NQG/4F1J/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PRzf/T0c3/09H + N/9PRzf/T0c3/09HN/9PRzf/T0c3/09HN/9PSDerAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAADT0h/j//8Y////GP///xj///8Y////GP///xj///8Y////GP///xj///8Y//// + GP///xj///8Y////GP///xj///8Y////GP///xj///8Y////GP///xj///8Y////GP///xj///8Y//// + GP///xj///8Y////GP///xj///8Y////GP///xj///8Y////GP///xj///8Y////GP///xj///8Y//// + GP///xj///8Y////GP///xj///8Y////GP///xj///8Y////GP///xj///8Y////GP///xj///8Y//// + GP///xj///8Y////GP///xj///8Y////GP///xj///8Y////GP///xj///8Y////GP///xj///8Y//// + GP///xj///8Y////GP///xj///8Y////GP///xj///8Y////GP///xj///8Y////GP///xj///8Y//// + GP///xj///8Y////GP///xj///8Y////GP///xj///8Y////GP///xj///8Y////GP///xj///8Y/9PS + H+MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANPSH+P//xj///8Y//// + GP///xj///8Y////GP///xj///8Y////GP///xj///8Y////GP///xj///8Y////GP///xj///8Y//// + GP///xj///8Y////GP///xj///8Y////GP///xj///8Y////GP///xj///8Y////GP///xj///8Y//// + GP///xj///8Y////GP///xj///8Y////GP///xj///8Y////GP///xj///8Y////GP///xj///8Y//// + GP///xj///8Y////GP///xj///8Y////GP///xj///8Y////GP///xj///8Y////GP///xj///8Y//// + GP///xj///8Y////GP///xj///8Y////GP///xj///8Y////GP///xj///8Y////GP///xj///8Y//// + GP///xj///8Y////GP///xj///8Y////GP///xj///8Y////GP///xj///8Y////GP///xj///8Y//// + GP///xj///8Y////GP///xj///8Y////GP///xj/09If4wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA09If4///GP///xj///8Y////GP///xj///8Y////GP///xj///8Y//// + GP///xj///8Y////GP///xj///8Y////GP///xj///8Y////GP///xj///8Y////GP///xj///8Y//// + GP///xj///8Y////GP///xj///8Y////GP///xj///8Y////GP///xj///8Y////GP///xj///8Y//// + GP///xj///8Y////GP///xj///8Y////GP///xj///8Y////GP///xj///8Y////GP///xj///8Y//// + GP///xj///8Y////GP///xj///8Y////GP///xj///8Y////GP///xj///8Y////GP///xj///8Y//// + GP///xj///8Y////GP///xj///8Y////GP///xj///8Y////GP///xj///8Y////GP///xj///8Y//// + GP///xj///8Y////GP///xj///8Y////GP///xj///8Y////GP///xj///8Y////GP///xj///8Y//// + GP/T0h/jAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADT0h/j//8Y//// + GP///xj///8Y////GP///xj///8Y////GP///xj///8Y////GP///xj///8Y////GP///xj///8Y//// + GP///xj///8Y////GP///xj///8Y////GP///xj///8Y////GP///xj///8Y////GP///xj///8Y//// + GP///xj///8Y////GP///xj///8Y////GP///xj///8Y////GP///xj///8Y////GP///xj///8Y//// + GP///xj///8Y////GP///xj///8Y////GP///xj///8Y////GP///xj///8Y////GP///xj///8Y//// + GP///xj///8Y////GP///xj///8Y////GP///xj///8Y////GP///xj///8Y////GP///xj///8Y//// + GP///xj///8Y////GP///xj///8Y////GP///xj///8Y////GP///xj///8Y////GP///xj///8Y//// + GP///xj///8Y////GP///xj///8Y////GP///xj///8Y/9PSH+MAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAANPSH+P//xj///8Y////GP///xj///8Y////GP///xj///8Y//// + GP///xj///8Y////GP///xj///8Y////GP///xj///8Y////GP///xj///8Y////GP///xj///8Y//// + GP///xj///8Y////GP///xj///8Y////GP///xj///8Y////GP///xj///8Y////GP///xj///8Y//// + GP///xj///8Y////GP///xj///8Y////GP///xj///8Y////GP///xj///8Y////GP///xj///8Y//// + GP///xj///8Y////GP///xj///8Y////GP///xj///8Y////GP///xj///8Y////GP///xj///8Y//// + GP///xj///8Y////GP///xj///8Y////GP///xj///8Y////GP///xj///8Y////GP///xj///8Y//// + GP///xj///8Y////GP///xj///8Y////GP///xj///8Y////GP///xj///8Y////GP///xj///8Y//// + GP///xj/09If4wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsK0kZLe1 + JI63tSSOt7Ukjre1JI63tSSOt7Ukjre1JI63tSSOt7Ukjre1JI63tSSOt7Ukjre1JI63tSSOt7Ukjre1 + JI63tSSOt7Ukjre1JI63tSSOt7Ukjre1JI63tSSOt7Ukjre1JI63tSSOt7Ukjre1JI63tSSOt7Ukjre1 + JI6nv1mqis6s+IrOrPiKzqz4is6s+IrOrPiKzqz4jM+q8ra2K5C3tSSOt7Ukjre1JI6hwmezis6s+IrO + rPiKzqz4is6s+IrOrPiKzqz4is6s+KLBYbC3tSSOt7Ukjre1JI65tyaOl8eIzpPKk9mTypPZk8qT2ZPK + k9mTypPZk8qT2ZPKk9mTypPZmMaDyba4KZC3tSSOt7Ukjre1JI63tSSOnMV4wYrOrPeKzqz4is6s+IrO + rPiKzqz4is6s+IrOrPihw2y2t7Ukjre1JI63tSSOt7Ukjre1JI63tSSOt7Ukjre1JI63tSSOt7Ukjre1 + JI63tSSOt7Ukjre1JI63tSSOt7Ukjre1JI63tSSOt7Ukjre1JI6wrSRkAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE63/4BNt///Tbf//023//9Nt///Tbf//023 + //9Nt/+tAAAAAAAAAAAAAAAAAP//AU64/89Nt///Tbf//023//9Nt///Tbf//023//9Nt//GAP//AQAA + AAAAAAAAAAAAAE64/29Nt///Tbf//023//9Nt///Tbf//023//9Nt///Tbf//0y3/8VOvP8XAAAAAAAA + AAAAAAAAVar/A023/59Nt///Tbf//023//9Nt///Tbf//023//9Nt///Tbf//022/3AAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAATrf/wk23//9Nt///Tbf//023//9Nt///Tbf//023/1kAAAAAAAAAAAAAAABNtv9GTbf//023 + //9Nt///Tbf//023//9Nt///Tbf//0y3/0MAAAAAAAAAAAAAAABNuP8yTbf/+U23//9Nt///Tbf//023 + //9Nt///Tbf//023//9Nt/+ZQL//BAAAAAAAAAAAAAAAAFWq/wNNtv+lTbf//023//9Nt///Tbf//023 + //9Nt///Tbf//023//9Nt///S7j/PQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE2z/wpNt//4Tbf//023//9Nt///Tbf//023 + //9Nt//4Sbb/DgAAAAAAAAAAAAAAAE24/6hNt///Tbf//023//9Nt///Tbf//023//9Nt//EAAAAAAAA + AAAAAAAAAP//AU23/8NNt///Tbf//023//9Nt///Tbf//023//9Nt///Tbf/o4CA/wIAAAAAAAAAAAAA + AAAAAAAATbj/lk23//9Nt///Tbf//023//9Nt///Tbf//023//9Nt///Tbf//023/7QAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAS7f/R023//9Nt///Tbf//023//9Nt///Tbf//0y3/7EAAAAAAAAAAAAAAABVv/8MTbf/9023 + //9Nt///Tbf//023//9Nt///Tbf//063/04AAAAAAAAAAAAAAABOtv9iTbf//023//9Nt///Tbf//023 + //9Nt///Tbf//024/6hVqv8DAAAAAAAAAAAAAAAAAAAAAE64/29Nt///Tbf//023//9Nt///Tbf//023 + //9Nt///Tbf//023//5NuP+WQL//CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABNt/9xTbf//023//9Nt///Tbf//023 + //9Nt///TLf/fAAAAAAAAAAAAAAAAE64/0tNt///Tbf//023//9Nt///Tbf//023//9Ntv/hgID/AgAA + AAAAAAAASbb/B023/+ZNt///Tbf//023//9Nt///Tbf//023//9Ntv/TQL//CAAAAAAAAAAAAAAAAAAA + AABPuf86Tbf/+k23//9Nt///Tbf//023//9Nt///Tbf//023//9Nt//cS7j/PQAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAE23/5VNt///Tbf//023//9Nt///Tbf//023//9OuP9IAAAAAAAAAAAAAAAATbj/j023 + //9Nt///Tbf//023//9Nt///Tbf//022/4wAAAAAAAAAAAAAAABMtv9bTbf//023//9Nt///Tbf//023 + //9Nt///Tbf/+ky4/zYAAAAAAAAAAAAAAAAAAAAATrH/DU22/+FNt///Tbf//023//9Nt///Tbf//023 + //9Nt///Tbf/wFG8/xMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATbf/uU23//9Nt///Tbf//023 + //9Nt///Tbf//1G5/xYAAAAAAAAAAAAAAABNt/++Tbf//023//9Nt///Tbf//023//9Nt///S7f/RwAA + AAAAAAAAAAAAAE63/8xNt///Tbf//023//9Nt///Tbf//023//9Ot/+DAAAAAAAAAAAAAAAAAAAAAAAA + AABNuP+ETbf//023//9Nt///Tbf//023//9Nt///Tbf//023/8dOsf8NAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAABNt//fTbf//023//9Nt///Tbf//023//9Nt//fAAAAAAAAAAAAAAAAAAAAAE23 + /+xNt///Tbf//023//9Nt///Tbf//023//1Vv/8MAAAAAAAAAABLtP8iTbf//023//9Nt///Tbf//023 + //9Nt///Tbj/70e4/xIAAAAAAAAAAAAAAAAAAAAATbn/KE23//lNt///Tbf//023//9Nt///Tbf//023 + //9Nt//YTrH/DQAAAAAAAAAAAP//AUy2/1dMtv+TTrf/gEm2/w4AAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + 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 + //9Nt///Tbf//023//9Nt///Tbf/yQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABNt/+jTbf//023 + //9Nt///Tbf//023//9Nt///Tbb/jAAAAAAAAAAAAAAAAAAAAABQr/8QTbf/+023//9Nt///Tbf//023 + //9Nt///Tbj/yAAAAAAAAAAAAAAAAAAAAABMs/8bTbf/9E23//9Nt///Tbf//023//9Nt///Tbf//023 + //9Ot//ZTrf/WEm2/wcAAAAAAAAAAAAAAABLuf8zTbf/6U23//9Nt///Tbf//023//9Nt///Tbf//023 + /91Av/8IAAAAAAAAAAAAAAAATLf/f023//9Nt///Tbf//023//9Nt///Tbf//023//9Ntv9JAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAEy3/3JNt///Tbf//023//9Nt///Tbf//023//9Mt//FAAAAAAAA + AAAAAAAAAAAAAAAAAABMt/+7Tbf//023//9Nt///Tbf//023//9Nt///T7X/NwAAAAAAAAAAAAAAAAAA + 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 + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATbf/y023//9Nt///Tbf//023 + //9Nt///Tbf//022/+FVqv8DAAAAAAAAAAAAAAAAAAAAAAAAAABOuP+hTbf//023//9Nt///Tbf//023 + //9Nt///Tbf//023/91Otv8xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE22/zhOuP99Tbf/tU23 + /9VNt//dTbf/1023/61Otv9pSbb/DgAAAAAAAAAAAAAAAAAAAABOuP9BTbf/8023//9Nt///Tbf//023 + //9Nt///Tbf//023//9Nt//NTbP/CgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAABNt/9nTbf//023//9Nt///Tbf//023//9Nt///Tbf//023/1kAAAAAAAAAAAAA + AAAAAAAAAAAAAEm2/w5Nt//STbf//023//9Nt///Tbf//023//9Nt///Tbf//023//dOuP99Sbb/BwAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAATLf/ck23//tNt///Tbf//023//9Nt///Tbf//023//9Nt///Tbf/50+5/x0AAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEm2/w5Nt//yTbf//023 + //9Nt///Tbf//023//9Nt///Tbb/2lWq/wYAAAAAAAAAAAAAAAAAAAAAAAAAAE+5/x1Nt//lTbf//023 + //9Nt///Tbf//023//9Nt///Tbf//023//9Nt//cTbf/WYCA/wIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUbn/Fk23/6pNt///Tbf//023//9Nt///Tbf//023 + //9Nt///Tbf//023//hPuf86AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAEy2/5NNt///Tbf//023//9Nt///Tbf//023//9Nt///Trj/cwAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAE25/yhOt//jTbf//023//9Nt///Tbf//023//9Nt///Tbf//023 + //9Nt///Tbb/0024/2RNs/8KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATbv/Hk23 + /4dNt//yTbf//023//9Nt///Tbf//023//9Nt///Tbf//023//9Nt//6TLb/VAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASrX/Jk23 + //1Nt///Tbf//023//9Nt///Tbf//023//9Nt//xUbn/FgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE25 + /yFNt//bTbf//023//9Nt///Tbf//023//9Nt///Tbf//023//9Nt///Tbf//023//ZNtv+zTrj/dk65 + /0VNuP8rS7T/Iku0/yJMt/9ATrj/dk63/8JNt//9Tbf//023//9Nt///Tbf//023//9Nt///Tbf//023 + //9Nt///Tbf/9064/0sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATrf/q023//9Nt///Tbf//023//9Nt///Tbf//023 + //9Mt/+nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE68/xdNuP/BTbf//023//9Nt///Tbf//023 + //9Nt///Tbf//023//9Nt///Tbf//023//9Nt///Tbf//023//9Nt///Tbf//023//9Nt///Tbf//023 + //9Nt///Tbf//023//9Nt///Tbf//023//9Nt///Tbf//023//VOuP9IAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AABQtv8jTbf/+k23//9Nt///Tbf//023//9Nt///Tbf//023//9NuP9kAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAICA/wJOt/95Tbf/9023//9Nt///Tbf//023//9Nt///Tbf//023//9Nt///Tbf//023 + //9Nt///Tbf//023//9Nt///Tbf//023//9Nt///Tbf//023//9Nt///Tbf//023//9Nt///Tbf//023 + //9Nt//dTLj/LwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABNt/+LTbf//023//9Nt///Tbf//023 + //9Nt///Tbf//023//lNtv8/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMuv8lTbb/uk23 + //9Nt///Tbf//023//9Nt///Tbf//023//9Nt///Tbf//023//9Nt///Tbf//023//9Nt///Tbf//023 + //9Nt///Tbf//023//9Nt///Tbf//023//9Nt///Tbf/o0e4/xIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAFW//wxNt//iTbf//023//9Nt///Tbf//023//9Nt///Tbf//023/+5MuP8vAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATbf/PE23/7dNt///Tbf//023//9Nt///Tbf//023 + //9Nt///Tbf//023//9Nt///Tbf//023//9Nt///Tbf//023//9Nt///Tbf//023//9Nt///Tbf/1U65 + /0UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEy3/0pNt//+Tbf//023 + //9Nt///Tbf//023//9Nt///Tbf//023/+pLuf8sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAE+2/ypNt/+RTbj/7023//9Nt///Tbf//023//9Nt///Tbf//023//9Nt///Tbf//023 + //9Nt///Tbf//023//9Nt///Tbf/y062/2JAv/8EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAE24/5ZNt///Tbf//023//9Nt///Tbf//023//9Nt///Tbf//022 + /+hOtf8+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVqv8GTbb/Rky2 + /5NOuP/PTbf/+k23//9Nt///Tbf//023//9Nt///Tbf//023//VNt//KTrj/fUu5/ywAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASbb/B023 + /8lNt///Tbf//023//9Nt///Tbf//023//9Nt///Tbf//023//1Ntv+CZsz/BQAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVqv8GT7X/LU62/ztPuP9ETbb/Qku5 + /zNJtv8cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATbv/Hk23/+dNt///Tbf//023//9Nt///Tbf//023 + //9Nt///Tbf//023//9Nt//JT7b/KgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK2kkjiupJGrrqSRq66kkauupJGrrqSRqwAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAATbj/Mk24/+9Nt///Tbf//023//9Nt///Tbf//023//9Nt///Tbf//023//9Nt//6Tbj/j0q1 + /xgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + 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 + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAK6kkP+upJD/rqSQ/66kkP+upJD/rqWQVQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK6l + kFWupJD/rqSQ/66kkP+upJD/rqSQ/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArqSQ/66kkP+upJD/rqSQ/66k + kP+upZBVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArqWQVa6kkP+upJD/rqSQ/66kkP+upJD/rqWQVa6l + kFWupZBVrqWQVa6lkFWupZBVrqWQVa6lkFWupZBVrqWQVa6lkFWupZBVrqWQVa2kkhwAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAraSSHK6lkFWupZBVrqWQVa6lkFWupZBVrqWQVa6lkFWupZBVrqWQVa6l + kFWupZBVrqWQVa6lkFWupJD/rqSQ/66kkP+upJD/rqSQ/66lkFUAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AACupZBVrqSQ/66kkP+upJD/rqSQ/66kkP+upJD/rqSQ/66kkP+upJD/rqSQ/66kkP+upJD/rqSQ/66k + kP+upJD/rqSQ/66kkP+upJD/rqWQVQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACupZBVrqSQ/66k + kP+upJD/rqSQ/66kkP+upJD/rqSQ/66kkP+upJD/rqSQ/66kkP+upJD/rqSQ/66kkP+upJD/rqSQ/66k + kP+upJD/rqWQVQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK6lkFWupJD/rqSQ/66kkP+upJD/rqSQ/66k + kP+upJD/rqSQ/66kkP+upJD/rqSQ/66kkP+upJD/rqSQ/66kkP+upJD/rqSQ/66kkP+upZBVAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAK6lkFWupJD/rqSQ/66kkP+upJD/rqSQ/66kkP+upJD/rqSQ/66k + kP+upJD/rqSQ/66kkP+upJD/rqSQ/66kkP+upJD/rqSQ/66kkP+upZBVAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAArqWQVa6kkP+upJD/rqSQ/66kkP+upJD/rqSQ/66kkP+upJD/rqSQ/66kkP+upJD/rqSQ/66k + kP+upJD/rqSQ/66kkP+upJD/rqSQ/66lkFUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArqWQVa6k + kP+upJD/rqSQ/66kkP+upJD/rqSQ/66kkP+upJD/rqSQ/66kkP+upJD/rqSQ/66kkP+upJD/rqSQ/66k + kP+upJD/rqSQ/66lkFUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACupZBVrqSQ/66kkP+upJD/rqSQ/66k + kP+upJD/rqSQ/66kkP+upJD/rqSQ/66kkP+upJD/rqSQ/66kkP+upJD/rqSQ/66kkP+upJD/rqWQVQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACupZBVrqSQ/66kkP+upJD/rqSQ/66kkP+upJD/rqSQ/66k + kP+upJD/rqSQ/66kkP+upJD/rqSQ/66kkP+upJD/rqSQ/66kkP+upJD/rqWQVQAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAK6lkFWupJD/rqSQ/66kkP+upJD/rqSQ/66kkP+upJD/rqSQ/66kkP+upJD/rqSQ/66k + kP+upJD/rqSQ/66kkP+upJD/rqSQ/66kkP+upZBVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK6l + kFWupJD/rqSQ/66kkP+upJD/rqSQ/66kkP+upJD/rqSQ/66kkP+upJD/rqSQ/66kkP+upJD/rqSQ/66k + kP+upJD/rqSQ/66kkP+upZBVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD///////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////gAAAAAAAAAAAAAAAAf///4AAAAAAAAAAAAAAAAH///+AAAAAAAAAAA + AAAAAB////gAAAAAAAAAAAAAAAAf///4AAAAAAAAAAAAAAAAH///+AAAAAAAAAAAAAAAAB////gAAAAA + AAAAAAAAAAAf///4AAAAAAAAAAAAAAAAH///+AAAAAAAAAAAAAAAAB////gAAAAAAAAAAAAAAAAf///4 + AAAAAAAAAAAAAAAAH///+AAAAAAAAAAAAAAAAB////gAAAAAAAAAAAAAAAAf///4AAAAAAAAAAAAAAAA + H///+AAAAAAAAAAAAAAAAB////gAAAAAAAAAAAAAAAAf///4AAAAAAAAAAAAAAAAH///+AAAAAAAAAAA + AAAAAB////gAAAAAAAAAAAAAAAAf///4AAAAAAAAAAAAAAAAH///+AAAAAAAAAAAAAAAAB////gAAAAA + AAAAAAAAAAAf///4AAAAAAAAAAAAAAAAH///+AAAAAAAAAAAAAAAAB////gAAAAAAAAAAAAAAAAf///4 + AAAAAAAAAAAAAAAAH///+AAAAAAAAAAAAAAAAB////gAAAAAAAAAAAAAAAAf///4AAAAAAAAAAAAAAAA + H///+AAAAAAAAAAAAAAAAB////gAAAAAAAAAAAAAAAAf///4AAAAAAAAAAAAAAAAH///+AAAAAAAAAAA + AAAAAB////gAAAAAAAAAAAAAAAAf///4AAAAAAAAAAAAAAAAH///+AAAAAAAAAAAAAAAAB////gAAAAA + AAAAAAAAAAAf///8AAAAAAAAAAAAAAAAP/////////gHgHwB8Af////////////4D4D4A+AH//////// + ////+A8A8AfAB/////////////gPAfAPwA/////////////4HwHgH4A/////////////8B4B4D8Af/// + //////////AeA8A+AP/////////////wHgPAfgHz////////////8B4DwHwDwf////////////AeA4D8 + B8D////////////wHgOA+AeA////////////8B4DgPgPgP////////////AeA4HwDwH//////////8fw + HgOB8B8B//////////+D8B4DgeAeAf//////////AfAeA8PgPgP//////////wHwHwH/wDwD//////// + //8B8B8A/8B8B///////////AfgfAH+A+Af//////////wD4D4A/APgP//////////+A+A/AAAHwD/// + ////////gPwHwAAB4B///////////4D8B+AAA8Af//////////+AfgPwAAfAP///////////wH4B/AAP + gH///////////8B/AP8AHwB////////////APwB/4P4A////////////4D+AP//8Af///////////+Af + wA//8AP////////////gH+AD/8AH////////////8A/wAH8AD/////////////AH+AAAAB////////// + ///4B/4AAAA/////////////+AP/AAAAf/////////////wB/8AAAf/////////////+AP/wAAf///// + /////////gB//gA///////////////8AH///////////////////gA///////////////+D//8AD//// + ////B//////g///gAP///////wf/////4P//8AA///////8H/////+D///gAA///////B//////g///8 + AAAA/////wf/////4P///wAAAD////8H/////+D////AAAA/////B//////g////8AAAP////wf///// + 4P////wAAD////8H/////+D/////gAA/////B//////g//////wAf////wf/////4P////////////8H + /////+D/////////////B//////g/////////////wf/////4AAH////////4AAH/////+AAB/////// + /+AAB//////gAAf////////gAAf/////4AAH////////4AAH/////+AAB////////+AAB/////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////4lQTkcNChoKAAAADUlIRFIAAAEAAAABAAgGAAAAXHKoZgAAAAFzUkdCAK7OHOkAAAAE + Z0FNQQAAsY8L/GEFAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAABmJLR0QA/wD/AP+gvaeTAAAmEUlEQVR4 + Xu3dCYBUxbUA0FuvZ4UZ9h2FCILsoCCIcUMjzAz0QFTUuHzzk6g/8RvXuCYRTKKicd8SlyRfTWJARWYH + jYDGKATEBSMIikFZBxhnBpit59W/t7pUlu7X71Uv0z19T9LTVW9w9rpd9arqFjDGGGOMMcYYY4wxxhhj + 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 + + + \ No newline at end of file diff --git a/PMAlignTool/PMAlign.cs b/PMAlignTool/PMAlign.cs new file mode 100644 index 0000000..5d969a4 --- /dev/null +++ b/PMAlignTool/PMAlign.cs @@ -0,0 +1,160 @@ +/* +* ============================================================================== +* +* Filename: PMAlign +* Description: +* +* Version: 1.0 +* Created: 2021/3/30 14:07:10 +* +* Author: liu.wenjie +* +* ============================================================================== +*/ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using CommonMethods; +using HalconDotNet; +using ToolBase; +using static DataStruct.DataStruct; + +namespace PMAlignTool +{ + [Serializable] + public class PMAlign:IToolBase + { + + /// + /// 是否显示匹配到的模板 + /// + internal bool showTemplate { get; set; } = true; + /// + /// 是否显示中心十字架 + /// + internal bool showCross { get; set; } = true; + /// + /// 是否显示特征 + /// + internal bool showFeature { get; set; } = true; + /// + /// 显示结果序号 + /// + internal bool showIndex { get; set; } = true; + /// + /// 是否显示搜索区域 + /// + internal bool showSearchRegion { get; set; } = true; + /// + /// 模板句柄 + /// + internal HTuple modelID { get; set; } = -1; + /// + /// 行列间隔像素数 + /// + internal int spanPixelNum { get; set; } = 100; + /// + /// 排序模式 + /// + // internal SortMode sortMode = SortMode.从上至下且从左至右; + /// + /// 模板区域 + /// + internal HObject templateRegion { get; set; } + /// + /// 在进行模板创建及匹配时进行的图像预处理 + /// + public ImagePreProcess imageProcess { get; set; } = new ImagePreProcess(); + + internal HObject totalRegion; + /// + /// 搜索区域图像 + /// + internal HObject reducedImage; + /// + /// 最小匹配分数 + /// + internal double minScore { get; set; } = 0.5; + /// + /// 匹配个数 + /// + internal int matchNum { get; set; } = 1; + /// + /// 起始角度 + /// + internal int startAngle { get; set; } = -30; + /// + /// 角度范围 + /// + internal int angleRange { get; set; } = 30; + /// + /// 角度步长 + /// + internal int angleStep { get; set; } = 1; + /// + /// 对比度 + /// + internal int contrast { get; set; } = 30; + /// + /// 训练时所使用的模板图像,不点击获取图像时,不进行更新 + /// + public HObject oldTrainImage { get; set; } + + internal void DispMainWindow(object dispHWindow) + { + throw new NotImplementedException(); + } + + /// + /// 极性 + /// + internal string polarity { get; set; } = "use_polarity"; + + /// + /// 工具锁 + /// + private object obj { get; set; } = new object(); + /// + /// 模板匹配结果 + /// + internal List L_result = new List(); + + public override void Run(SoftwareRunState softwareRunState) + { + + } + + public override void DispImage() + { + if (inputImage != null) + { + FormPMAlignTool.Instance.myHwindow.DispHWindow.DispObj(inputImage); + } + } + + public override void DispMainWindow(HWindow window) + { + throw new NotImplementedException(); + } + + public void CreateModelTemplate() + { + + } + } + [Serializable] + public class ImagePreProcess + { + public ProcessAlg erosionValue1 { get; set; } = new ProcessAlg(); + public ProcessAlg dilationValue { get; set; } = new ProcessAlg(); + public ProcessAlg erosionValue2 { get; set; } = new ProcessAlg(); + } + [Serializable] + public class ProcessAlg + { + public double algValue { get; set; } = 0; + public bool isEnable { get; set; } = false; + } +} diff --git a/ToolLib.Log/LogForm/LogForm.csproj b/PMAlignTool/PMAlignTool.csproj similarity index 50% rename from ToolLib.Log/LogForm/LogForm.csproj rename to PMAlignTool/PMAlignTool.csproj index 67ab386..b33b7d6 100644 --- a/ToolLib.Log/LogForm/LogForm.csproj +++ b/PMAlignTool/PMAlignTool.csproj @@ -4,14 +4,13 @@ Debug AnyCPU - {6B38D68F-E77B-4761-BDE5-A261EA8925DD} + {C1C08195-2EC8-42E9-93BB-D5331E6C6687} Library Properties - LogForm - LogForm + PMAlignTool + PMAlignTool v4.5.2 512 - true @@ -31,9 +30,17 @@ 4 + + ..\UsingControl\Controls\obj\Debug\Controls.dll + + + C:\Program Files\MVTec\HALCON-19.05-Progress\bin\dotnet20\halcondotnet.dll + + + @@ -43,37 +50,59 @@ - + Form - - DetailMesForm.cs + + FormPMAlignTool.cs + + - - UserControl - - - UserLogger.cs + + True + True + Resources.resx - - DetailMesForm.cs + + FormPMAlignTool.cs - - UserLogger.cs + + ResXFileCodeGenerator + Resources.Designer.cs - - {bec2389f-b8b4-4e8a-8c71-189cde14e962} - EnumList + + {1C8D0DDC-2086-48A9-9586-F2B643E2FC54} + CommonHelper - - {d4e052b9-e541-4b67-a1f9-273073ef1d4b} + + {DF3D4D4C-02DF-4F92-9FD4-0A861F64B0EF} + DataStruct + + + {8C6FC8C6-8874-494B-8260-071F291AA33D} + FormLib + + + {9BAA53FD-89B5-43E2-AC59-A27B006DEBB6} + HWindow_Tool + + + {7CD50B44-BF56-4E8E-8FA1-05F6968C1835} + ToolBase + + + {D4E052B9-E541-4B67-A1F9-273073EF1D4B} Logger + + {16E8FF17-98A8-4452-AB9E-C433DC9C21F7} + ToolLib.VisionJob + " + Regex.Split(myJob.L_toolList[i].toolInput[j].value.ToString(), "->")[1]; - TreeNode bbb = myJob.GetToolIONodeByNodeText(toolNodeText, toolIONodeText); myJob.D_itemAndSource.Add(treeNode, myJob.GetToolIONodeByNodeText(toolNodeText, toolIONodeText)); } if (myJob.L_toolList[i].toolType == ToolType.Output) { string toolNodeText = Regex.Split(treeNode.Text, "->")[0].Substring(3); string toolIONodeText = Regex.Split(treeNode.Text, "->")[1]; - TreeNode aaa = myJob.GetToolIONodeByNodeText(toolNodeText, "-->" + toolIONodeText); myJob.D_itemAndSource.Add(treeNode, myJob.GetToolIONodeByNodeText(toolNodeText, "-->" + toolIONodeText)); } } diff --git a/ToolLib.VisionJob/OperateTreeView.cs b/ToolLib.VisionJob/OperateTreeView.cs index d63704b..5ce9c36 100644 --- a/ToolLib.VisionJob/OperateTreeView.cs +++ b/ToolLib.VisionJob/OperateTreeView.cs @@ -88,7 +88,6 @@ namespace ToolLib.VisionJob IToolInfo insertTool = VisionToolFactory.CreateToolVision(tool, toolName); TreeNode insertNode = new TreeNode(); insertNode = GetJobTree(jobName).Nodes.Add("", insertTool.toolName, (int)tool, (int)tool); // 该工具对应的节点 - // 判断节点是否添加默认输入输出图 // 输入 for (int i = 0; i < insertTool.toolInput.Count; i++) diff --git a/ToolLib.VisionJob/ToolLib.VisionJob.csproj b/ToolLib.VisionJob/ToolLib.VisionJob.csproj index 1eb83e3..fd27022 100644 --- a/ToolLib.VisionJob/ToolLib.VisionJob.csproj +++ b/ToolLib.VisionJob/ToolLib.VisionJob.csproj @@ -83,12 +83,8 @@ {df3d4d4c-02df-4f92-9fd4-0a861f64b0ef} DataStruct - - {6b38d68f-e77b-4761-bde5-a261ea8925dd} - LogForm - - {d4e052b9-e541-4b67-a1f9-273073ef1d4b} + {D4E052B9-E541-4B67-A1F9-273073EF1D4B} Logger diff --git a/ToolLib.VisionJob/VisionJob.cs b/ToolLib.VisionJob/VisionJob.cs index b236ba8..24595af 100644 --- a/ToolLib.VisionJob/VisionJob.cs +++ b/ToolLib.VisionJob/VisionJob.cs @@ -420,7 +420,8 @@ namespace ToolLib.VisionJob { if ((item1.Value.Bounds.X < maxLength && item1.Key.Bounds.X < maxLength) || (item1.Value.Bounds.X < maxLength && item1.Key.Bounds.X < maxLength)) { - max += (15 - Math.Abs(max - item.Key)); + if (item1.Value.Bounds.Y > startNode.Bounds.Y || item1.Key.Bounds.Y > startNode.Bounds.Y) //20200612加 + max += (10 - Math.Abs(max - item.Key)); } } } diff --git a/ToolLib.VisionToolList/ToolLib.VisionToolList.csproj b/ToolLib.VisionToolList/ToolLib.VisionToolList.csproj index 98d5079..010ee90 100644 --- a/ToolLib.VisionToolList/ToolLib.VisionToolList.csproj +++ b/ToolLib.VisionToolList/ToolLib.VisionToolList.csproj @@ -65,6 +65,10 @@ {F5669FB7-77EC-44B9-898B-6D575B7D26EA} HalconTool + + {C1C08195-2EC8-42E9-93BB-D5331E6C6687} + PMAlignTool + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/UsingControl/Controls/CCheckBox.cs b/UsingControl/Controls/CCheckBox.cs new file mode 100644 index 0000000..6e86e69 --- /dev/null +++ b/UsingControl/Controls/CCheckBox.cs @@ -0,0 +1,76 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using Controls.Properties; + +namespace Controls +{ + public delegate void DCheckChanged(bool Checked); + public partial class CCheckBox : UserControl + { + public CCheckBox() + { + InitializeComponent(); + ckb_box.Text = TextStr; + } + + /// + /// 状态改变事件 + /// + public event DCheckChanged CheckChanged; + /// + /// 勾选状态 + /// + private bool _checked = false; + public bool Checked + { + get { return _checked; } + set + { + _checked = value; + ckb_box.Checked = value; + } + } + /// + /// 文本 + /// + private string _textStr = "复选框"; + public string TextStr + { + get { return _textStr; } + set + { + _textStr = value; + ckb_box.Text = value; + } + } + + + private void pic_image_Click(object sender, EventArgs e) + { + ckb_box.Checked = !ckb_box.Checked; + } + private void ckb_box_CheckedChanged(object sender, EventArgs e) + { + if (ckb_box.Checked) + { + pic_image.Image = Resources.复选框; + Checked = true; + } + else + { + pic_image.Image = Resources.去复选框; + Checked = false; + } + if (CheckChanged != null) + CheckChanged(ckb_box.Checked); + } + + } +} diff --git a/UsingControl/Controls/CCheckBox.designer.cs b/UsingControl/Controls/CCheckBox.designer.cs new file mode 100644 index 0000000..f32e812 --- /dev/null +++ b/UsingControl/Controls/CCheckBox.designer.cs @@ -0,0 +1,85 @@ +namespace Controls +{ + partial class CCheckBox + { + /// + /// 必需的设计器变量。 + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 清理所有正在使用的资源。 + /// + /// 如果应释放托管资源,为 true;否则为 false。 + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region 组件设计器生成的代码 + + /// + /// 设计器支持所需的方法 - 不要 + /// 使用代码编辑器修改此方法的内容。 + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(CCheckBox)); + this.pic_image = new System.Windows.Forms.PictureBox(); + this.ckb_box = new System.Windows.Forms.CheckBox(); + ((System.ComponentModel.ISupportInitialize)(this.pic_image)).BeginInit(); + this.SuspendLayout(); + // + // pic_image + // + this.pic_image.Image = ((System.Drawing.Image)(resources.GetObject("pic_image.Image"))); + this.pic_image.Location = new System.Drawing.Point(1, 1); + this.pic_image.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.pic_image.Name = "pic_image"; + this.pic_image.Size = new System.Drawing.Size(18, 18); + this.pic_image.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; + this.pic_image.TabIndex = 0; + this.pic_image.TabStop = false; + this.pic_image.Click += new System.EventHandler(this.pic_image_Click); + // + // ckb_box + // + this.ckb_box.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.ckb_box.BackColor = System.Drawing.Color.White; + this.ckb_box.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.ckb_box.Location = new System.Drawing.Point(5, 1); + this.ckb_box.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.ckb_box.Name = "ckb_box"; + this.ckb_box.Size = new System.Drawing.Size(161, 23); + this.ckb_box.TabIndex = 1; + this.ckb_box.Text = "复选框"; + this.ckb_box.UseVisualStyleBackColor = false; + this.ckb_box.CheckedChanged += new System.EventHandler(this.ckb_box_CheckedChanged); + // + // CCheckBox + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 17F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackColor = System.Drawing.Color.White; + this.Controls.Add(this.pic_image); + this.Controls.Add(this.ckb_box); + this.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.Name = "CCheckBox"; + this.Size = new System.Drawing.Size(167, 20); + ((System.ComponentModel.ISupportInitialize)(this.pic_image)).EndInit(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.PictureBox pic_image; + private System.Windows.Forms.CheckBox ckb_box; + } +} diff --git a/UsingControl/Controls/CCheckBox.resx b/UsingControl/Controls/CCheckBox.resx new file mode 100644 index 0000000..bee23b0 --- /dev/null +++ b/UsingControl/Controls/CCheckBox.resx @@ -0,0 +1,145 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAABGdBTUEAALGPC/xhBQAABGFJREFUeF7t + nYFR20AQRSnBJVBCOgglpIPQQdxBKIEOoBKTDkgHSQdJB8n/mTXjEYJIp7vT7u3/M29gQNrz+D9sy9jy + laIoiqIoiqIoiqIU5unp6fp0On0U7eB1bFf3/uGFAV/AM/gjusLrnNd9fyGw6AE8gLkLJvrDLg5WT9tg + oRvwyxYWfmAnH6ymNsECtxcLCp/cWl11g8H8y59bUPij7i0BBvI+Xzf7cWBX9R4TYNjjxXARg0erb1sw + iId6cwsI/2w/RMSQ42SoiMPRaiwPhuhJnrg8W43lmRkqAmE1lgUDdP8fn/LHAdhZx/7xubE614c7T4aJ + eEiA5EiA5EiA5EiA5EiA5EiA5EiA5EiA5EiA5EiA5EiA5EiA5EiA5EiA5EgAb5xOp5/4ylda3+H7b5e/ + a4AE8ALK/o2vr965g5/xXdWtRJAAHrDy333HDrb5Pt2vAhJgb5aUz3Cby/0qIQH2ZGn552B7Pj6YnVWI + BNiLteUz2Kf2YwEJsAcl5TMSYABKy2emsyogAXqysfy7y1mVkAC92Fh+iyMAIgF6UKH8VifgkACtcVw+ + kQAtcV4+kQCtCFA+kQAtCFI+kQCNKLpisV/P8okEaEDRyRixX+/yiQSoTKTyiQSoSLTyiQSoRMTyiQSo + QNTyiV8BcCh1fnHkPb5v/eLIUiKXT/wJYMfQr65Y/IwvjmzxurhSopdPXN4CvHuhnNwajFA+cSfAnY1/ + M9jmsPMtwSjlE3cCLLpA2G4vCUYqn/gSwEYvCrbvLcFo5RN3twCrzl2L7XtJMGL5xJ0An2z84mCf1hKM + Wj5xJ8APG78q2K+VBCOXT9wJQB5siVXBfrUlKC2fH6IV5YM0XApA9pYgQ/nErQBkiwRb3kOXpXziWgBS + fB8MCfiU8tzM98hUPnEvAOklQbbySQgBSGsJMpZPwghAWkmQtXwSSgBSW4LM5ZNwApBaEmQvn4QUgGyV + oOjDk7HfSOWTsAKQUgmKPiwR+41WPgktACmSYG2wzojlk/ACkKL34C0N5o9aPhlCAP7XrYkEmDty+WQI + AUh1CTBv9PLJMAKQahJgTobyyVACkM0SYP8s5ZPhBCDFEmC/TOWTIQUgqyXA9tnKJ8MKQBZLgO0ylk+G + FoD8VwL8Pmv5ZHgByJsS4OeZyycpBDjzFfwTAV+vwWdAOea2zUIqAcRrJEByJEByJEByJEByJEByJEBy + JEByJEByJEByJEByJEByJEByJEByJEByJEByJEByJEByJEByNgnA19XNDRVxKDpXwktmBopAWI3lOfU5 + VbtoALuzGsuDQcfpYBGGo9VYHgzR44C4bLv/PweD+Nl+cwsIv9xbfduDYTw795LTsQoHWFcHq69OMJCf + kDG7oHDHqrfNLw4G304WEv5oe1o9LLD07NyiI9ZJm7/8abAQ33KtB4Z+uAd17/OXBIvyEPHIJxzsgohO + 2HXO52jqHOrVCC8M4D+QRDv8FK4oiqIoiqIoiqLEytXVXycxKra7YoNwAAAAAElFTkSuQmCC + + + \ No newline at end of file diff --git a/UsingControl/Controls/CComboBox.cs b/UsingControl/Controls/CComboBox.cs new file mode 100644 index 0000000..c75b193 --- /dev/null +++ b/UsingControl/Controls/CComboBox.cs @@ -0,0 +1,134 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using Controls.Properties; + +namespace Controls +{ + public delegate void DSelectedIndexChanged(); + public partial class CComboBox : UserControl + { + public CComboBox() + { + InitializeComponent(); + cbx_item.Items.AddRange(Items); + } + + /// + /// 选中项改变事件 + /// + public event DSelectedIndexChanged SelectedIndexChanged; + /// + /// 选中项索引 + /// + private int _selectedIndex = -1; + public int SelectedIndex + { + get { return _selectedIndex; } + set + { + _selectedIndex = value; + cbx_item.SelectedIndex = value; + } + } + /// + /// 文本 + /// + private string _text = string.Empty; + public string TextStr + { + get { return _text; } + set + { + _text = value; + cbx_item.Text = value; + } + } + /// + /// 是否可以编辑 + /// + private bool _canEdit = false; + public bool CanEdit + { + get { return _canEdit; } + set + { + _canEdit = value; + if (value) + cbx_item.DropDownStyle = ComboBoxStyle.DropDown; + else + cbx_item.DropDownStyle = ComboBoxStyle.DropDownList; + } + } + /// + /// 项 + /// + private string[] _items = new string[] { }; + public string[] Items + { + get { return _items; } + set + { + _items = value; + cbx_item.Items.Clear(); + cbx_item.Items.AddRange(value); + } + } + + + /// + /// 删除所有项 + /// + public void Clear() + { + Items = new string[] { }; + cbx_item.Items.Clear(); + } + /// + /// 添加项 + /// + /// 项 + public void Add(string item) + { + string[] items = new string[Items.Length + 1]; + for (int i = 0; i < Items.Length; i++) + { + items[i] = Items[i]; + } + items[Items.Length] = item; + Items = items; + } + + + private void cbx_item_SelectedIndexChanged(object sender, EventArgs e) + { + SelectedIndex = cbx_item.SelectedIndex; + TextStr = cbx_item.Text; + if (SelectedIndexChanged != null) + SelectedIndexChanged(); + } + private void ComboBox_Enter(object sender, EventArgs e) + { + lbl_line.Height = 2; + lbl_line.BackColor = Color.FromArgb(18, 150, 219); + btn_showItem.Image = Resources.BlueImage; + } + private void ComboBox_Leave(object sender, EventArgs e) + { + lbl_line.Height = 1; + lbl_line.BackColor = Color.Gray; + btn_showItem.Image = Resources.GrayImage; + } + private void btn_showItem_Click(object sender, EventArgs e) + { + cbx_item.DroppedDown = true; + } + + } +} diff --git a/UsingControl/Controls/CComboBox.designer.cs b/UsingControl/Controls/CComboBox.designer.cs new file mode 100644 index 0000000..82159b6 --- /dev/null +++ b/UsingControl/Controls/CComboBox.designer.cs @@ -0,0 +1,108 @@ +namespace Controls +{ + partial class CComboBox + { + /// + /// 必需的设计器变量。 + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 清理所有正在使用的资源。 + /// + /// 如果应释放托管资源,为 true;否则为 false。 + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region 组件设计器生成的代码 + + /// + /// 设计器支持所需的方法 - 不要 + /// 使用代码编辑器修改此方法的内容。 + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(CComboBox)); + this.cbx_item = new System.Windows.Forms.ComboBox(); + this.lbl_line = new System.Windows.Forms.Label(); + this.btn_showItem = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // cbx_item + // + this.cbx_item.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.cbx_item.BackColor = System.Drawing.Color.White; + this.cbx_item.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cbx_item.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.cbx_item.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.cbx_item.FormattingEnabled = true; + this.cbx_item.Location = new System.Drawing.Point(2, -3); + this.cbx_item.Margin = new System.Windows.Forms.Padding(0); + this.cbx_item.Name = "cbx_item"; + this.cbx_item.Size = new System.Drawing.Size(120, 25); + this.cbx_item.TabIndex = 10; + this.cbx_item.TabStop = false; + this.cbx_item.SelectedIndexChanged += new System.EventHandler(this.cbx_item_SelectedIndexChanged); + // + // lbl_line + // + this.lbl_line.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.lbl_line.BackColor = System.Drawing.Color.Gray; + this.lbl_line.Location = new System.Drawing.Point(3, 20); + this.lbl_line.Name = "lbl_line"; + this.lbl_line.Size = new System.Drawing.Size(120, 1); + this.lbl_line.TabIndex = 11; + // + // btn_showItem + // + this.btn_showItem.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.btn_showItem.BackColor = System.Drawing.Color.White; + this.btn_showItem.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; + this.btn_showItem.FlatAppearance.BorderColor = System.Drawing.Color.White; + this.btn_showItem.FlatAppearance.BorderSize = 0; + this.btn_showItem.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Gray; + this.btn_showItem.FlatAppearance.MouseOverBackColor = System.Drawing.Color.DarkGray; + this.btn_showItem.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.btn_showItem.Image = ((System.Drawing.Image)(resources.GetObject("btn_showItem.Image"))); + this.btn_showItem.ImageAlign = System.Drawing.ContentAlignment.BottomCenter; + this.btn_showItem.Location = new System.Drawing.Point(103, -1); + this.btn_showItem.Margin = new System.Windows.Forms.Padding(0); + this.btn_showItem.Name = "btn_showItem"; + this.btn_showItem.Size = new System.Drawing.Size(17, 20); + this.btn_showItem.TabIndex = 12; + this.btn_showItem.UseVisualStyleBackColor = false; + this.btn_showItem.Click += new System.EventHandler(this.btn_showItem_Click); + // + // CComboBox + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 17F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackColor = System.Drawing.Color.White; + this.Controls.Add(this.btn_showItem); + this.Controls.Add(this.lbl_line); + this.Controls.Add(this.cbx_item); + this.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.Margin = new System.Windows.Forms.Padding(0); + this.Name = "CComboBox"; + this.Size = new System.Drawing.Size(120, 22); + this.Enter += new System.EventHandler(this.ComboBox_Enter); + this.Leave += new System.EventHandler(this.ComboBox_Leave); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.ComboBox cbx_item; + private System.Windows.Forms.Label lbl_line; + private System.Windows.Forms.Button btn_showItem; + } +} diff --git a/UsingControl/Controls/CComboBox.resx b/UsingControl/Controls/CComboBox.resx new file mode 100644 index 0000000..484c649 --- /dev/null +++ b/UsingControl/Controls/CComboBox.resx @@ -0,0 +1,128 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAABGdBTUEAALGPC/xhBQAAADlJREFUKFNj + 6OrqMuju7q7HhkFyYAWdnZ0fgPR/ZAwVM2AAARADWRGKJAzAFGGVhAGQBE5JWgEGBgBpDD29jSJy5QAA + AABJRU5ErkJggg== + + + \ No newline at end of file diff --git a/UsingControl/Controls/CNumeric.cs b/UsingControl/Controls/CNumeric.cs new file mode 100644 index 0000000..d89abd2 --- /dev/null +++ b/UsingControl/Controls/CNumeric.cs @@ -0,0 +1,77 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace Controls +{ + public partial class CNumeric : UserControl + { + public CNumeric() + { + InitializeComponent(); + tbx_value.Text = _value.ToString(); + } + + /// + /// 值改变事件 + /// + public event DValueChanged ValueChanged; + /// + /// 值 + /// + private string _value = string.Empty; + public string Value + { + get + { + return _value; + } + set + { + _value = value; + tbx_value.Text = value.ToString(); + } + } + + + private void tbx_value_KeyPress(object sender, KeyPressEventArgs e) + { + try + { + /*只能数字键、退格键、负号、小数点*/ + if (((int)e.KeyChar < 48 || (int)e.KeyChar > 57) && (int)e.KeyChar != 8 && + (int)e.KeyChar != 45 && (int)e.KeyChar != 46) e.Handled = true; + /*输入为负号和小数点时,且只能输入一次(负号只能最前面输入,小数点不可最前面输入)*/ + if (e.KeyChar == 45 && (((TextBox)sender).SelectionStart != 0 || + ((TextBox)sender).Text.IndexOf("-") >= 0)) e.Handled = true; + if (e.KeyChar == 46 && (((TextBox)sender).SelectionStart == 0 || + ((TextBox)sender).Text.IndexOf(".") >= 0)) e.Handled = true; + } + catch { } + } + private void Numeric_Enter(object sender, EventArgs e) + { + lbl_line.Height = 2; + lbl_line.BackColor = Color.FromArgb(18, 150, 219); + } + private void Numeric_Leave(object sender, EventArgs e) + { + lbl_line.Height = 1; + lbl_line.BackColor = Color.Gray; + } + private void tbx_value_TextChanged(object sender, EventArgs e) + { + if (tbx_value.Text != string.Empty && tbx_value.Text != Value.ToString()) + Value = tbx_value.Text; + if (ValueChanged != null) + ValueChanged(Convert.ToDouble(Value)); + } + + } +} diff --git a/UsingControl/Controls/CNumeric.designer.cs b/UsingControl/Controls/CNumeric.designer.cs new file mode 100644 index 0000000..fb6fdda --- /dev/null +++ b/UsingControl/Controls/CNumeric.designer.cs @@ -0,0 +1,79 @@ +namespace Controls +{ + partial class CNumeric + { + /// + /// 必需的设计器变量。 + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 清理所有正在使用的资源。 + /// + /// 如果应释放托管资源,为 true;否则为 false。 + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region 组件设计器生成的代码 + + /// + /// 设计器支持所需的方法 - 不要 + /// 使用代码编辑器修改此方法的内容。 + /// + private void InitializeComponent() + { + this.lbl_line = new System.Windows.Forms.Label(); + this.tbx_value = new System.Windows.Forms.TextBox(); + this.SuspendLayout(); + // + // lbl_line + // + this.lbl_line.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right))); + this.lbl_line.BackColor = System.Drawing.Color.Gray; + this.lbl_line.Location = new System.Drawing.Point(0, 20); + this.lbl_line.Name = "lbl_line"; + this.lbl_line.Size = new System.Drawing.Size(120, 1); + this.lbl_line.TabIndex = 8; + // + // tbx_value + // + this.tbx_value.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right))); + this.tbx_value.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.tbx_value.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.tbx_value.Location = new System.Drawing.Point(3, 0); + this.tbx_value.Name = "tbx_value"; + this.tbx_value.Size = new System.Drawing.Size(114, 16); + this.tbx_value.TabIndex = 9; + this.tbx_value.TextChanged += new System.EventHandler(this.tbx_value_TextChanged); + this.tbx_value.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.tbx_value_KeyPress); + // + // CNumeric + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 17F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackColor = System.Drawing.Color.White; + this.Controls.Add(this.tbx_value); + this.Controls.Add(this.lbl_line); + this.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.Name = "CNumeric"; + this.Size = new System.Drawing.Size(121, 22); + this.Enter += new System.EventHandler(this.Numeric_Enter); + this.Leave += new System.EventHandler(this.Numeric_Leave); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Label lbl_line; + private System.Windows.Forms.TextBox tbx_value; + } +} diff --git a/UsingControl/Controls/CNumeric.resx b/UsingControl/Controls/CNumeric.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/UsingControl/Controls/CNumeric.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/UsingControl/Controls/CNumericUpDown.cs b/UsingControl/Controls/CNumericUpDown.cs new file mode 100644 index 0000000..453f511 --- /dev/null +++ b/UsingControl/Controls/CNumericUpDown.cs @@ -0,0 +1,193 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using System.Text.RegularExpressions; +using Controls.Properties; + +namespace Controls +{ + public delegate void DValueChanged(double value); + public partial class CNumericUpDown : UserControl + { + public CNumericUpDown() + { + InitializeComponent(); + nud_value.Text = Value.ToString(); + } + + /// + /// 值改变事件 + /// + public event DValueChanged ValueChanged; + /// + /// 点击一下值的变化量 + /// + private decimal _incremeent = 1; + public decimal Incremeent + { + get { return _incremeent; } + set { _incremeent = value; } + } + + /// + /// 小数位数 + /// + private int _decimalPlaces = 0; + public int DecimalPlaces + { + get { return _decimalPlaces; } + set + { + _decimalPlaces = value; + nud_value.DecimalPlaces = value; + } + } + + /// + /// 最小值 + /// + private decimal _minValue = 0; + public decimal MinValue + { + get { return _minValue; } + set + { + _minValue = value; + nud_value.Minimum = value; + } + } + + /// + /// 最大值 + /// + private decimal _maxValue = 100; + public decimal MaxValue + { + get { return _maxValue; } + set + { + _maxValue = value; + nud_value.Maximum = value; + } + } + + /// + /// 值 + /// + private double _value = 0; + public double Value + { + get + { + return _value; + } + set + { + _value = value; + nud_value.Text = value.ToString(); + } + } + + + private void btn_add_MouseEnter(object sender, EventArgs e) + { + try + { + btn_add.BringToFront(); + if (nud_value.Value < MaxValue) + { + btn_add.FlatAppearance.MouseDownBackColor = Color.Gray; + btn_add.FlatAppearance.MouseOverBackColor = Color.DarkGray; + btn_add.Image = Resources.blueAdd; + } + else + { + btn_add.FlatAppearance.MouseDownBackColor = Color.White; + btn_add.FlatAppearance.MouseOverBackColor = Color.White; + } + } + catch { } + } + private void btn_add_MouseLeave(object sender, EventArgs e) + { + btn_add.Image = Resources.grayAdd; + } + private void btn_sub_MouseEnter(object sender, EventArgs e) + { + try + { + btn_sub.BringToFront(); + if (nud_value.Value >= MinValue) + { + btn_sub.FlatAppearance.MouseDownBackColor = Color.Gray; + btn_sub.FlatAppearance.MouseOverBackColor = Color.DarkGray; + btn_sub.Image = Resources.blueSub; + } + else + { + btn_sub.FlatAppearance.MouseDownBackColor = Color.White; + btn_sub.FlatAppearance.MouseOverBackColor = Color.White; + } + } + catch { } + } + private void btn_add_Click(object sender, EventArgs e) + { + try + { + if (nud_value.Value + Incremeent <= MaxValue) + nud_value.Text = (nud_value.Value + Incremeent).ToString(); + + if (nud_value.Value >= MaxValue) + { + btn_add.FlatAppearance.MouseDownBackColor = Color.White; + btn_add.FlatAppearance.MouseOverBackColor = Color.White; + btn_add.Image = Resources.grayAdd; + } + } + catch { } + } + private void btn_sub_Click(object sender, EventArgs e) + { + try + { + if (nud_value.Value + Incremeent > MinValue) + nud_value.Text = (nud_value.Value - Incremeent).ToString(); + + if (nud_value.Value <= MinValue) + { + btn_sub.FlatAppearance.MouseDownBackColor = Color.White; + btn_sub.FlatAppearance.MouseOverBackColor = Color.White; + btn_sub.Image = Resources.graySub; + } + } + catch { } + } + private void nud_value_ValueChanged(object sender, EventArgs e) + { + Value = (double)nud_value.Value; + if (ValueChanged != null) + ValueChanged(Value); + } + private void UserControl1_Leave(object sender, EventArgs e) + { + lbl_line.Height = 1; + lbl_line.BackColor = Color.Gray; + } + private void UserControl1_Enter(object sender, EventArgs e) + { + lbl_line.Height = 2; + lbl_line.BackColor = Color.FromArgb(18, 150, 219); + } + private void btn_sub_MouseLeave(object sender, EventArgs e) + { + btn_sub.Image = Resources.graySub; + } + + } +} diff --git a/UsingControl/Controls/CNumericUpDown.designer.cs b/UsingControl/Controls/CNumericUpDown.designer.cs new file mode 100644 index 0000000..d2ff417 --- /dev/null +++ b/UsingControl/Controls/CNumericUpDown.designer.cs @@ -0,0 +1,133 @@ +namespace Controls +{ + partial class CNumericUpDown + { + /// + /// 必需的设计器变量。 + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 清理所有正在使用的资源。 + /// + /// 如果应释放托管资源,为 true;否则为 false。 + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region 组件设计器生成的代码 + + /// + /// 设计器支持所需的方法 - 不要 + /// 使用代码编辑器修改此方法的内容。 + /// + private void InitializeComponent() + { + this.btn_add = new System.Windows.Forms.Button(); + this.btn_sub = new System.Windows.Forms.Button(); + this.lbl_line = new System.Windows.Forms.Label(); + this.nud_value = new System.Windows.Forms.NumericUpDown(); + ((System.ComponentModel.ISupportInitialize)(this.nud_value)).BeginInit(); + this.SuspendLayout(); + // + // btn_add + // + this.btn_add.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.btn_add.BackColor = System.Drawing.Color.White; + this.btn_add.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center; + this.btn_add.FlatAppearance.BorderSize = 0; + this.btn_add.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Gray; + this.btn_add.FlatAppearance.MouseOverBackColor = System.Drawing.Color.DarkGray; + this.btn_add.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.btn_add.Image = global::Controls.Properties.Resources.grayAdd; + this.btn_add.Location = new System.Drawing.Point(119, 0); + this.btn_add.Margin = new System.Windows.Forms.Padding(3, 6, 3, 6); + this.btn_add.Name = "btn_add"; + this.btn_add.Size = new System.Drawing.Size(20, 23); + this.btn_add.TabIndex = 7; + this.btn_add.TabStop = false; + this.btn_add.UseVisualStyleBackColor = false; + this.btn_add.Click += new System.EventHandler(this.btn_add_Click); + this.btn_add.MouseEnter += new System.EventHandler(this.btn_add_MouseEnter); + this.btn_add.MouseLeave += new System.EventHandler(this.btn_add_MouseLeave); + // + // btn_sub + // + this.btn_sub.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.btn_sub.BackColor = System.Drawing.Color.White; + this.btn_sub.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center; + this.btn_sub.FlatAppearance.BorderSize = 0; + this.btn_sub.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Gray; + this.btn_sub.FlatAppearance.MouseOverBackColor = System.Drawing.Color.DarkGray; + this.btn_sub.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.btn_sub.Image = global::Controls.Properties.Resources.graySub; + this.btn_sub.Location = new System.Drawing.Point(101, 0); + this.btn_sub.Margin = new System.Windows.Forms.Padding(14, 20, 14, 20); + this.btn_sub.Name = "btn_sub"; + this.btn_sub.Size = new System.Drawing.Size(20, 23); + this.btn_sub.TabIndex = 6; + this.btn_sub.TabStop = false; + this.btn_sub.UseVisualStyleBackColor = false; + this.btn_sub.Click += new System.EventHandler(this.btn_sub_Click); + this.btn_sub.MouseEnter += new System.EventHandler(this.btn_sub_MouseEnter); + this.btn_sub.MouseLeave += new System.EventHandler(this.btn_sub_MouseLeave); + // + // lbl_line + // + this.lbl_line.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.lbl_line.BackColor = System.Drawing.Color.Gray; + this.lbl_line.Location = new System.Drawing.Point(3, 24); + this.lbl_line.Name = "lbl_line"; + this.lbl_line.Size = new System.Drawing.Size(137, 1); + this.lbl_line.TabIndex = 5; + // + // nud_value + // + this.nud_value.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.nud_value.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.nud_value.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.nud_value.Location = new System.Drawing.Point(6, 4); + this.nud_value.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.nud_value.Name = "nud_value"; + this.nud_value.Size = new System.Drawing.Size(130, 19); + this.nud_value.TabIndex = 8; + this.nud_value.ValueChanged += new System.EventHandler(this.nud_value_ValueChanged); + // + // CNumericUpDown + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 17F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackColor = System.Drawing.Color.White; + this.Controls.Add(this.btn_add); + this.Controls.Add(this.btn_sub); + this.Controls.Add(this.lbl_line); + this.Controls.Add(this.nud_value); + this.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.MaximumSize = new System.Drawing.Size(300, 26); + this.MinimumSize = new System.Drawing.Size(50, 26); + this.Name = "CNumericUpDown"; + this.Size = new System.Drawing.Size(140, 26); + this.Enter += new System.EventHandler(this.UserControl1_Enter); + this.Leave += new System.EventHandler(this.UserControl1_Leave); + ((System.ComponentModel.ISupportInitialize)(this.nud_value)).EndInit(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.Button btn_add; + private System.Windows.Forms.Button btn_sub; + private System.Windows.Forms.Label lbl_line; + private System.Windows.Forms.NumericUpDown nud_value; + } +} diff --git a/UsingControl/Controls/CNumericUpDown.resx b/UsingControl/Controls/CNumericUpDown.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/UsingControl/Controls/CNumericUpDown.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/UsingControl/Controls/CRadioBox.cs b/UsingControl/Controls/CRadioBox.cs new file mode 100644 index 0000000..c29f054 --- /dev/null +++ b/UsingControl/Controls/CRadioBox.cs @@ -0,0 +1,75 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using Controls.Properties; + +namespace Controls +{ + public partial class CRadioBox : UserControl + { + public CRadioBox() + { + InitializeComponent(); + ckb_box.Text = TextStr; + } + + /// + /// 状态改变事件 + /// + public event DCheckChanged CheckChanged; + /// + /// 勾选状态 + /// + private bool _checked = false; + public bool Checked + { + get { return _checked; } + set + { + _checked = value; + ckb_box.Checked = value; + } + } + /// + /// 文本 + /// + private string _textStr = "复选框"; + public string TextStr + { + get { return _textStr; } + set + { + _textStr = value; + ckb_box.Text = value; + } + } + + + private void pic_image_Click(object sender, EventArgs e) + { + ckb_box.Checked = !ckb_box.Checked; + } + private void ckb_box_CheckedChanged(object sender, EventArgs e) + { + if (ckb_box.Checked) + { + pic_image.Image = Resources.勾选; + Checked = true; + } + else + { + pic_image.Image = Resources.去勾选; + Checked = false; + } + if (CheckChanged != null) + CheckChanged(ckb_box.Checked); + } + + } +} diff --git a/UsingControl/Controls/CRadioBox.designer.cs b/UsingControl/Controls/CRadioBox.designer.cs new file mode 100644 index 0000000..e0ea3e9 --- /dev/null +++ b/UsingControl/Controls/CRadioBox.designer.cs @@ -0,0 +1,86 @@ +namespace Controls +{ + partial class CRadioBox + { + /// + /// 必需的设计器变量。 + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 清理所有正在使用的资源。 + /// + /// 如果应释放托管资源,为 true;否则为 false。 + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region 组件设计器生成的代码 + + /// + /// 设计器支持所需的方法 - 不要 + /// 使用代码编辑器修改此方法的内容。 + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(CRadioBox)); + this.pic_image = new System.Windows.Forms.PictureBox(); + this.ckb_box = new System.Windows.Forms.CheckBox(); + ((System.ComponentModel.ISupportInitialize)(this.pic_image)).BeginInit(); + this.SuspendLayout(); + // + // pic_image + // + this.pic_image.Image = ((System.Drawing.Image)(resources.GetObject("pic_image.Image"))); + this.pic_image.Location = new System.Drawing.Point(2, 2); + this.pic_image.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.pic_image.Name = "pic_image"; + this.pic_image.Padding = new System.Windows.Forms.Padding(1); + this.pic_image.Size = new System.Drawing.Size(20, 20); + this.pic_image.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; + this.pic_image.TabIndex = 0; + this.pic_image.TabStop = false; + this.pic_image.Click += new System.EventHandler(this.pic_image_Click); + // + // ckb_box + // + this.ckb_box.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.ckb_box.BackColor = System.Drawing.Color.White; + this.ckb_box.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.ckb_box.Location = new System.Drawing.Point(7, 4); + this.ckb_box.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.ckb_box.Name = "ckb_box"; + this.ckb_box.Size = new System.Drawing.Size(91, 23); + this.ckb_box.TabIndex = 1; + this.ckb_box.Text = "复选框"; + this.ckb_box.UseVisualStyleBackColor = false; + this.ckb_box.CheckedChanged += new System.EventHandler(this.ckb_box_CheckedChanged); + // + // RadioBox + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 17F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackColor = System.Drawing.Color.White; + this.Controls.Add(this.pic_image); + this.Controls.Add(this.ckb_box); + this.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.Name = "RadioBox"; + this.Size = new System.Drawing.Size(97, 24); + ((System.ComponentModel.ISupportInitialize)(this.pic_image)).EndInit(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.PictureBox pic_image; + private System.Windows.Forms.CheckBox ckb_box; + } +} diff --git a/UsingControl/Controls/CRadioBox.resx b/UsingControl/Controls/CRadioBox.resx new file mode 100644 index 0000000..25c8d49 --- /dev/null +++ b/UsingControl/Controls/CRadioBox.resx @@ -0,0 +1,157 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + 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 + + + \ No newline at end of file diff --git a/UsingControl/Controls/CTextBox.cs b/UsingControl/Controls/CTextBox.cs new file mode 100644 index 0000000..e3f5c12 --- /dev/null +++ b/UsingControl/Controls/CTextBox.cs @@ -0,0 +1,190 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using Controls.Properties; + +namespace Controls +{ + public delegate void DTextStrChanged(string textStr); + public partial class CTextBox : UserControl + { + public CTextBox() + { + InitializeComponent(); + tbx_text.Text = DefaultText; + //if (PasswordChar && tbx_text.Text != DefaultText) + //{ + + //} + //else + //{ + + //} + //if (PasswordChar) + //{ + // tbx_text.PasswordChar = '*'; + // btn_eye.Visible = true; + //} + //else + //{ + + //} + + if (!PasswordChar) + { + tbx_text.PasswordChar = '\0'; + btn_eye.Visible = false; + } + else + { + tbx_text.PasswordChar = '\0'; + btn_eye.Visible = true ; + } + } + + /// + /// 文本改变事件 + /// + public event DTextStrChanged TextStrChanged; + /// + /// 控件文本 + /// + private string _text = string.Empty; + public string TextStr + { + get + { + return _text; + } + set + { + if (value == string.Empty) + { + tbx_text.PasswordChar = '\0'; + tbx_text.ForeColor = Color.DarkGray; + tbx_text.Text = DefaultText; + _text = value; + } + else + { + if (PasswordChar) + tbx_text.PasswordChar = '*'; + else + tbx_text.PasswordChar = '\0'; + tbx_text.ForeColor = Color.FromArgb(64, 64, 64); + _text = value; + tbx_text.Text = _text; + } + } + } + /// + /// 默认文本 + /// + private string _defaultText = string.Empty; + public string DefaultText + { + get { return _defaultText; } + set { _defaultText = value; } + } + /// + /// 是否以密码形式显示 + /// + private bool _passwordChar = false; + public bool PasswordChar + { + get { return _passwordChar; } + set + { + _passwordChar = value; + if (PasswordChar) + { + tbx_text.PasswordChar = '*'; + } + else + { + tbx_text.PasswordChar = '\0'; + } + } + } + + + private void TextBox_Enter(object sender, EventArgs e) + { + lbl_line.Height = 2; + lbl_line.BackColor = Color.FromArgb(18, 150, 219); + if (tbx_text.Text == DefaultText) + { + tbx_text.SelectionStart = 0; + tbx_text.SelectionLength = 0; + } + } + private void TextBox_Leave(object sender, EventArgs e) + { + lbl_line.Height = 1; + lbl_line.BackColor = Color.Gray; + } + private void tbx_text_TextChanged(object sender, EventArgs e) + { + if (tbx_text.Text != DefaultText && tbx_text.Text != TextStr) + TextStr = tbx_text.Text; + if (TextStrChanged != null) + TextStrChanged(TextStr); + if (PasswordChar && TextStr != string.Empty) + tbx_text.PasswordChar = '*'; + else if (TextStr ==string .Empty ) + tbx_text.PasswordChar = '\0'; + } + private void tbx_text_KeyDown(object sender, KeyEventArgs e) + { + if (tbx_text.Text == DefaultText && e.KeyCode != Keys.Back) + tbx_text.Text = string.Empty; + } + private void tbx_text_MouseUp(object sender, MouseEventArgs e) + { + if (e.Button == MouseButtons.Left) + { + if (tbx_text.Text == DefaultText) + { + tbx_text.SelectionStart = 0; + tbx_text.SelectionLength = 0; + } + } + } + private void btn_eye_MouseDown(object sender, MouseEventArgs e) + { + tbx_text.PasswordChar = '\0'; + btn_eye.BackgroundImage = Resources.Show; + //tbx_text.Width = tbx_text.Width - 30; + } + private void btn_eye_MouseUp(object sender, MouseEventArgs e) + { + if (TextStr != string.Empty) + tbx_text.PasswordChar = '*'; + btn_eye.BackgroundImage = Resources.Hide; + tbx_text.Width = tbx_text.Width + 30; + tbx_text.Focus(); + tbx_text.SelectionStart = 0; + tbx_text.SelectionLength = 0; + } + private void TextBox_Load(object sender, EventArgs e) + { + if (!PasswordChar) + { + tbx_text.PasswordChar = '\0'; + btn_eye.Visible = false; + } + else + { + tbx_text.PasswordChar = '\0'; + btn_eye.Visible = true ; + } + } + + } +} diff --git a/UsingControl/Controls/CTextBox.designer.cs b/UsingControl/Controls/CTextBox.designer.cs new file mode 100644 index 0000000..57d6927 --- /dev/null +++ b/UsingControl/Controls/CTextBox.designer.cs @@ -0,0 +1,108 @@ +namespace Controls +{ + partial class CTextBox + { + /// + /// 必需的设计器变量。 + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 清理所有正在使用的资源。 + /// + /// 如果应释放托管资源,为 true;否则为 false。 + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region 组件设计器生成的代码 + + /// + /// 设计器支持所需的方法 - 不要 + /// 使用代码编辑器修改此方法的内容。 + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(CTextBox)); + this.lbl_line = new System.Windows.Forms.Label(); + this.tbx_text = new System.Windows.Forms.TextBox(); + this.btn_eye = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // lbl_line + // + this.lbl_line.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.lbl_line.BackColor = System.Drawing.Color.Gray; + this.lbl_line.Location = new System.Drawing.Point(2, 20); + this.lbl_line.Name = "lbl_line"; + this.lbl_line.Size = new System.Drawing.Size(133, 1); + this.lbl_line.TabIndex = 10; + // + // tbx_text + // + this.tbx_text.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.tbx_text.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.tbx_text.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.tbx_text.Location = new System.Drawing.Point(6, 1); + this.tbx_text.Margin = new System.Windows.Forms.Padding(3, 6, 3, 6); + this.tbx_text.Name = "tbx_text"; + this.tbx_text.Size = new System.Drawing.Size(125, 16); + this.tbx_text.TabIndex = 9; + this.tbx_text.TextChanged += new System.EventHandler(this.tbx_text_TextChanged); + this.tbx_text.KeyDown += new System.Windows.Forms.KeyEventHandler(this.tbx_text_KeyDown); + this.tbx_text.MouseUp += new System.Windows.Forms.MouseEventHandler(this.tbx_text_MouseUp); + // + // btn_eye + // + this.btn_eye.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.btn_eye.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("btn_eye.BackgroundImage"))); + this.btn_eye.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center; + this.btn_eye.FlatAppearance.BorderSize = 0; + this.btn_eye.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.btn_eye.Location = new System.Drawing.Point(110, 1); + this.btn_eye.Name = "btn_eye"; + this.btn_eye.Size = new System.Drawing.Size(21, 18); + this.btn_eye.TabIndex = 11; + this.btn_eye.TabStop = false; + this.btn_eye.UseVisualStyleBackColor = true; + this.btn_eye.MouseDown += new System.Windows.Forms.MouseEventHandler(this.btn_eye_MouseDown); + this.btn_eye.MouseUp += new System.Windows.Forms.MouseEventHandler(this.btn_eye_MouseUp); + // + // CTextBox + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 17F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackColor = System.Drawing.Color.White; + this.Controls.Add(this.btn_eye); + this.Controls.Add(this.lbl_line); + this.Controls.Add(this.tbx_text); + this.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.MaximumSize = new System.Drawing.Size(400, 22); + this.MinimumSize = new System.Drawing.Size(20, 22); + this.Name = "CTextBox"; + this.Size = new System.Drawing.Size(137, 22); + this.Load += new System.EventHandler(this.TextBox_Load); + this.Enter += new System.EventHandler(this.TextBox_Enter); + this.Leave += new System.EventHandler(this.TextBox_Leave); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Label lbl_line; + private System.Windows.Forms.TextBox tbx_text; + private System.Windows.Forms.Button btn_eye; + } +} diff --git a/UsingControl/Controls/CTextBox.resx b/UsingControl/Controls/CTextBox.resx new file mode 100644 index 0000000..56208fd --- /dev/null +++ b/UsingControl/Controls/CTextBox.resx @@ -0,0 +1,131 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAYAAAA71pVKAAAABGdBTUEAALGPC/xhBQAAAPxJREFUOE/N + kj0KwlAQhHMEj+ARvIDghfIH3sLG0sqktBcsxc5KCVjYKIhIbAQjgrZ+89zEKNhnYNid3XlvN494zUIU + RR1LHX71X8gYhuGD2LaSh76geya/EQTBAMNaOaYW+Ym4iuN4TJyhb6pbPxWVOyDaGM5wS54rJy5KWk+c + owvf97t2tJq2gXu26EvDFL2EE2nVyXfkB2k7+l7FGtVqaH2nq8Op1TVEvs/aKuhmkzJpXWdQlHYNYBsc + TTrDkIImuRcmH5lOYA7Li8q3GUlXoDClWcgoExxCt4HpRBfKZ0e+YY+VYXgSr/Bei1n90/4Coyb1aqx+ + mCbA816Kvb06q+4cHAAAAABJRU5ErkJggg== + + + \ No newline at end of file diff --git a/UsingControl/Controls/Controls.csproj b/UsingControl/Controls/Controls.csproj new file mode 100644 index 0000000..13534a7 --- /dev/null +++ b/UsingControl/Controls/Controls.csproj @@ -0,0 +1,178 @@ + + + + + Debug + AnyCPU + {6D2088CB-161B-47FB-9C35-0EE8DE61A3DF} + Library + Properties + Controls + Controls + v4.5.2 + 512 + + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + UserControl + + + CButton.cs + + + UserControl + + + CCheckBox.cs + + + UserControl + + + CComboBox.cs + + + UserControl + + + CNumeric.cs + + + UserControl + + + CNumericUpDown.cs + + + + True + True + Resources.resx + + + UserControl + + + CRadioBox.cs + + + UserControl + + + CTextBox.cs + + + + + + CButton.cs + + + CCheckBox.cs + + + CComboBox.cs + + + CNumeric.cs + + + CNumericUpDown.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + + + CRadioBox.cs + + + CTextBox.cs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/UsingControl/Controls/Properties/AssemblyInfo.cs b/UsingControl/Controls/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..35fd4a4 --- /dev/null +++ b/UsingControl/Controls/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 有关程序集的常规信息通过以下 +// 特性集控制。更改这些特性值可修改 +// 与程序集关联的信息。 +[assembly: AssemblyTitle("Controls")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Controls")] +[assembly: AssemblyCopyright("Copyright © 2020")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// 将 ComVisible 设置为 false 使此程序集中的类型 +// 对 COM 组件不可见。 如果需要从 COM 访问此程序集中的类型, +// 则将该类型上的 ComVisible 特性设置为 true。 +[assembly: ComVisible(false)] + +// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID +[assembly: Guid("2eb3123a-4223-4587-83e5-2b1cf8508df3")] + +// 程序集的版本信息由下面四个值组成: +// +// 主版本 +// 次版本 +// 生成号 +// 修订号 +// +// 可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值, +// 方法是按如下所示使用“*”: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/UsingControl/Controls/Properties/Resources.Designer.cs b/UsingControl/Controls/Properties/Resources.Designer.cs new file mode 100644 index 0000000..6110779 --- /dev/null +++ b/UsingControl/Controls/Properties/Resources.Designer.cs @@ -0,0 +1,213 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +namespace Controls.Properties { + using System; + + + /// + /// 一个强类型的资源类,用于查找本地化的字符串等。 + /// + // 此类是由 StronglyTypedResourceBuilder + // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 + // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen + // (以 /str 作为命令选项),或重新生成 VS 项目。 + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// 返回此类使用的缓存的 ResourceManager 实例。 + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Controls.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// 使用此强类型资源类,为所有资源查找 + /// 重写当前线程的 CurrentUICulture 属性。 + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap blueAdd { + get { + object obj = ResourceManager.GetObject("blueAdd", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap BlueImage { + get { + object obj = ResourceManager.GetObject("BlueImage", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap blueSub { + get { + object obj = ResourceManager.GetObject("blueSub", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap ButtonDown { + get { + object obj = ResourceManager.GetObject("ButtonDown", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap ButtonEnter { + get { + object obj = ResourceManager.GetObject("ButtonEnter", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap ButtonUp { + get { + object obj = ResourceManager.GetObject("ButtonUp", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap grayAdd { + get { + object obj = ResourceManager.GetObject("grayAdd", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap GrayImage { + get { + object obj = ResourceManager.GetObject("GrayImage", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap graySub { + get { + object obj = ResourceManager.GetObject("graySub", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap Hide { + get { + object obj = ResourceManager.GetObject("Hide", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap Show { + get { + object obj = ResourceManager.GetObject("Show", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap 勾选 { + get { + object obj = ResourceManager.GetObject("勾选", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap 去勾选 { + get { + object obj = ResourceManager.GetObject("去勾选", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap 去复选框 { + get { + object obj = ResourceManager.GetObject("去复选框", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// + internal static System.Drawing.Bitmap 复选框 { + get { + object obj = ResourceManager.GetObject("复选框", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + } +} diff --git a/UsingControl/Controls/Properties/Resources.resx b/UsingControl/Controls/Properties/Resources.resx new file mode 100644 index 0000000..1993014 --- /dev/null +++ b/UsingControl/Controls/Properties/Resources.resx @@ -0,0 +1,166 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + ..\Resources\blueAdd.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\BlueImage.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\blueSub.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\grayAdd.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\GrayImage.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\graySub.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Hide.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Show.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\勾选.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\去勾选.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\去复选框.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\复选框.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\ButtonDown.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\ButtonEnter.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\ButtonUp.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + \ No newline at end of file diff --git a/UsingControl/Controls/Resources/BlueImage.png b/UsingControl/Controls/Resources/BlueImage.png new file mode 100644 index 0000000000000000000000000000000000000000..7474b64825fe12679572e60694250cae49d3ad83 GIT binary patch literal 142 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 PQvw659Zu97^ZNZi=7aqX literal 0 HcmV?d00001 diff --git a/UsingControl/Controls/Resources/ButtonEnter.png b/UsingControl/Controls/Resources/ButtonEnter.png new file mode 100644 index 0000000000000000000000000000000000000000..13bbe869f65fa89c59fcd64cc849627ab1555d1d GIT binary patch literal 4544 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 literal 0 HcmV?d00001 diff --git a/UsingControl/Controls/Resources/ButtonUp.png b/UsingControl/Controls/Resources/ButtonUp.png new file mode 100644 index 0000000000000000000000000000000000000000..a7351dcdf988c770952ca13c08e38577b4b23726 GIT binary patch literal 4515 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 literal 0 HcmV?d00001 diff --git a/UsingControl/Controls/Resources/Hide.png b/UsingControl/Controls/Resources/Hide.png new file mode 100644 index 0000000000000000000000000000000000000000..457769244d085e81023e4f6ae0c286b21b1399ac GIT binary patch literal 430 zcmV;f0a5;mP)qz1jtU2}!$ERqcE747w+|*)+|DuOvSJ za8LRLd?0C&Gk*I5Nzy7w+>IcB-w6=%@jO5acu{#{PXIOWynwx+$XOqDUA2Y~+sz zu*voyItK7iYgQ$)57kt!LW+T|*tJTudh05M5-1kCR>7!YWPkWhgtnA6)1@4t~FKw+9V6uZys49OA%~OvlSD$Nkw2-YSKSj^{oa zWcDvAgkGbv=S_#xesBO_RiJ7V{ZxR@CeW}q;Kz>VmWHEB@1576uq5CIE%v6;{nrEw zMnQZ>?;SOYpfpSgCh4s?$C6T510)aPFF*^BC_V+3x{vosX=CtkqpGb85M^#gWwn!q h8C#P3?)O9w;~L~x#Sq1T{)hko002ovPDHLkV1ic+f4X?wajhG+yQr#LV>UC#T@&bjw= yP^!x`r-uzHFIEVoiSCNN__N1FTZU;L8^a48RsNnw^V@;i7(8A5T-G@yGywq0e;pJ6 literal 0 HcmV?d00001 diff --git a/UsingControl/Controls/Resources/blueSub.png b/UsingControl/Controls/Resources/blueSub.png new file mode 100644 index 0000000000000000000000000000000000000000..b9bc8a1d2e959c52871a144d60d9774bcec738b7 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^AT}2V8<6ZZI=>f4sd>6MhG+yQrzi*+2(9dEWaDaG scK4ru&(|IoZIxpt6Qran+9FmnrirrhYb!b=0(CHWy85}Sb4q9e0PIf~Gynhq literal 0 HcmV?d00001 diff --git a/UsingControl/Controls/Resources/grayAdd.png b/UsingControl/Controls/Resources/grayAdd.png new file mode 100644 index 0000000000000000000000000000000000000000..b6ed9995f1173a385f739437439f614553c2b2a6 GIT binary patch literal 99 zcmeAS@N?(olHy`uVBq!ia0vp^AT}2V8<6ZZI=>f4X?eOhhG+yQr#LXj#>W14bV^N4 w?Ku&oAv1wRR`k#sr*dtp`4cl*oex}Rke{UL+CQn>8K{fF)78&qol`;+0A^hp{{R30 literal 0 HcmV?d00001 diff --git a/UsingControl/Controls/Resources/graySub.png b/UsingControl/Controls/Resources/graySub.png new file mode 100644 index 0000000000000000000000000000000000000000..2d6f0541ba8fb29f196a31fd23493c4280db88a1 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^AT}2V8<6ZZI=>f4sd>6MhG+yQrzi*+2(9dEWaHxI s;`%0>Y^!{ctJ9EoNgLZd#cNp%^G~yAt}zik4%ETm>FVdQ&MBb@0GRz35&!@I literal 0 HcmV?d00001 diff --git a/UsingControl/Controls/Resources/勾选.png b/UsingControl/Controls/Resources/勾选.png new file mode 100644 index 0000000000000000000000000000000000000000..ef7e25efb7e6d013aac5a61040883dbe682cec7f GIT binary patch literal 2781 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 jzV`qgfRbCF zYDP{R$IoiX`m-%>pz6t%)ZeG>R;wjZ5}#R1fX=%2vGXJnVCE!<1c(Hfxddk3{ip#V z0p=xv)6>((-@bi&*468>EN|YveS1A8iA+udynp|G^UeJXY#wZCO zM)^xZ$X~Vrm$3r~K?u2|lwL5#R8Db}bBfx}! zZ{r;#5rQJX$;rt(&iPS@BgIskIOk_+njVMZBLqQ!larI}s;WLvN>%6Trf_ln9f&LJ zXIXaPy5e?yUI`#PdjLLEuiiF35M0{x=_q<50E~Lh`NxrY_BIFs+F&osvP&BumwnR< z0p?)qWrA=24!%K_We2M74K44K0Ae8qMm>aV z>mY)-<0`D|ga88kf1zQduY(x1%U(yjInd=FCbpDN`Rs$AdCxYKR)^r z*t1CjYXlH#|FeF-p=QG+GcRhzfwwJxpze=eb|;>RTb=hf+Sh+ul~Sx zj&pvIWts9O8f5~+(T|0szZ?LTrs@7V+byQokSO{BTceH^P$obe{a849%b}Ndi=u!n zWhfHpXaOYx#L@2-e5eg%zE~{4M4-%psuoZpKpg#p34k8?&6-r?t~w(?6Cj3s{eTa( zDo(j?8Dmedtwj?c=J#Pm`g=Lf`9YRtXS!d|h`6FPjS2zcTE7N@I*wVp8bu8NuU|37 zQ2Q-W1c=U`2J-($=(OhM9RyI0yCg~S1QQ-c5uhjvP+xEK#4yjdOo1<#%TRnblN;EMH{ywGjR6{{&(f-eRhINsWt7n3U>C4fp00xzoRl?)AhA>qFnWBYy5#t=Z+0hu1W@`W9pmAJ02 zni%rJtqQjj#R)a-T1mBwp zXn_0N#L3sTNibFLwFzMGs8?gAz!nLn489nMYX_m#Ku|*qtdbD8<_tdc zJ$ew61r?2tM=!lanbW0DLIVb2z8Y>QZb=@WGH^tl$$uZWv>m zvO$0)fbJ<3vikde_fCQlgD(vL)q+P6z|nNDiwxdKFlO*E(?2BwKw*_LYljT`j(44t zU;^Ny)ITZ?(3oHQya?JE2_^tOsDJdqlqeGbB=9gBXe$HjB$xvDSnpri1c=#y@_~h8 zF$YrtU*(igB@+OJJvxI;9vRmJ69T_?7f{z=M4N#6Wrv|*CsV{JfiFw`FhYPpv;g#F zuqK!o_{yVS*#tCZ1aQ>LOT+eE=X2U5m>T#xqhFf<0cio~!!k*dSJ=#6F`I$2cb)Ce z*I~BmJF?Tj)_qUe2Wa>LAzc@L%Q@eZU7;#=JOlXJ$FHgaZOhl3=OT zWZL*pd966-XK9*V)fxe`)yBrgGtN02nJPU!duRh(zYj?tX_{_gHDJ4a+8RK_1zhF| zxR&i$>O)@-V^jk)96}p=2gV|N-|a-*3DDQbK^g!)EH-RjWAC-|EwQQ8Zz|VuFabcI zLywc03Mel7fw>C+(;g!P5dJ_&vjR-t$6Q8w4*<4v#t0xt;5u~-+t10AgYE2DmKmGI z8YMuWQ^P5N|Fx>Bt*$edbvtR40MLl`#thwt#rJ-dfGMZXXdGZ2NRb3)>1zvoXr*xt zPp8H zW&)bch(3WDC^l`r6DP2%yO9Jq61W84i3wfSwmwbM zGnbBDUtfbEK;1|%3yZ}9atmJj0?9_bkhxn`)se}SJQM87y5g()zh*4!Ch_nmNlj8%cFwLvWT)_?LNs?TKV&i3v57q?qHC#*|_c`a=zR3V7 zS`g2us_HT{`z`|?ejg5Aze*qyVCIa71c(Hfxddk3{ip#V0cI|NnRov?4@6blh>&{m00000 LNkvXXu0mjf-L$`R literal 0 HcmV?d00001 diff --git a/UsingControl/Controls/Resources/去复选框.png b/UsingControl/Controls/Resources/去复选框.png new file mode 100644 index 0000000000000000000000000000000000000000..d88e6ac3adbcba327ba29da087ce9d336c5214ae GIT binary patch literal 1633 zcmb_c|3A}t9DjednHg%5@5)>yLc@tOtl8EvJCuB@M{Q)jROid2B8v}7=(<*&MUqLm z!kHqb(k2uS8k(*YBMR4Htw%Q#&FOEr`{DI^J)V!}+M^|9ty0DwN- zj~2Xg;ctUMuk3bGR1W}XTRP1rB#k*+rsRyc={;%Fd980A)Ss4P&J@g|IBv-{@kF1C zI^%)3ILO(eqYO{55E<5=u^b)oEH6hD-k|ZUmbd96)R~A)q=M8_ZmHHCHd z^ic*vl0mqsseDZ&&RxiU+3R5B^I{Nm*pJrKUYE(uM1x@nBfya^=iL=I*L_gN5JmmN zhVc;Z;wOJ^FJcofJF9q4)yz;6hRhwjRAcpwiN1mDtuu=UqI2iDs>f%Zeu`ITZq+vj zj}BaT>Of!J%Pr9*J6Vt{FQ3jHI?Gj^FJ69tk5`c*b-K7oNX1*e;*=k-4n|R7xy?>a>beur|+pGQTBj(D^Tk}lPoy*Pj z3^%aTrSx`FV(g+Wz;6Cr+wzn0uosjs1d%H^pTLTI@#?q^7(@%Al)E6b zi4_<`36%EBro<}P9A|1^WhBT`4@}M!9Zeh-$ytBrDO#d-L0ibYMzaad(z*^`Ez^A~ z@0kKdI4KcftvRnZwq5`*#=<3)y`;P6!g=dcmrrMD69kK^4f&l(4G4#amg%gwt)hEQ z5hmgQz@NN{P3o+L1lr0{)L2q1f3&sFZRi^56khmaQ6@D^mqHkK*MSddCHP`atPy(y zzN*fZDr1?ZD=EPbt9cb8-8MADMuWqm){F|Dj*TfElh*7_b+2*@Mgz2XCAOxr9puvG&ijzp)4wAVPUec=VJ=GPK?G##yao?i9XEL98sX9h@ zwn(zK+pKLXF!gy~VhRBe>2ZB-Xmax6M60-vCDFS^mA$P*6!QtA>3~;Gl^Fy0;KHXe zZLr|sngD_Sf#^e!zY^=#^CqX`6%Bh=hRpW9d){%R-LjIIf?CpxXEpzjEz)lnjI{smWW)kXjS literal 0 HcmV?d00001 diff --git a/UsingControl/Controls/Resources/复选框.png b/UsingControl/Controls/Resources/复选框.png new file mode 100644 index 0000000000000000000000000000000000000000..cc707d5c65bc50d5f075c523382d5e0a3c3476ad GIT binary patch literal 1785 zcmY+FYdDnq8pi+cYlbn%Afn_{%g!O}RuRHXW;rYk6Ur$T(PoECau|&94uwRltPCm? zb*OKttTXmX#vrHnuR=RGAc%~Uw^&0E(XsZ zny9HPIDFd!Qfp90RDCKTC`y^$xc4M6us^9!Igm^{uT&8)Wm$ zf+F1)NDXpet%%u2v*%F?VxrL4fY6ZC#7H1K87I#Dt0~Ix(G@fnX?a;2YM+rHhphGY z-95815ct?laJlNUKdaF}6iI2${LsM6zewgjsXZ5Yhe_8M63Ah=;gA=J}|*M;ujC&$q|#1I-qswY_B*P$y<4&d;uhm z=jSP40pU}MSslQ!ED1mF1+g6mVknRbJvH`UM*!-s0iO%wca+c^GQemC?KGp24HInk zLx6MisO1vBqJP(6P=3WUV!jR@y~95O;Vb((TybmzH6!X)&%w26*>^N~7zKG=TF(d% z3F2QFHVYdR$@fR?4EuJ#h~0^U-dUNIr)%vjM-?XSdK>g8se=v2e$|ZP&CcGr!buG^ zs+*5Fpy+XiRBNV7=|duuHn}_)Msy91PS$1W0_P+}|7%XG@2NC_l%*y+Nu$_@Kf8g! z(Ro=_fa^dam1#~VP+{^c7HGkFC7T$k)J13yE3*lC?Sc(l7V3@#e zrWFH5mx0v!i2>(I?O-SdYN+UOxi7of& zyy!99$$PB7i2h;CUWX*cNa4{e;X!c%cKWRwlu<~R#SBglRR|v1wC!v_{dmA?!}09ckoq3Z3YJeU*4%H9YDqXehmX5&!d!r_kmN1?S|I@ zd)P#>UJNJ^rxZ^E?tD(d2Q-jW3*Ms&C}BP3i!dT0Wte~iCmUx}!y$HD;(hb~i_wJj zhP(VsKWgK@)X&My=(uY*-mLwnyu%l@U?tX-2>MYl7uOf+ZX8aLGmZZs`gy7H)nb^7 zjw=|6TP6ro6kCwPBF6uFFcQem^^#B1O>zbs=2#t$ZqVYQkcBy*?d$11EK?3&R}R_= z+7q&n4C+S9yi8xXXSxj4)08b3ZB5C7YW>v~+lskn43H%TM(3z{%)%YKH7znuLAT_R zINJoZtuRrzm2gDiWdX7FzF%~4MlaS*j=gZV=Ilq%sJH21>ycq<2Jv2` z6Sr+Qp4EN-*glmlIQ~QibgG2MH0KDC@Y}~+d;*xv_{(<^Kmt;Jjd|%R)7lZ{&RWUg z*|h#n%unrN*y<mfdtS`KzTSp}hBd}NLws1-&)S{-~-@;A*NLSPoT+Sa8L T|9ok;(t!0Zw#16lp0R%eO~o^* literal 0 HcmV?d00001 diff --git a/UsingControl/HZHControls/Colors/BasisColors.cs b/UsingControl/HZHControls/Colors/BasisColors.cs new file mode 100644 index 0000000..0bd25d1 --- /dev/null +++ b/UsingControl/HZHControls/Colors/BasisColors.cs @@ -0,0 +1,73 @@ +// *********************************************************************** +// Assembly : HZH_Controls +// Created : 2019-09-30 +// +// *********************************************************************** +// +// Copyright by Huang Zhenghui(黄正辉) All, QQ group:568015492 QQ:623128629 Email:623128629@qq.com +// +// +// Blog: https://www.cnblogs.com/bfyx +// GitHub:https://github.com/kwwwvagaa/NetWinformControl +// gitee:https://gitee.com/kwwwvagaa/net_winform_custom_control.git +// +// If you use this code, please keep this note. +// *********************************************************************** +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Drawing; + +namespace HZH_Controls +{ + /// + /// Class BasisColors. + /// + public class BasisColors + { + /// + /// The light + /// + private static Color light = ColorTranslator.FromHtml("#f5f7fa"); + + /// + /// Gets the light. + /// + /// The light. + public static Color Light + { + get { return light; } + internal set { light = value; } + } + /// + /// The medium + /// + private static Color medium = ColorTranslator.FromHtml("#f0f2f5"); + + /// + /// Gets the medium. + /// + /// The medium. + public static Color Medium + { + get { return medium; } + internal set { medium = value; } + } + /// + /// The dark + /// + private static Color dark = ColorTranslator.FromHtml("#000000"); + + /// + /// Gets the dark. + /// + /// The dark. + public static Color Dark + { + get { return dark; } + internal set { dark = value; } + } + + } +} diff --git a/UsingControl/HZHControls/Colors/BorderColors.cs b/UsingControl/HZHControls/Colors/BorderColors.cs new file mode 100644 index 0000000..2ff69d1 --- /dev/null +++ b/UsingControl/HZHControls/Colors/BorderColors.cs @@ -0,0 +1,86 @@ +// *********************************************************************** +// Assembly : HZH_Controls +// Created : 2019-09-30 +// +// *********************************************************************** +// +// Copyright by Huang Zhenghui(黄正辉) All, QQ group:568015492 QQ:623128629 Email:623128629@qq.com +// +// +// Blog: https://www.cnblogs.com/bfyx +// GitHub:https://github.com/kwwwvagaa/NetWinformControl +// gitee:https://gitee.com/kwwwvagaa/net_winform_custom_control.git +// +// If you use this code, please keep this note. +// *********************************************************************** +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; + +namespace HZH_Controls +{ + /// + /// Class BorderColors. + /// + public class BorderColors + { + /// + /// The green + /// + private static Color green = ColorTranslator.FromHtml("#f0f9ea"); + + /// + /// Gets the green. + /// + /// The green. + public static Color Green + { + get { return green; } + internal set { green = value; } + } + /// + /// The blue + /// + private static Color blue = ColorTranslator.FromHtml("#ecf5ff"); + + /// + /// Gets the blue. + /// + /// The blue. + public static Color Blue + { + get { return blue; } + internal set { blue = value; } + } + /// + /// The red + /// + private static Color red = ColorTranslator.FromHtml("#fef0f0"); + + /// + /// Gets the red. + /// + /// The red. + public static Color Red + { + get { return red; } + internal set { red = value; } + } + /// + /// The yellow + /// + private static Color yellow = ColorTranslator.FromHtml("#fdf5e6"); + + /// + /// Gets the yellow. + /// + /// The yellow. + public static Color Yellow + { + get { return yellow; } + internal set { yellow = value; } + } + } +} diff --git a/UsingControl/HZHControls/Colors/ColorEnums.cs b/UsingControl/HZHControls/Colors/ColorEnums.cs new file mode 100644 index 0000000..43895ad --- /dev/null +++ b/UsingControl/HZHControls/Colors/ColorEnums.cs @@ -0,0 +1,203 @@ +// *********************************************************************** +// Assembly : HZH_Controls +// Created : 2019-09-30 +// +// *********************************************************************** +// +// Copyright by Huang Zhenghui(黄正辉) All, QQ group:568015492 QQ:623128629 Email:623128629@qq.com +// +// +// Blog: https://www.cnblogs.com/bfyx +// GitHub:https://github.com/kwwwvagaa/NetWinformControl +// gitee:https://gitee.com/kwwwvagaa/net_winform_custom_control.git +// +// If you use this code, please keep this note. +// *********************************************************************** +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace HZH_Controls +{ + /// + /// Enum BasisColorsTypes + /// + public enum BasisColorsTypes + { + /// + /// The light + /// + Light = 1, + /// + /// The medium + /// + Medium = 2, + /// + /// The dark + /// + Dark = 3 + } + + /// + /// Enum BorderColorsTypes + /// + public enum BorderColorsTypes + { + /// + /// The green + /// + Green = 1, + /// + /// The blue + /// + Blue = 2, + /// + /// The red + /// + Red = 3, + /// + /// The yellow + /// + Yellow = 4 + } + + /// + /// Enum GradientColorsTypes + /// + public enum GradientColorsTypes + { + /// + /// The orange + /// + Orange = 1, + /// + /// The light green + /// + LightGreen = 2, + /// + /// The green + /// + Green = 3, + /// + /// The blue + /// + Blue = 4, + /// + /// The blue green + /// + BlueGreen = 5, + /// + /// The light violet + /// + LightViolet = 6, + /// + /// The violet + /// + Violet = 7, + /// + /// The gray + /// + Gray = 8 + } + + /// + /// Enum LineColorsTypes + /// + public enum LineColorsTypes + { + /// + /// The more light + /// + MoreLight = 1, + /// + /// The light + /// + Light = 2, + /// + /// The dark + /// + Dark = 3, + /// + /// The more dark + /// + MoreDark = 4 + } + + /// + /// Enum StatusColorsTypes + /// + public enum StatusColorsTypes + { + /// + /// The primary + /// + Primary = 1, + /// + /// The success + /// + Success = 2, + /// + /// The warning + /// + Warning = 3, + /// + /// The danger + /// + Danger = 4, + /// + /// The information + /// + Info = 5 + } + + /// + /// Enum TableColorsTypes + /// + public enum TableColorsTypes + { + /// + /// The green + /// + Green = 1, + /// + /// The blue + /// + Blue = 2, + /// + /// The red + /// + Red = 3, + /// + /// The yellow + /// + Yellow = 4, + /// + /// The gray + /// + Gray = 5 + } + + /// + /// Enum TextColorsTypes + /// + public enum TextColorsTypes + { + /// + /// The more light + /// + MoreLight = 1, + /// + /// The light + /// + Light = 2, + /// + /// The dark + /// + Dark = 3, + /// + /// The more dark + /// + MoreDark = 4 + } +} diff --git a/UsingControl/HZHControls/Colors/ColorExt.cs b/UsingControl/HZHControls/Colors/ColorExt.cs new file mode 100644 index 0000000..d9e407c --- /dev/null +++ b/UsingControl/HZHControls/Colors/ColorExt.cs @@ -0,0 +1,264 @@ +// *********************************************************************** +// Assembly : HZH_Controls +// Created : 2019-09-30 +// +// *********************************************************************** +// +// Copyright by Huang Zhenghui(黄正辉) All, QQ group:568015492 QQ:623128629 Email:623128629@qq.com +// +// +// Blog: https://www.cnblogs.com/bfyx +// GitHub:https://github.com/kwwwvagaa/NetWinformControl +// gitee:https://gitee.com/kwwwvagaa/net_winform_custom_control.git +// +// If you use this code, please keep this note. +// *********************************************************************** +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; + +namespace HZH_Controls +{ + /// + /// Class ColorExt. + /// + public static class ColorExt + { + #region 重置内置的颜色 English:Reset color + /// + /// Resets the color. + /// + /// The type. + /// The light. + /// The medium. + /// The dark. + public static void ResetColor( + this BasisColors type, + Color light, + Color medium, + Color dark) + { + BasisColors.Light = light; + BasisColors.Medium = medium; + BasisColors.Dark = dark; + } + + /// + /// Resets the color. + /// + /// The type. + /// The green. + /// The blue. + /// The red. + /// The yellow. + public static void ResetColor( + this BorderColors type, + Color green, + Color blue, + Color red, + Color yellow) + { + BorderColors.Green = green; + BorderColors.Blue = blue; + BorderColors.Red = red; + BorderColors.Yellow = yellow; + } + + /// + /// Resets the color. + /// + /// The type. + /// The orange. + /// The light green. + /// The green. + /// The blue. + /// The blue green. + /// The light violet. + /// The violet. + /// The gray. + public static void ResetColor( + this GradientColors type, + Color[] orange, + Color[] lightGreen, + Color[] green, + Color[] blue, + Color[] blueGreen, + Color[] lightViolet, + Color[] violet, + Color[] gray + ) + { + if (orange != null && orange.Length == 2) + GradientColors.Orange = orange; + if (orange != null && orange.Length == 2) + GradientColors.LightGreen = lightGreen; + if (orange != null && orange.Length == 2) + GradientColors.Green = green; + if (orange != null && orange.Length == 2) + GradientColors.Blue = blue; + if (orange != null && orange.Length == 2) + GradientColors.BlueGreen = blueGreen; + if (orange != null && orange.Length == 2) + GradientColors.LightViolet = lightViolet; + if (orange != null && orange.Length == 2) + GradientColors.Violet = violet; + if (orange != null && orange.Length == 2) + GradientColors.Gray = gray; + } + /// + /// Resets the color. + /// + /// The type. + /// The more light. + /// The light. + /// The dark. + /// The more dark. + public static void ResetColor( + this LineColors type, + Color moreLight, + Color light, + Color dark, + Color moreDark) + { + LineColors.MoreLight = moreLight; + LineColors.Light = light; + LineColors.Dark = dark; + LineColors.MoreDark = moreDark; + } + /// + /// Resets the color. + /// + /// The type. + /// The primary. + /// The success. + /// The warning. + /// The danger. + /// The information. + public static void ResetColor( + this StatusColors type, + Color primary, + Color success, + Color warning, + Color danger, + Color info + ) + { + StatusColors.Primary = primary; + StatusColors.Success = success; + StatusColors.Warning = warning; + StatusColors.Danger = danger; + StatusColors.Info = info; + } + /// + /// Resets the color. + /// + /// The type. + /// The green. + /// The blue. + /// The red. + /// The yellow. + /// The gray. + public static void ResetColor( + this TableColors type, + Color green, + Color blue, + Color red, + Color yellow, + Color gray + ) + { + TableColors.Green = green; + TableColors.Blue = blue; + TableColors.Red = red; + TableColors.Yellow = yellow; + TableColors.Gray = gray; + } + + /// + /// Resets the color. + /// + /// The type. + /// The more light. + /// The light. + /// The dark. + /// The more dark. + public static void ResetColor( + this TextColors type, + Color moreLight, + Color light, + Color dark, + Color moreDark) + { + TextColors.MoreLight = moreLight; + TextColors.Light = light; + TextColors.Dark = dark; + TextColors.MoreDark = moreDark; + } + #endregion + + #region 获取一个内置颜色 English:Get a built-in color + /// + /// 功能描述:获取一个内置颜色 English:Get a built-in color + /// 作  者:HZH + /// 创建日期:2019-09-30 11:08:04 + /// 任务编号:POS + /// + /// + /// t + /// 颜色列表 + public static Color[] GetInternalColor(T t) + { + Type type = null; + if (t is BasisColorsTypes) + { + type = typeof(BasisColors); + } + else if (t is BorderColorsTypes) + { + type = typeof(BorderColors); + } + else if (t is GradientColorsTypes) + { + type = typeof(GradientColors); + } + else if (t is LineColorsTypes) + { + type = typeof(LineColors); + } + else if (t is StatusColorsTypes) + { + type = typeof(StatusColors); + } + else if (t is TableColorsTypes) + { + type = typeof(TableColors); + } + else if (t is TextColorsTypes) + { + type = typeof(TextColors); + } + if (type == null) + return new Color[] { Color.Empty }; + else + { + string strName = t.ToString(); + var pi = type.GetProperty(strName); + if (pi == null) + return new Color[] { Color.Empty }; + else + { + var c = pi.GetValue(null, null); + if (c == null) + return new Color[] { Color.Empty }; + else if (c is Color[]) + return (Color[])c; + else + return new Color[] { (Color)c }; + } + } + } + #endregion + } +} diff --git a/UsingControl/HZHControls/Colors/GradientColors.cs b/UsingControl/HZHControls/Colors/GradientColors.cs new file mode 100644 index 0000000..e457277 --- /dev/null +++ b/UsingControl/HZHControls/Colors/GradientColors.cs @@ -0,0 +1,142 @@ +// *********************************************************************** +// Assembly : HZH_Controls +// Created : 2019-09-30 +// +// *********************************************************************** +// +// Copyright by Huang Zhenghui(黄正辉) All, QQ group:568015492 QQ:623128629 Email:623128629@qq.com +// +// +// Blog: https://www.cnblogs.com/bfyx +// GitHub:https://github.com/kwwwvagaa/NetWinformControl +// gitee:https://gitee.com/kwwwvagaa/net_winform_custom_control.git +// +// If you use this code, please keep this note. +// *********************************************************************** +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; + +namespace HZH_Controls +{ + /// + /// Class GradientColors. + /// + public class GradientColors + { + /// + /// The orange + /// + private static Color[] orange = new Color[] { Color.FromArgb(252, 196, 136), Color.FromArgb(243, 138, 159) }; + + /// + /// Gets the orange. + /// + /// The orange. + public static Color[] Orange + { + get { return GradientColors.orange; } + internal set { GradientColors.orange = value; } + } + /// + /// The light green + /// + private static Color[] lightGreen = new Color[] { Color.FromArgb(210, 251, 123), Color.FromArgb(152, 231, 160) }; + + /// + /// Gets the light green. + /// + /// The light green. + public static Color[] LightGreen + { + get { return GradientColors.lightGreen; } + internal set { GradientColors.lightGreen = value; } + } + /// + /// The green + /// + private static Color[] green = new Color[] { Color.FromArgb(138, 241, 124), Color.FromArgb(32, 190, 179) }; + + /// + /// Gets the green. + /// + /// The green. + public static Color[] Green + { + get { return GradientColors.green; } + internal set { GradientColors.green = value; } + } + /// + /// The blue + /// + private static Color[] blue = new Color[] { Color.FromArgb(193, 232, 251), Color.FromArgb(162, 197, 253) }; + + /// + /// Gets the blue. + /// + /// The blue. + public static Color[] Blue + { + get { return GradientColors.blue; } + internal set { GradientColors.blue = value; } + } + /// + /// The blue green + /// + private static Color[] blueGreen = new Color[] { Color.FromArgb(122, 251, 218), Color.FromArgb(16, 193, 252) }; + + /// + /// Gets the blue green. + /// + /// The blue green. + public static Color[] BlueGreen + { + get { return GradientColors.blueGreen; } + internal set { GradientColors.blueGreen = value; } + } + /// + /// The light violet + /// + private static Color[] lightViolet = new Color[] { Color.FromArgb(248, 192, 234), Color.FromArgb(164, 142, 210) }; + + /// + /// Gets the light violet. + /// + /// The light violet. + public static Color[] LightViolet + { + get { return GradientColors.lightViolet; } + internal set { GradientColors.lightViolet = value; } + } + /// + /// The violet + /// + private static Color[] violet = new Color[] { Color.FromArgb(185, 154, 241), Color.FromArgb(137, 124, 242) }; + + /// + /// Gets the violet. + /// + /// The violet. + public static Color[] Violet + { + get { return GradientColors.violet; } + internal set { GradientColors.violet = value; } + } + /// + /// The gray + /// + private static Color[] gray = new Color[] { Color.FromArgb(233, 238, 239), Color.FromArgb(147, 162, 175) }; + + /// + /// Gets the gray. + /// + /// The gray. + public static Color[] Gray + { + get { return GradientColors.gray; } + internal set { GradientColors.gray = value; } + } + } +} diff --git a/UsingControl/HZHControls/Colors/LineColors.cs b/UsingControl/HZHControls/Colors/LineColors.cs new file mode 100644 index 0000000..88fbf0d --- /dev/null +++ b/UsingControl/HZHControls/Colors/LineColors.cs @@ -0,0 +1,86 @@ +// *********************************************************************** +// Assembly : HZH_Controls +// Created : 2019-09-30 +// +// *********************************************************************** +// +// Copyright by Huang Zhenghui(黄正辉) All, QQ group:568015492 QQ:623128629 Email:623128629@qq.com +// +// +// Blog: https://www.cnblogs.com/bfyx +// GitHub:https://github.com/kwwwvagaa/NetWinformControl +// gitee:https://gitee.com/kwwwvagaa/net_winform_custom_control.git +// +// If you use this code, please keep this note. +// *********************************************************************** +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; + +namespace HZH_Controls +{ + /// + /// Class LineColors. + /// + public class LineColors + { + /// + /// The more light + /// + private static Color _MoreLight = ColorTranslator.FromHtml("#f2f6fc"); + + /// + /// Gets the more light. + /// + /// The more light. + public static Color MoreLight + { + get { return _MoreLight; } + internal set { _MoreLight = value; } + } + /// + /// The light + /// + private static Color _Light = ColorTranslator.FromHtml("#ebeef5"); + + /// + /// Gets the light. + /// + /// The light. + public static Color Light + { + get { return _Light; } + internal set { _Light = value; } + } + /// + /// The dark + /// + private static Color _Dark = ColorTranslator.FromHtml("#e4e7ed"); + + /// + /// Gets the dark. + /// + /// The dark. + public static Color Dark + { + get { return _Dark; } + internal set { _Dark = value; } + } + /// + /// The more dark + /// + private static Color _MoreDark = ColorTranslator.FromHtml("#dcdfe6"); + + /// + /// Gets the more dark. + /// + /// The more dark. + public static Color MoreDark + { + get { return _MoreDark; } + internal set { _MoreDark = value; } + } + } +} diff --git a/UsingControl/HZHControls/Colors/StatusColors.cs b/UsingControl/HZHControls/Colors/StatusColors.cs new file mode 100644 index 0000000..c342dd9 --- /dev/null +++ b/UsingControl/HZHControls/Colors/StatusColors.cs @@ -0,0 +1,100 @@ +// *********************************************************************** +// Assembly : HZH_Controls +// Created : 2019-09-30 +// +// *********************************************************************** +// +// Copyright by Huang Zhenghui(黄正辉) All, QQ group:568015492 QQ:623128629 Email:623128629@qq.com +// +// +// Blog: https://www.cnblogs.com/bfyx +// GitHub:https://github.com/kwwwvagaa/NetWinformControl +// gitee:https://gitee.com/kwwwvagaa/net_winform_custom_control.git +// +// If you use this code, please keep this note. +// *********************************************************************** +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; + +namespace HZH_Controls +{ + /// + /// 状态颜色 + /// + public class StatusColors + { + /// + /// The primary + /// + private static Color _Primary = ColorTranslator.FromHtml("#409eff"); + + /// + /// Gets or sets the primary. + /// + /// The primary. + public static Color Primary + { + get { return _Primary; } + internal set { _Primary = value; } + } + /// + /// The success + /// + private static Color _Success = ColorTranslator.FromHtml("#67c23a"); + + /// + /// Gets or sets the success. + /// + /// The success. + public static Color Success + { + get { return _Success; } + internal set { _Success = value; } + } + /// + /// The warning + /// + private static Color _Warning = ColorTranslator.FromHtml("#e6a23c"); + + /// + /// Gets or sets the warning. + /// + /// The warning. + public static Color Warning + { + get { return _Warning; } + internal set { _Warning = value; } + } + /// + /// The danger + /// + private static Color _Danger = ColorTranslator.FromHtml("#f56c6c"); + + /// + /// Gets or sets the danger. + /// + /// The danger. + public static Color Danger + { + get { return _Danger; } + internal set { _Danger = value; } + } + /// + /// The information + /// + private static Color _Info = ColorTranslator.FromHtml("#909399"); + + /// + /// Gets or sets the information. + /// + /// The information. + public static Color Info + { + get { return _Info; } + internal set { _Info = value; } + } + } +} diff --git a/UsingControl/HZHControls/Colors/TableColors.cs b/UsingControl/HZHControls/Colors/TableColors.cs new file mode 100644 index 0000000..06bfc41 --- /dev/null +++ b/UsingControl/HZHControls/Colors/TableColors.cs @@ -0,0 +1,100 @@ +// *********************************************************************** +// Assembly : HZH_Controls +// Created : 2019-09-30 +// +// *********************************************************************** +// +// Copyright by Huang Zhenghui(黄正辉) All, QQ group:568015492 QQ:623128629 Email:623128629@qq.com +// +// +// Blog: https://www.cnblogs.com/bfyx +// GitHub:https://github.com/kwwwvagaa/NetWinformControl +// gitee:https://gitee.com/kwwwvagaa/net_winform_custom_control.git +// +// If you use this code, please keep this note. +// *********************************************************************** +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; + +namespace HZH_Controls +{ + /// + /// Class TableColors. + /// + public class TableColors + { + /// + /// The green + /// + private static Color green = ColorTranslator.FromHtml("#c2e7b0"); + + /// + /// Gets the green. + /// + /// The green. + public static Color Green + { + get { return green; } + internal set { green = value; } + } + /// + /// The blue + /// + private static Color blue = ColorTranslator.FromHtml("#a3d0fd"); + + /// + /// Gets the blue. + /// + /// The blue. + public static Color Blue + { + get { return blue; } + internal set { blue = value; } + } + /// + /// The red + /// + private static Color red = ColorTranslator.FromHtml("#fbc4c4"); + + /// + /// Gets the red. + /// + /// The red. + public static Color Red + { + get { return red; } + internal set { red = value; } + } + /// + /// The yellow + /// + private static Color yellow = ColorTranslator.FromHtml("#f5dab1"); + + /// + /// Gets the yellow. + /// + /// The yellow. + public static Color Yellow + { + get { return yellow; } + internal set { yellow = value; } + } + /// + /// The gray + /// + private static Color gray = ColorTranslator.FromHtml("#d3d4d6"); + + /// + /// Gets the gray. + /// + /// The gray. + public static Color Gray + { + get { return gray; } + internal set { gray = value; } + } + } +} diff --git a/UsingControl/HZHControls/Colors/TextColors.cs b/UsingControl/HZHControls/Colors/TextColors.cs new file mode 100644 index 0000000..f9a5564 --- /dev/null +++ b/UsingControl/HZHControls/Colors/TextColors.cs @@ -0,0 +1,86 @@ +// *********************************************************************** +// Assembly : HZH_Controls +// Created : 2019-09-30 +// +// *********************************************************************** +// +// Copyright by Huang Zhenghui(黄正辉) All, QQ group:568015492 QQ:623128629 Email:623128629@qq.com +// +// +// Blog: https://www.cnblogs.com/bfyx +// GitHub:https://github.com/kwwwvagaa/NetWinformControl +// gitee:https://gitee.com/kwwwvagaa/net_winform_custom_control.git +// +// If you use this code, please keep this note. +// *********************************************************************** +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; + +namespace HZH_Controls +{ + /// + /// Class TextColor. + /// + public class TextColors + { + /// + /// The more light + /// + private static Color _MoreLight = ColorTranslator.FromHtml("#c0c4cc"); + + /// + /// Gets the more light. + /// + /// The more light. + public static Color MoreLight + { + get { return _MoreLight; } + internal set { _MoreLight = value; } + } + /// + /// The light + /// + private static Color _Light = ColorTranslator.FromHtml("#909399"); + + /// + /// Gets the light. + /// + /// The light. + public static Color Light + { + get { return _Light; } + internal set { _Light = value; } + } + /// + /// The dark + /// + private static Color _Dark = ColorTranslator.FromHtml("#606266"); + + /// + /// Gets the dark. + /// + /// The dark. + public static Color Dark + { + get { return _Dark; } + internal set { _Dark = value; } + } + /// + /// The more dark + /// + private static Color _MoreDark = ColorTranslator.FromHtml("#303133"); + + /// + /// Gets the more dark. + /// + /// The more dark. + public static Color MoreDark + { + get { return _MoreDark; } + internal set { _MoreDark = value; } + } + } +} diff --git a/UsingControl/HZHControls/Controls/Btn/UCBtnExt.Designer.cs b/UsingControl/HZHControls/Controls/Btn/UCBtnExt.Designer.cs new file mode 100644 index 0000000..2e14ec1 --- /dev/null +++ b/UsingControl/HZHControls/Controls/Btn/UCBtnExt.Designer.cs @@ -0,0 +1,116 @@ +// *********************************************************************** +// Assembly : HZH_Controls +// Created : 08-08-2019 +// +// *********************************************************************** +// +// Copyright by Huang Zhenghui(黄正辉) All, QQ group:568015492 QQ:623128629 Email:623128629@qq.com +// +// +// Blog: https://www.cnblogs.com/bfyx +// GitHub:https://github.com/kwwwvagaa/NetWinformControl +// gitee:https://gitee.com/kwwwvagaa/net_winform_custom_control.git +// +// If you use this code, please keep this note. +// *********************************************************************** +namespace HZH_Controls.Controls +{ + /// + /// Class UCBtnExt. + /// Implements the + /// + /// + public partial class UCBtnExt + { + /// + /// 必需的设计器变量。 + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 清理所有正在使用的资源。 + /// + /// 如果应释放托管资源,为 true;否则为 false。 + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region 组件设计器生成的代码 + + /// + /// 设计器支持所需的方法 - 不要 + /// 使用代码编辑器修改此方法的内容。 + /// + private void InitializeComponent() + { + this.lbl = new System.Windows.Forms.Label(); + this.lblTips = new System.Windows.Forms.Label(); + this.SuspendLayout(); + // + // lbl + // + this.lbl.BackColor = System.Drawing.Color.Transparent; + this.lbl.Dock = System.Windows.Forms.DockStyle.Fill; + this.lbl.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.lbl.ForeColor = System.Drawing.Color.White; + this.lbl.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; + this.lbl.Location = new System.Drawing.Point(0, 0); + this.lbl.Name = "lbl"; + this.lbl.Size = new System.Drawing.Size(184, 60); + this.lbl.TabIndex = 0; + this.lbl.Text = "自定义按钮"; + this.lbl.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.lbl.MouseDown += new System.Windows.Forms.MouseEventHandler(this.lbl_MouseDown); + // + // lblTips + // + this.lblTips.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.lblTips.BackColor = System.Drawing.Color.Transparent; + this.lblTips.Font = new System.Drawing.Font("Arial Unicode MS", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.lblTips.ForeColor = System.Drawing.Color.White; + this.lblTips.ImageIndex = 0; + this.lblTips.Location = new System.Drawing.Point(158, 0); + this.lblTips.Name = "lblTips"; + this.lblTips.Size = new System.Drawing.Size(24, 24); + this.lblTips.TabIndex = 1; + this.lblTips.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.lblTips.Visible = false; + // + // UCBtnExt + // + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; + this.BackColor = System.Drawing.Color.Transparent; + this.ConerRadius = 5; + this.Controls.Add(this.lblTips); + this.Controls.Add(this.lbl); + this.Cursor = System.Windows.Forms.Cursors.Hand; + this.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(77)))), ((int)(((byte)(59))))); + this.IsRadius = true; + this.IsShowRect = true; + this.Margin = new System.Windows.Forms.Padding(0); + this.Name = "UCBtnExt"; + this.RectColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(77)))), ((int)(((byte)(58))))); + this.Size = new System.Drawing.Size(184, 60); + this.ResumeLayout(false); + + } + + #endregion + + /// + /// The label + /// + public System.Windows.Forms.Label lbl; + /// + /// The label tips + /// + private System.Windows.Forms.Label lblTips; + + + } +} diff --git a/UsingControl/HZHControls/Controls/Btn/UCBtnExt.cs b/UsingControl/HZHControls/Controls/Btn/UCBtnExt.cs new file mode 100644 index 0000000..e0f6464 --- /dev/null +++ b/UsingControl/HZHControls/Controls/Btn/UCBtnExt.cs @@ -0,0 +1,255 @@ +// *********************************************************************** +// Assembly : HZH_Controls +// Created : 08-08-2019 +// +// *********************************************************************** +// +// Copyright by Huang Zhenghui(黄正辉) All, QQ group:568015492 QQ:623128629 Email:623128629@qq.com +// +// +// Blog: https://www.cnblogs.com/bfyx +// GitHub:https://github.com/kwwwvagaa/NetWinformControl +// gitee:https://gitee.com/kwwwvagaa/net_winform_custom_control.git +// +// If you use this code, please keep this note. +// *********************************************************************** + +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace HZH_Controls.Controls +{ + /// + /// Class UCBtnExt. + /// Implements the + /// + /// + [DefaultEvent("BtnClick")] + + public partial class UCBtnExt : UCControlBase + { + #region 字段属性 + private bool enabledMouseEffect = false; + [Description("是否启用鼠标效果"), Category("自定义")] + public bool EnabledMouseEffect + { + get { return enabledMouseEffect; } + set { enabledMouseEffect = value; } + } + + /// + /// 是否显示角标 + /// + /// true if this instance is show tips; otherwise, false. + [Description("是否显示角标"), Category("自定义")] + public bool IsShowTips + { + get + { + return this.lblTips.Visible; + } + set + { + this.lblTips.Visible = value; + } + } + /// + /// 角标文字 + /// + /// The tips text. + [Description("角标文字"), Category("自定义")] + public string TipsText + { + get + { + return this.lblTips.Text; + } + set + { + this.lblTips.Text = value; + } + } + + /// + /// The BTN back color + /// + private Color _btnBackColor = Color.White; + /// + /// 按钮背景色 + /// + /// The color of the BTN back. + [Description("按钮背景色"), Category("自定义")] + public Color BtnBackColor + { + get { return _btnBackColor; } + set + { + _btnBackColor = value; + this.BackColor = value; + } + } + + /// + /// The BTN fore color + /// + private Color _btnForeColor = Color.White; + /// + /// 按钮字体颜色 + /// + /// The color of the BTN fore. + [Description("按钮字体颜色"), Category("自定义")] + public virtual Color BtnForeColor + { + get { return _btnForeColor; } + set + { + _btnForeColor = value; + this.lbl.ForeColor = value; + } + } + + /// + /// The BTN font + /// + private Font _btnFont = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + /// + /// 按钮字体 + /// + /// The BTN font. + [Description("按钮字体"), Category("自定义")] + public Font BtnFont + { + get { return _btnFont; } + set + { + _btnFont = value; + this.lbl.Font = value; + } + } + + /// + /// 按钮点击事件 + /// + [Description("按钮点击事件"), Category("自定义")] + public event EventHandler BtnClick; + + /// + /// The BTN text + /// + private string _btnText; + /// + /// 按钮文字 + /// + /// The BTN text. + [Description("按钮文字"), Category("自定义")] + public virtual string BtnText + { + get { return _btnText; } + set + { + _btnText = value; + lbl.Text = value; + } + } + + /// + /// The m tips color + /// + private Color m_tipsColor = Color.FromArgb(232, 30, 99); + /// + /// 角标颜色 + /// + /// The color of the tips. + [Description("角标颜色"), Category("自定义")] + public Color TipsColor + { + get { return m_tipsColor; } + set { m_tipsColor = value; } + } + [Description("鼠标效果生效时发生,需要和MouseEffected同时使用,否则无效"), Category("自定义")] + public event EventHandler MouseEffecting; + [Description("鼠标效果结束时发生,需要和MouseEffecting同时使用,否则无效"), Category("自定义")] + public event EventHandler MouseEffected; + #endregion + /// + /// Initializes a new instance of the class. + /// + public UCBtnExt() + { + InitializeComponent(); + this.TabStop = false; + lblTips.Paint += lblTips_Paint; + this.lbl.MouseEnter += lbl_MouseEnter; + this.lbl.MouseLeave += lbl_MouseLeave; + } + Color m_cacheColor = Color.Empty; + void lbl_MouseLeave(object sender, EventArgs e) + { + if (enabledMouseEffect) + { + if (MouseEffecting != null && MouseEffected != null) + { + MouseEffected(this, e); + } + else + { + if (m_cacheColor != Color.Empty) + { + this.FillColor = m_cacheColor; + m_cacheColor = Color.Empty; + } + } + } + } + + void lbl_MouseEnter(object sender, EventArgs e) + { + if (enabledMouseEffect) + { + if (MouseEffecting != null && MouseEffected != null) + { + MouseEffecting(this, e); + } + else + { + if (FillColor != Color.Empty && FillColor != null) + { + m_cacheColor = this.FillColor; + this.FillColor = Color.FromArgb(230, this.FillColor); + } + } + } + } + + /// + /// Handles the Paint event of the lblTips control. + /// + /// The source of the event. + /// The instance containing the event data. + void lblTips_Paint(object sender, PaintEventArgs e) + { + e.Graphics.SetGDIHigh(); + e.Graphics.FillEllipse(new SolidBrush(m_tipsColor), new Rectangle(0, 0, lblTips.Width - 1, lblTips.Height - 1)); + System.Drawing.SizeF sizeEnd = e.Graphics.MeasureString(TipsText, lblTips.Font); + + e.Graphics.DrawString(TipsText, lblTips.Font, new SolidBrush(lblTips.ForeColor), new PointF((lblTips.Width - sizeEnd.Width) / 2, (lblTips.Height - sizeEnd.Height) / 2 + 1)); + } + + /// + /// Handles the MouseDown event of the lbl control. + /// + /// The source of the event. + /// The instance containing the event data. + private void lbl_MouseDown(object sender, MouseEventArgs e) + { + if (this.BtnClick != null) + BtnClick(this, e); + } + } +} diff --git a/UsingControl/HZHControls/Controls/Btn/UCBtnExt.resx b/UsingControl/HZHControls/Controls/Btn/UCBtnExt.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/UsingControl/HZHControls/Controls/Btn/UCBtnExt.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/UsingControl/HZHControls/Controls/Btn/UCBtnFillet.Designer.cs b/UsingControl/HZHControls/Controls/Btn/UCBtnFillet.Designer.cs new file mode 100644 index 0000000..8380d81 --- /dev/null +++ b/UsingControl/HZHControls/Controls/Btn/UCBtnFillet.Designer.cs @@ -0,0 +1,90 @@ +// *********************************************************************** +// Assembly : HZH_Controls +// Created : 08-08-2019 +// +// *********************************************************************** +// +// Copyright by Huang Zhenghui(黄正辉) All, QQ group:568015492 QQ:623128629 Email:623128629@qq.com +// +// +// Blog: https://www.cnblogs.com/bfyx +// GitHub:https://github.com/kwwwvagaa/NetWinformControl +// gitee:https://gitee.com/kwwwvagaa/net_winform_custom_control.git +// +// If you use this code, please keep this note. +// *********************************************************************** +namespace HZH_Controls.Controls +{ + /// + /// Class UCBtnFillet. + /// Implements the + /// + /// + partial class UCBtnFillet + { + /// + /// 必需的设计器变量。 + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 清理所有正在使用的资源。 + /// + /// 如果应释放托管资源,为 true;否则为 false。 + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region 组件设计器生成的代码 + + /// + /// 设计器支持所需的方法 - 不要 + /// 使用代码编辑器修改此方法的内容。 + /// + private void InitializeComponent() + { + this.lbl = new System.Windows.Forms.Label(); + this.SuspendLayout(); + // + // lbl + // + this.lbl.Dock = System.Windows.Forms.DockStyle.Fill; + this.lbl.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel); + this.lbl.Image = global::HZH_Controls.Properties.Resources.alarm; + this.lbl.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; + this.lbl.Location = new System.Drawing.Point(0, 0); + this.lbl.Name = "lbl"; + this.lbl.Padding = new System.Windows.Forms.Padding(5, 0, 0, 0); + this.lbl.Size = new System.Drawing.Size(120, 76); + this.lbl.TabIndex = 0; + this.lbl.Text = "按钮1 "; + this.lbl.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + this.lbl.MouseDown += new System.Windows.Forms.MouseEventHandler(this.lbl_MouseDown); + // + // UCBtnFillet + // + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; + this.BackColor = System.Drawing.Color.Transparent; + this.ConerRadius = 5; + this.Controls.Add(this.lbl); + this.IsShowRect = true; + this.IsRadius = true; + this.Name = "UCBtnFillet"; + this.Size = new System.Drawing.Size(120, 76); + this.ResumeLayout(false); + + } + + #endregion + + /// + /// The label + /// + private System.Windows.Forms.Label lbl; + } +} diff --git a/UsingControl/HZHControls/Controls/Btn/UCBtnFillet.cs b/UsingControl/HZHControls/Controls/Btn/UCBtnFillet.cs new file mode 100644 index 0000000..54d9a21 --- /dev/null +++ b/UsingControl/HZHControls/Controls/Btn/UCBtnFillet.cs @@ -0,0 +1,88 @@ +// *********************************************************************** +// Assembly : HZH_Controls +// Created : 08-08-2019 +// +// *********************************************************************** +// +// Copyright by Huang Zhenghui(黄正辉) All, QQ group:568015492 QQ:623128629 Email:623128629@qq.com +// +// +// Blog: https://www.cnblogs.com/bfyx +// GitHub:https://github.com/kwwwvagaa/NetWinformControl +// gitee:https://gitee.com/kwwwvagaa/net_winform_custom_control.git +// +// If you use this code, please keep this note. +// *********************************************************************** +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace HZH_Controls.Controls +{ + /// + /// Class UCBtnFillet. + /// Implements the + /// + /// + [DefaultEvent("BtnClick")] + public partial class UCBtnFillet : UCControlBase + { + /// + /// 按钮点击事件 + /// + [Description("按钮点击事件"), Category("自定义")] + public event EventHandler BtnClick; + /// + /// 按钮图片 + /// + /// The BTN image. + [Description("按钮图片"), Category("自定义")] + public Image BtnImage + { + get + { + return lbl.Image; + } + set + { + lbl.Image = value; + } + } + /// + /// 按钮文字 + /// + /// The BTN text. + [Description("按钮文字"), Category("自定义")] + public string BtnText + { + get { return lbl.Text; } + set + { + lbl.Text = value; + } + } + /// + /// Initializes a new instance of the class. + /// + public UCBtnFillet() + { + InitializeComponent(); + } + + /// + /// Handles the MouseDown event of the lbl control. + /// + /// The source of the event. + /// The instance containing the event data. + private void lbl_MouseDown(object sender, MouseEventArgs e) + { + if (BtnClick != null) + BtnClick(this, e); + } + } +} diff --git a/UsingControl/HZHControls/Controls/Btn/UCBtnFillet.resx b/UsingControl/HZHControls/Controls/Btn/UCBtnFillet.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/UsingControl/HZHControls/Controls/Btn/UCBtnFillet.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/UsingControl/HZHControls/Controls/Btn/UCBtnImg.Designer.cs b/UsingControl/HZHControls/Controls/Btn/UCBtnImg.Designer.cs new file mode 100644 index 0000000..597b2b1 --- /dev/null +++ b/UsingControl/HZHControls/Controls/Btn/UCBtnImg.Designer.cs @@ -0,0 +1,69 @@ +// *********************************************************************** +// Assembly : HZH_Controls +// Created : 08-08-2019 +// +// *********************************************************************** +// +// Copyright by Huang Zhenghui(黄正辉) All, QQ group:568015492 QQ:623128629 Email:623128629@qq.com +// +// +// Blog: https://www.cnblogs.com/bfyx +// GitHub:https://github.com/kwwwvagaa/NetWinformControl +// gitee:https://gitee.com/kwwwvagaa/net_winform_custom_control.git +// +// If you use this code, please keep this note. +// *********************************************************************** +namespace HZH_Controls.Controls +{ + /// + /// Class UCBtnImg. + /// Implements the + /// + /// + partial class UCBtnImg + { + /// + /// 必需的设计器变量。 + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 清理所有正在使用的资源。 + /// + /// 如果应释放托管资源,为 true;否则为 false。 + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region 组件设计器生成的代码 + + /// + /// 设计器支持所需的方法 - 不要 + /// 使用代码编辑器修改此方法的内容。 + /// + private void InitializeComponent() + { + this.SuspendLayout(); + // + // lbl + // + this.lbl.Image = global::HZH_Controls.Properties.Resources.back; + // + // UCBtnImg + // + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; + this.IsShowTips = true; + this.Name = "UCBtnImg"; + this.ResumeLayout(false); + + } + + #endregion + + } +} diff --git a/UsingControl/HZHControls/Controls/Btn/UCBtnImg.cs b/UsingControl/HZHControls/Controls/Btn/UCBtnImg.cs new file mode 100644 index 0000000..25b0bbb --- /dev/null +++ b/UsingControl/HZHControls/Controls/Btn/UCBtnImg.cs @@ -0,0 +1,129 @@ +// *********************************************************************** +// Assembly : HZH_Controls +// Created : 08-08-2019 +// +// *********************************************************************** +// +// Copyright by Huang Zhenghui(黄正辉) All, QQ group:568015492 QQ:623128629 Email:623128629@qq.com +// +// +// Blog: https://www.cnblogs.com/bfyx +// GitHub:https://github.com/kwwwvagaa/NetWinformControl +// gitee:https://gitee.com/kwwwvagaa/net_winform_custom_control.git +// +// If you use this code, please keep this note. +// *********************************************************************** +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace HZH_Controls.Controls +{ + /// + /// Class UCBtnImg. + /// Implements the + /// + /// + public partial class UCBtnImg : UCBtnExt + { + /// + /// The BTN text + /// + private string _btnText = "自定义按钮"; + /// + /// 按钮文字 + /// + /// The BTN text. + [Description("按钮文字"), Category("自定义")] + public override string BtnText + { + get { return _btnText; } + set + { + _btnText = value; + lbl.Text = value; + lbl.Refresh(); + } + } + /// + /// 图片 + /// + /// The image. + [Description("图片"), Category("自定义")] + public virtual Image Image + { + get + { + return this.lbl.Image; + } + set + { + this.lbl.Image = value; + } + } + + /// + /// The image font icons + /// + private object imageFontIcons; + /// + /// Gets or sets the image font icons. + /// + /// The image font icons. + [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)] + [Editor(typeof(ImagePropertyEditor), typeof(System.Drawing.Design.UITypeEditor))] + public object ImageFontIcons + { + get { return imageFontIcons; } + set + { + if (value == null || value is Image) + { + imageFontIcons = value; + if (value != null) + { + Image = (Image)value; + } + } + } + } + + /// + /// 图片位置 + /// + /// The image align. + [Description("图片位置"), Category("自定义")] + public virtual ContentAlignment ImageAlign + { + get { return this.lbl.ImageAlign; } + set { lbl.ImageAlign = value; } + } + /// + /// 文字位置 + /// + /// The text align. + [Description("文字位置"), Category("自定义")] + public virtual ContentAlignment TextAlign + { + get { return this.lbl.TextAlign; } + set { lbl.TextAlign = value; } + } + + /// + /// Initializes a new instance of the class. + /// + public UCBtnImg() + { + InitializeComponent(); + IsShowTips = false; + base.BtnForeColor = ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + base.BtnFont = new System.Drawing.Font("微软雅黑", 17F); + base.BtnText = "自定义按钮"; + } + } +} diff --git a/UsingControl/HZHControls/Controls/Btn/UCBtnImg.resx b/UsingControl/HZHControls/Controls/Btn/UCBtnImg.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/UsingControl/HZHControls/Controls/Btn/UCBtnImg.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/UsingControl/HZHControls/Controls/Btn/UCDropDownBtn.Designer.cs b/UsingControl/HZHControls/Controls/Btn/UCDropDownBtn.Designer.cs new file mode 100644 index 0000000..a27df1e --- /dev/null +++ b/UsingControl/HZHControls/Controls/Btn/UCDropDownBtn.Designer.cs @@ -0,0 +1,79 @@ +// *********************************************************************** +// Assembly : HZH_Controls +// Created : 08-27-2019 +// +// *********************************************************************** +// +// Copyright by Huang Zhenghui(黄正辉) All, QQ group:568015492 QQ:623128629 Email:623128629@qq.com +// +// +// Blog: https://www.cnblogs.com/bfyx +// GitHub:https://github.com/kwwwvagaa/NetWinformControl +// gitee:https://gitee.com/kwwwvagaa/net_winform_custom_control.git +// +// If you use this code, please keep this note. +// *********************************************************************** +namespace HZH_Controls.Controls +{ + /// + /// Class UCDropDownBtn. + /// Implements the + /// + /// + partial class UCDropDownBtn + { + /// + /// 必需的设计器变量。 + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 清理所有正在使用的资源。 + /// + /// 如果应释放托管资源,为 true;否则为 false。 + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region 组件设计器生成的代码 + + /// + /// 设计器支持所需的方法 - 不要 + /// 使用代码编辑器修改此方法的内容。 + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(UCDropDownBtn)); + this.SuspendLayout(); + // + // lbl + // + this.lbl.Font = new System.Drawing.Font("微软雅黑", 14F); + this.lbl.ForeColor = System.Drawing.Color.White; + this.lbl.ImageAlign = System.Drawing.ContentAlignment.MiddleRight; + this.lbl.ImageList = null; + this.lbl.Text = "自定义按钮"; + this.lbl.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // UCDropDownBtn + // + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; + this.BtnFont = new System.Drawing.Font("微软雅黑", 14F); + this.BtnForeColor = System.Drawing.Color.White; + this.ForeColor = System.Drawing.Color.White; + this.Image = ((System.Drawing.Image)(resources.GetObject("$this.Image"))); + this.ImageAlign = System.Drawing.ContentAlignment.MiddleRight; + this.Margin = new System.Windows.Forms.Padding(2); + this.Name = "UCDropDownBtn"; + this.ResumeLayout(false); + + } + + #endregion + } +} diff --git a/UsingControl/HZHControls/Controls/Btn/UCDropDownBtn.cs b/UsingControl/HZHControls/Controls/Btn/UCDropDownBtn.cs new file mode 100644 index 0000000..e39d75d --- /dev/null +++ b/UsingControl/HZHControls/Controls/Btn/UCDropDownBtn.cs @@ -0,0 +1,211 @@ +// *********************************************************************** +// Assembly : HZH_Controls +// Created : 08-27-2019 +// +// *********************************************************************** +// +// Copyright by Huang Zhenghui(黄正辉) All, QQ group:568015492 QQ:623128629 Email:623128629@qq.com +// +// +// Blog: https://www.cnblogs.com/bfyx +// GitHub:https://github.com/kwwwvagaa/NetWinformControl +// gitee:https://gitee.com/kwwwvagaa/net_winform_custom_control.git +// +// If you use this code, please keep this note. +// *********************************************************************** +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using System.Drawing; +using System.Drawing.Drawing2D; + +namespace HZH_Controls.Controls +{ + /// + /// Class UCDropDownBtn. + /// Implements the + /// + /// + [DefaultEvent("BtnClick")] + public partial class UCDropDownBtn : UCBtnImg + { + /// + /// The FRM anchor + /// + Forms.FrmAnchor _frmAnchor; + /// + /// The drop panel height + /// + private int _dropPanelHeight = -1; + /// + /// 按钮点击事件 + /// + public new event EventHandler BtnClick; + /// + /// 下拉框高度 + /// + /// The height of the drop panel. + [Description("下拉框高度"), Category("自定义")] + public int DropPanelHeight + { + get { return _dropPanelHeight; } + set { _dropPanelHeight = value; } + } + /// + /// The BTNS + /// + private string[] btns; + /// + /// 需要显示的按钮文字 + /// + /// The BTNS. + [Description("需要显示的按钮文字"), Category("自定义")] + public string[] Btns + { + get { return btns; } + set { btns = value; } + } + /// + /// 图片 + /// + /// The image. + [Obsolete("不再可用的属性")] + [Browsable(false), EditorBrowsable(EditorBrowsableState.Never)] + public override Image Image + { + get; + set; + } + /// + /// 图片位置 + /// + /// The image align. + [Obsolete("不再可用的属性")] + [Browsable(false), EditorBrowsable(EditorBrowsableState.Never)] + public override ContentAlignment ImageAlign + { + get; + set; + } + /// + /// 按钮字体颜色 + /// + /// The color of the BTN fore. + [Description("按钮字体颜色"), Category("自定义")] + public override Color BtnForeColor + { + get + { + return base.BtnForeColor; + } + set + { + base.BtnForeColor = value; + Bitmap bit = new Bitmap(12, 10); + Graphics g = Graphics.FromImage(bit); + g.SetGDIHigh(); + GraphicsPath path = new GraphicsPath(); + path.AddLines(new Point[] + { + new Point(1,1), + new Point(11,1), + new Point(6,10), + new Point(1,1) + }); + g.FillPath(new SolidBrush(value), path); + g.Dispose(); + this.lbl.Image = bit; + } + } + + /// + /// Initializes a new instance of the class. + /// + public UCDropDownBtn() + { + InitializeComponent(); + IsShowTips = false; + this.lbl.ImageAlign = ContentAlignment.MiddleRight; + base.BtnClick += UCDropDownBtn_BtnClick; + } + + /// + /// Handles the BtnClick event of the UCDropDownBtn control. + /// + /// The source of the event. + /// The instance containing the event data. + void UCDropDownBtn_BtnClick(object sender, EventArgs e) + { + if (_frmAnchor == null || _frmAnchor.IsDisposed || _frmAnchor.Visible == false) + { + + if (Btns != null && Btns.Length > 0) + { + int intRow = 0; + int intCom = 1; + var p = this.PointToScreen(this.Location); + while (true) + { + int intScreenHeight = Screen.PrimaryScreen.Bounds.Height; + if ((p.Y + this.Height + Btns.Length / intCom * 50 < intScreenHeight || p.Y - Btns.Length / intCom * 50 > 0) + && (_dropPanelHeight <= 0 ? true : (Btns.Length / intCom * 50 <= _dropPanelHeight))) + { + intRow = Btns.Length / intCom + (Btns.Length % intCom != 0 ? 1 : 0); + break; + } + intCom++; + } + UCTimePanel ucTime = new UCTimePanel(); + ucTime.IsShowBorder = true; + int intWidth = this.Width / intCom; + + Size size = new Size(intCom * intWidth, intRow * 50); + ucTime.Size = size; + ucTime.FirstEvent = true; + ucTime.SelectSourceEvent += ucTime_SelectSourceEvent; + ucTime.Row = intRow; + ucTime.Column = intCom; + + List> lst = new List>(); + foreach (var item in Btns) + { + lst.Add(new KeyValuePair(item, item)); + } + ucTime.Source = lst; + + _frmAnchor = new Forms.FrmAnchor(this, ucTime); + _frmAnchor.Load += (a, b) => { (a as Form).Size = size; }; + + _frmAnchor.Show(this.FindForm()); + + } + } + else + { + _frmAnchor.Close(); + } + } + /// + /// Handles the SelectSourceEvent event of the ucTime control. + /// + /// The source of the event. + /// The instance containing the event data. + void ucTime_SelectSourceEvent(object sender, EventArgs e) + { + if (_frmAnchor != null && !_frmAnchor.IsDisposed && _frmAnchor.Visible) + { + _frmAnchor.Close(); + + if (BtnClick != null) + { + BtnClick(sender.ToString(), e); + } + } + } + } +} diff --git a/UsingControl/HZHControls/Controls/Btn/UCDropDownBtn.resx b/UsingControl/HZHControls/Controls/Btn/UCDropDownBtn.resx new file mode 100644 index 0000000..7d5161d --- /dev/null +++ b/UsingControl/HZHControls/Controls/Btn/UCDropDownBtn.resx @@ -0,0 +1,131 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + iVBORw0KGgoAAAANSUhEUgAAAA4AAAAYCAYAAADKx8xXAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAD0SURBVDhPjZLtDcIwDES9Ezt1py7AMCgrdIGKH3SC0OfE + JZ/FJxmR+E55livP1ycua4iPJboKLxnZti0HPeFwemPc9z3KcRx68AbX04uEHw4eXB4A8wqmOcfmsvCE + oLkoCOb/uAlT5zMxp+IOA6noQYY3x6TAnb/YYSIOXN7NaZhdkEuaoxBlmFUQcaG4g5DN14UQlzNcne+t + uT6Ifmupq1tDK2YAqd5n+qirNbQCBdzyNea7xUQ0MZW4/O/W0Ipmu5bpGlrVc4b+a5kJk+G6ME2YbC2U + CxNhMlzKlNtzZZ/i2hpQbt8LI6+6MU3qLpSvC4l8ASkgxV0fp9H6AAAAAElFTkSuQmCC + + + \ No newline at end of file diff --git a/UsingControl/HZHControls/Controls/BtnsGroup/UCBtnsGroup.Designer.cs b/UsingControl/HZHControls/Controls/BtnsGroup/UCBtnsGroup.Designer.cs new file mode 100644 index 0000000..37da5dd --- /dev/null +++ b/UsingControl/HZHControls/Controls/BtnsGroup/UCBtnsGroup.Designer.cs @@ -0,0 +1,81 @@ +// *********************************************************************** +// Assembly : HZH_Controls +// Created : 08-15-2019 +// +// *********************************************************************** +// +// Copyright by Huang Zhenghui(黄正辉) All, QQ group:568015492 QQ:623128629 Email:623128629@qq.com +// +// +// Blog: https://www.cnblogs.com/bfyx +// GitHub:https://github.com/kwwwvagaa/NetWinformControl +// gitee:https://gitee.com/kwwwvagaa/net_winform_custom_control.git +// +// If you use this code, please keep this note. +// *********************************************************************** +namespace HZH_Controls.Controls +{ + /// + /// Class UCBtnsGroup. + /// Implements the + /// + /// + partial class UCBtnsGroup + { + /// + /// 必需的设计器变量。 + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 清理所有正在使用的资源。 + /// + /// 如果应释放托管资源,为 true;否则为 false。 + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region 组件设计器生成的代码 + + /// + /// 设计器支持所需的方法 - 不要 + /// 使用代码编辑器修改此方法的内容。 + /// + private void InitializeComponent() + { + this.flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel(); + this.SuspendLayout(); + // + // flowLayoutPanel1 + // + this.flowLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.flowLayoutPanel1.Location = new System.Drawing.Point(0, 0); + this.flowLayoutPanel1.Name = "flowLayoutPanel1"; + this.flowLayoutPanel1.Size = new System.Drawing.Size(420, 50); + this.flowLayoutPanel1.TabIndex = 0; + // + // UCBtnsGroup + // + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; + this.BackColor = System.Drawing.Color.White; + this.Controls.Add(this.flowLayoutPanel1); + this.MinimumSize = new System.Drawing.Size(0, 50); + this.Name = "UCBtnsGroup"; + this.Size = new System.Drawing.Size(420, 50); + this.ResumeLayout(false); + + } + + #endregion + + /// + /// The flow layout panel1 + /// + private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel1; + } +} diff --git a/UsingControl/HZHControls/Controls/BtnsGroup/UCBtnsGroup.cs b/UsingControl/HZHControls/Controls/BtnsGroup/UCBtnsGroup.cs new file mode 100644 index 0000000..26ccca6 --- /dev/null +++ b/UsingControl/HZHControls/Controls/BtnsGroup/UCBtnsGroup.cs @@ -0,0 +1,229 @@ +// *********************************************************************** +// Assembly : HZH_Controls +// Created : 08-15-2019 +// +// *********************************************************************** +// +// Copyright by Huang Zhenghui(黄正辉) All, QQ group:568015492 QQ:623128629 Email:623128629@qq.com +// +// +// Blog: https://www.cnblogs.com/bfyx +// GitHub:https://github.com/kwwwvagaa/NetWinformControl +// gitee:https://gitee.com/kwwwvagaa/net_winform_custom_control.git +// +// If you use this code, please keep this note. +// *********************************************************************** +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace HZH_Controls.Controls +{ + /// + /// Class UCBtnsGroup. + /// Implements the + /// + /// + public partial class UCBtnsGroup : UserControl + { + /// + /// 选中改变事件 + /// + [Description("选中改变事件"), Category("自定义")] + public event EventHandler SelectedItemChanged; + /// + /// The m data source + /// + private Dictionary m_dataSource = new Dictionary(); + /// + /// 数据源 + /// + /// The data source. + [Description("数据源"), Category("自定义")] + public Dictionary DataSource + { + get { return m_dataSource; } + set + { + m_dataSource = value; + Reload(); + } + } + + /// + /// The m select item + /// + private List m_selectItem = new List(); + /// + /// 选中项 + /// + /// The select item. + [Description("选中项"), Category("自定义")] + public List SelectItem + { + get { return m_selectItem; } + set + { + m_selectItem = value; + if (m_selectItem == null) + m_selectItem = new List(); + SetSelected(); + } + } + + /// + /// The m is multiple + /// + private bool m_isMultiple = false; + /// + /// 是否多选 + /// + /// true if this instance is multiple; otherwise, false. + [Description("是否多选"), Category("自定义")] + public bool IsMultiple + { + get { return m_isMultiple; } + set { m_isMultiple = value; } + } + /// + /// Initializes a new instance of the class. + /// + public UCBtnsGroup() + { + InitializeComponent(); + } + + /// + /// Reloads this instance. + /// + private void Reload() + { + try + { + ControlHelper.FreezeControl(flowLayoutPanel1, true); + this.flowLayoutPanel1.Controls.Clear(); + if (DataSource != null) + { + foreach (var item in DataSource) + { + UCBtnExt btn = new UCBtnExt(); + btn.BackColor = System.Drawing.Color.Transparent; + btn.BtnBackColor = System.Drawing.Color.White; + btn.BtnFont = new System.Drawing.Font("微软雅黑", 10F); + btn.BtnForeColor = System.Drawing.Color.Gray; + btn.BtnText = item.Value; + btn.ConerRadius = 5; + btn.Cursor = System.Windows.Forms.Cursors.Hand; + btn.FillColor = System.Drawing.Color.White; + btn.Font = new System.Drawing.Font("微软雅黑", 15F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel); + btn.IsRadius = true; + btn.IsShowRect = true; + btn.IsShowTips = false; + btn.Location = new System.Drawing.Point(5, 5); + btn.Margin = new System.Windows.Forms.Padding(5); + btn.Name = item.Key; + btn.RectColor = System.Drawing.Color.FromArgb(224, 224, 224); + btn.RectWidth = 1; + btn.Size = new System.Drawing.Size(72, 38); + btn.TabStop = false; + btn.BtnClick += btn_BtnClick; + this.flowLayoutPanel1.Controls.Add(btn); + } + } + } + finally + { + ControlHelper.FreezeControl(flowLayoutPanel1, false); + } + SetSelected(); + } + + /// + /// Handles the BtnClick event of the btn control. + /// + /// The source of the event. + /// The instance containing the event data. + void btn_BtnClick(object sender, EventArgs e) + { + var btn = sender as UCBtnExt; + if (m_selectItem.Contains(btn.Name)) + { + btn.RectColor = System.Drawing.Color.FromArgb(224, 224, 224); + m_selectItem.Remove(btn.Name); + } + else + { + if (!m_isMultiple) + { + foreach (var item in m_selectItem) + { + var lst = this.flowLayoutPanel1.Controls.Find(item, false); + if (lst.Length == 1) + { + var _btn = lst[0] as UCBtnExt; + _btn.RectColor = System.Drawing.Color.FromArgb(224, 224, 224); + } + } + m_selectItem.Clear(); + } + btn.RectColor = System.Drawing.Color.FromArgb(255, 77, 59); + m_selectItem.Add(btn.Name); + } + if (SelectedItemChanged != null) + SelectedItemChanged(this, e); + } + + /// + /// Sets the selected. + /// + private void SetSelected() + { + if (m_selectItem != null && m_selectItem.Count > 0 && DataSource != null && DataSource.Count > 0) + { + try + { + ControlHelper.FreezeControl(flowLayoutPanel1, true); + if (m_isMultiple) + { + foreach (var item in m_selectItem) + { + var lst = this.flowLayoutPanel1.Controls.Find(item, false); + if (lst.Length == 1) + { + var btn = lst[0] as UCBtnExt; + btn.RectColor = System.Drawing.Color.FromArgb(255, 77, 59); + } + } + } + else + { + UCBtnExt btn = null; + foreach (var item in m_selectItem) + { + var lst = this.flowLayoutPanel1.Controls.Find(item, false); + if (lst.Length == 1) + { + btn = lst[0] as UCBtnExt; + break; + } + } + if (btn != null) + { + m_selectItem = new List() { btn.Name }; + btn.RectColor = System.Drawing.Color.FromArgb(255, 77, 59); + } + } + } + finally + { + ControlHelper.FreezeControl(flowLayoutPanel1, false); + } + } + } + } +} diff --git a/UsingControl/HZHControls/Controls/BtnsGroup/UCBtnsGroup.resx b/UsingControl/HZHControls/Controls/BtnsGroup/UCBtnsGroup.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/UsingControl/HZHControls/Controls/BtnsGroup/UCBtnsGroup.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/UsingControl/HZHControls/Controls/Charts/AuxiliaryLable.cs b/UsingControl/HZHControls/Controls/Charts/AuxiliaryLable.cs new file mode 100644 index 0000000..7af33dc --- /dev/null +++ b/UsingControl/HZHControls/Controls/Charts/AuxiliaryLable.cs @@ -0,0 +1,38 @@ +using System.Drawing; + +namespace HZH_Controls.Controls +{ + public class AuxiliaryLable + { + public string Text + { + get; + set; + } + + public Brush TextBrush + { + get; + set; + } + + public Brush TextBack + { + get; + set; + } + + public float LocationX + { + get; + set; + } + + public AuxiliaryLable() + { + TextBrush = Brushes.Black; + TextBack = Brushes.Transparent; + LocationX = 0.5f; + } + } +} diff --git a/UsingControl/HZHControls/Controls/Charts/AuxiliaryLine.cs b/UsingControl/HZHControls/Controls/Charts/AuxiliaryLine.cs new file mode 100644 index 0000000..6b771df --- /dev/null +++ b/UsingControl/HZHControls/Controls/Charts/AuxiliaryLine.cs @@ -0,0 +1,122 @@ +// *********************************************************************** +// Assembly : HZH_Controls +// Created : 2019-09-17 +// +// *********************************************************************** +// +// Copyright by Huang Zhenghui() All, QQ group:568015492 QQ:623128629 Email:623128629@qq.com +// +// +// Blog: https://www.cnblogs.com/bfyx +// GitHubhttps://github.com/kwwwvagaa/NetWinformControl +// giteehttps://gitee.com/kwwwvagaa/net_winform_custom_control.git +// +// If you use this code, please keep this note. +// *********************************************************************** +using System; +using System.Drawing; + +namespace HZH_Controls.Controls +{ + /// + /// Class AuxiliaryLine. + /// Implements the + /// + /// + internal class AuxiliaryLine : IDisposable + { + private bool disposedValue = false; + + public float Value + { + get; + set; + } + + public float PaintValue + { + get; + set; + } + + public float PaintValueBackUp + { + get; + set; + } + + public Color LineColor + { + get; + set; + } + + public Pen PenDash + { + get; + set; + } + + public Pen PenSolid + { + get; + set; + } + + public float LineThickness + { + get; + set; + } + + public Brush LineTextBrush + { + get; + set; + } + + public bool IsLeftFrame + { + get; + set; + } + + private bool isDashStyle = true; + + public bool IsDashStyle + { + get { return isDashStyle; } + set { isDashStyle = value; } + } + + + public Pen GetPen() + { + return IsDashStyle ? PenDash : PenSolid; + } + + protected virtual void Dispose(bool disposing) + { + if (!disposedValue) + { + if (disposing) + { + if(PenDash==null) + PenDash.Dispose(); + if(PenSolid==null) + PenSolid.Dispose(); + if(LineTextBrush==null) + LineTextBrush.Dispose(); + } + disposedValue = true; + } + } + + public string Tip { get; set; } + + public void Dispose() + { + Dispose(true); + } + } +} diff --git a/UsingControl/HZHControls/Controls/Charts/FunnelChart/FunelChartAlignment.cs b/UsingControl/HZHControls/Controls/Charts/FunnelChart/FunelChartAlignment.cs new file mode 100644 index 0000000..c13398e --- /dev/null +++ b/UsingControl/HZHControls/Controls/Charts/FunnelChart/FunelChartAlignment.cs @@ -0,0 +1,41 @@ +// *********************************************************************** +// Assembly : HZH_Controls +// Created : 2019-09-26 +// +// *********************************************************************** +// +// Copyright by Huang Zhenghui(黄正辉) All, QQ group:568015492 QQ:623128629 Email:623128629@qq.com +// +// +// Blog: https://www.cnblogs.com/bfyx +// GitHub:https://github.com/kwwwvagaa/NetWinformControl +// gitee:https://gitee.com/kwwwvagaa/net_winform_custom_control.git +// +// If you use this code, please keep this note. +// *********************************************************************** +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace HZH_Controls.Controls +{ + /// + /// Enum FunelChartAlignment + /// + public enum FunelChartAlignment + { + /// + /// The left + /// + Left, + /// + /// The center + /// + Center, + /// + /// The right + /// + Right + } +} diff --git a/UsingControl/HZHControls/Controls/Charts/FunnelChart/FunelChartDirection.cs b/UsingControl/HZHControls/Controls/Charts/FunnelChart/FunelChartDirection.cs new file mode 100644 index 0000000..be0843f --- /dev/null +++ b/UsingControl/HZHControls/Controls/Charts/FunnelChart/FunelChartDirection.cs @@ -0,0 +1,37 @@ +// *********************************************************************** +// Assembly : HZH_Controls +// Created : 2019-09-26 +// +// *********************************************************************** +// +// Copyright by Huang Zhenghui(黄正辉) All, QQ group:568015492 QQ:623128629 Email:623128629@qq.com +// +// +// Blog: https://www.cnblogs.com/bfyx +// GitHub:https://github.com/kwwwvagaa/NetWinformControl +// gitee:https://gitee.com/kwwwvagaa/net_winform_custom_control.git +// +// If you use this code, please keep this note. +// *********************************************************************** +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace HZH_Controls.Controls +{ + /// + /// Enum FunelChartDirection + /// + public enum FunelChartDirection + { + /// + /// Up + /// + UP, + /// + /// Down + /// + Down + } +} diff --git a/UsingControl/HZHControls/Controls/Charts/FunnelChart/FunelChartItem.cs b/UsingControl/HZHControls/Controls/Charts/FunnelChart/FunelChartItem.cs new file mode 100644 index 0000000..cb1cfb8 --- /dev/null +++ b/UsingControl/HZHControls/Controls/Charts/FunnelChart/FunelChartItem.cs @@ -0,0 +1,49 @@ +// *********************************************************************** +// Assembly : HZH_Controls +// Created : 2019-09-26 +// +// *********************************************************************** +// +// Copyright by Huang Zhenghui(黄正辉) All, QQ group:568015492 QQ:623128629 Email:623128629@qq.com +// +// +// Blog: https://www.cnblogs.com/bfyx +// GitHub:https://github.com/kwwwvagaa/NetWinformControl +// gitee:https://gitee.com/kwwwvagaa/net_winform_custom_control.git +// +// If you use this code, please keep this note. +// *********************************************************************** +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace HZH_Controls.Controls +{ + /// + /// Class FunelChartItem. + /// + public class FunelChartItem + { + /// + /// Gets or sets the text. + /// + /// The text. + public string Text { get; set; } + /// + /// Gets or sets the value. + /// + /// The value. + public float Value { get; set; } + /// + /// Gets or sets the color of the value. + /// + /// The color of the value. + public System.Drawing.Color? ValueColor { get; set; } + /// + /// Gets or sets the color of the text fore. + /// + /// The color of the text fore. + public System.Drawing.Color? TextForeColor { get; set; } + } +} diff --git a/UsingControl/HZHControls/Controls/Charts/FunnelChart/UCFunnelChart.cs b/UsingControl/HZHControls/Controls/Charts/FunnelChart/UCFunnelChart.cs new file mode 100644 index 0000000..7cb6040 --- /dev/null +++ b/UsingControl/HZHControls/Controls/Charts/FunnelChart/UCFunnelChart.cs @@ -0,0 +1,506 @@ +// *********************************************************************** +// Assembly : HZH_Controls +// Created : 2019-09-26 +// +// *********************************************************************** +// +// Copyright by Huang Zhenghui(黄正辉) All, QQ group:568015492 QQ:623128629 Email:623128629@qq.com +// +// +// Blog: https://www.cnblogs.com/bfyx +// GitHub:https://github.com/kwwwvagaa/NetWinformControl +// gitee:https://gitee.com/kwwwvagaa/net_winform_custom_control.git +// +// If you use this code, please keep this note. +// *********************************************************************** +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using System.Drawing; +using System.Drawing.Drawing2D; +using System.ComponentModel; + +namespace HZH_Controls.Controls +{ + /// + /// Class UCFunnelChart. + /// Implements the + /// + /// + public class UCFunnelChart : UserControl + { + /// + /// The title + /// + private string title; + /// + /// Gets or sets the title. + /// + /// The title. + [Browsable(true)] + [Category("自定义")] + [Description("获取或设置标题")] + public string Title + { + get { return title; } + set + { + title = value; + ResetTitleSize(); + Invalidate(); + } + } + + /// + /// The title font + /// + private Font titleFont = new Font("微软雅黑", 12); + /// + /// Gets or sets the title font. + /// + /// The title font. + [Browsable(true)] + [Category("自定义")] + [Description("获取或设置标题字体")] + public Font TitleFont + { + get { return titleFont; } + set + { + titleFont = value; + ResetTitleSize(); + Invalidate(); + } + } + + /// + /// The title fore color + /// + private Color titleForeColor = Color.Black; + /// + /// Gets or sets the color of the title fore. + /// + /// The color of the title fore. + [Browsable(true)] + [Category("自定义")] + [Description("获取或设置标题文字颜色")] + public Color TitleForeColor + { + get { return titleForeColor; } + set + { + titleForeColor = value; + Invalidate(); + } + } + /// + /// The items + /// + private FunelChartItem[] items; + /// + /// Gets or sets the items. + /// + /// The items. + [Browsable(true)] + [Category("自定义")] + [Description("获取或设置项目")] + public FunelChartItem[] Items + { + get { return items; } + set + { + items = value; + Invalidate(); + } + } + + /// + /// The direction + /// + private FunelChartDirection direction = FunelChartDirection.UP; + /// + /// Gets or sets the direction. + /// + /// The direction. + [Browsable(true)] + [Category("自定义")] + [Description("获取或设置方向")] + public FunelChartDirection Direction + { + get { return direction; } + set + { + direction = value; + Invalidate(); + } + } + + /// + /// The alignment + /// + private FunelChartAlignment alignment = FunelChartAlignment.Center; + /// + /// Gets or sets the alignment. + /// + /// The alignment. + [Browsable(true)] + [Category("自定义")] + [Description("获取或设置对齐方式")] + public FunelChartAlignment Alignment + { + get { return alignment; } + set + { + alignment = value; + Invalidate(); + } + } + + /// + /// The item text align + /// + private FunelChartAlignment itemTextAlign = FunelChartAlignment.Center; + /// + /// Gets or sets the item text align. + /// + /// The item text align. + [Browsable(true)] + [Category("自定义")] + [Description("获取或设置文字位置")] + public FunelChartAlignment ItemTextAlign + { + get { return itemTextAlign; } + set + { + itemTextAlign = value; + ResetWorkingRect(); + Invalidate(); + } + } + /// + /// The show value + /// + private bool showValue = false; + /// + /// Gets or sets a value indicating whether [show value]. + /// + /// true if [show value]; otherwise, false. + [Browsable(true)] + [Category("自定义")] + [Description("获取或设置是否显示值")] + public bool ShowValue + { + get { return showValue; } + set + { + showValue = value; + Invalidate(); + } + } + + + /// + /// The value format + /// + private string valueFormat = "0.##"; + /// + /// Gets or sets the value format. + /// + /// The value format. + [Browsable(true)] + [Category("自定义")] + [Description("获取或设置值格式化")] + public string ValueFormat + { + get { return valueFormat; } + set + { + valueFormat = value; + Invalidate(); + } + } + + /// + /// The m rect working + /// + RectangleF m_rectWorking; + /// + /// The m title size + /// + SizeF m_titleSize = SizeF.Empty; + /// + /// The int split width + /// + int intSplitWidth = 1; + + /// + /// Initializes a new instance of the class. + /// + public UCFunnelChart() + { + this.SetStyle(ControlStyles.AllPaintingInWmPaint, true); + this.SetStyle(ControlStyles.DoubleBuffer, true); + this.SetStyle(ControlStyles.ResizeRedraw, true); + this.SetStyle(ControlStyles.Selectable, true); + this.SetStyle(ControlStyles.SupportsTransparentBackColor, true); + this.SetStyle(ControlStyles.UserPaint, true); + this.FontChanged += UCFunnelChart_FontChanged; + Font = new Font("微软雅黑", 8); + + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; + this.SizeChanged += UCFunnelChart_SizeChanged; + Size = new System.Drawing.Size(150, 150); + items = new FunelChartItem[0]; + if (ControlHelper.IsDesignMode()) + { + items = new FunelChartItem[5]; + for (int i = 0; i < 5; i++) + { + items[i] = new FunelChartItem() + { + Text = "item" + i, + Value = 10 * (i + 1) + }; + } + } + } + + /// + /// Handles the FontChanged event of the UCFunnelChart control. + /// + /// The source of the event. + /// The instance containing the event data. + void UCFunnelChart_FontChanged(object sender, EventArgs e) + { + ResetWorkingRect(); + } + + /// + /// Handles the SizeChanged event of the UCFunnelChart control. + /// + /// The source of the event. + /// The instance containing the event data. + void UCFunnelChart_SizeChanged(object sender, EventArgs e) + { + ResetWorkingRect(); + } + + /// + /// Resets the working rect. + /// + private void ResetWorkingRect() + { + if (itemTextAlign == FunelChartAlignment.Center) + { + m_rectWorking = new RectangleF(0, m_titleSize.Height == 0 ? 0 : (m_titleSize.Height + 10), this.Width, this.Height - (m_titleSize.Height == 0 ? 0 : (m_titleSize.Height + 10))); + } + else if (itemTextAlign == FunelChartAlignment.Left) + { + float fltMax = 0; + if (items != null && items.Length > 0) + { + using (Graphics g = this.CreateGraphics()) + { + fltMax = items.Max(p => g.MeasureString(p.Text, Font).Width); + } + } + m_rectWorking = new RectangleF(fltMax, m_titleSize.Height == 0 ? 0 : (m_titleSize.Height + 10), this.Width - fltMax, this.Height - (m_titleSize.Height == 0 ? 0 : (m_titleSize.Height + 10))); + } + else + { + float fltMax = 0; + if (items != null && items.Length > 0) + { + using (Graphics g = this.CreateGraphics()) + { + fltMax = items.Max(p => g.MeasureString(p.Text, Font).Width); + } + } + m_rectWorking = new RectangleF(0, m_titleSize.Height == 0 ? 0 : (m_titleSize.Height + 10), this.Width - fltMax, this.Height - (m_titleSize.Height == 0 ? 0 : (m_titleSize.Height + 10))); + } + } + + /// + /// Resets the size of the title. + /// + private void ResetTitleSize() + { + if (string.IsNullOrEmpty(title)) + { + m_titleSize = SizeF.Empty; + } + else + { + using (Graphics g = this.CreateGraphics()) + { + m_titleSize = g.MeasureString(title, titleFont); + m_titleSize.Height += 20; + } + } + ResetWorkingRect(); + } + + /// + /// 引发 事件。 + /// + /// 包含事件数据的 。 + protected override void OnPaint(PaintEventArgs e) + { + base.OnPaint(e); + var g = e.Graphics; + g.SetGDIHigh(); + + if (!string.IsNullOrEmpty(title)) + { + g.DrawString(title, titleFont, new SolidBrush(titleForeColor), new RectangleF(0, 0, this.Width, m_titleSize.Height), new StringFormat() { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center }); + } + + if (items == null || items.Length <= 0) + { + g.DrawString("没有数据", Font, new SolidBrush(Color.Black), this.m_rectWorking, new StringFormat() { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center }); + return; + } + + List lstItems; + if (direction == FunelChartDirection.UP) + { + lstItems = items.OrderBy(p => p.Value).ToList(); + } + else + { + lstItems = items.OrderByDescending(p => p.Value).ToList(); + } + + List lstRects = new List(); + List lstPaths = new List(); + float maxValue = lstItems.Max(p => p.Value); + float dblSplitHeight = m_rectWorking.Height / lstItems.Count; + for (int i = 0; i < lstItems.Count; i++) + { + FunelChartItem item = lstItems[i]; + if (item.ValueColor == null || item.ValueColor == Color.Empty || item.ValueColor == Color.Transparent) + item.ValueColor = ControlHelper.Colors[i]; + + switch (alignment) + { + case FunelChartAlignment.Left: + lstRects.Add(new RectangleF(m_rectWorking.Left, m_rectWorking.Top + dblSplitHeight * i, item.Value / maxValue * m_rectWorking.Width, dblSplitHeight)); + break; + case FunelChartAlignment.Center: + lstRects.Add(new RectangleF(m_rectWorking.Left + (m_rectWorking.Width - (item.Value / maxValue * m_rectWorking.Width)) / 2, m_rectWorking.Top + dblSplitHeight * i, item.Value / maxValue * m_rectWorking.Width, dblSplitHeight)); + break; + case FunelChartAlignment.Right: + lstRects.Add(new RectangleF(m_rectWorking.Right - (item.Value / maxValue * m_rectWorking.Width), m_rectWorking.Top + dblSplitHeight * i, item.Value / maxValue * m_rectWorking.Width, dblSplitHeight)); + break; + } + } + + for (int i = 0; i < lstRects.Count; i++) + { + var rect = lstRects[i]; + GraphicsPath path = new GraphicsPath(); + List lstPoints = new List(); + if (direction == FunelChartDirection.UP) + { + switch (alignment) + { + case FunelChartAlignment.Left: + lstPoints.Add(new PointF(rect.Left, rect.Top)); + if (i != 0) + { + lstPoints.Add(new PointF(lstRects[i - 1].Right, rect.Top)); + } + break; + case FunelChartAlignment.Center: + if (i == 0) + { + lstPoints.Add(new PointF(rect.Left + rect.Width / 2, rect.Top)); + } + else + { + lstPoints.Add(new PointF(lstRects[i - 1].Left, rect.Top)); + lstPoints.Add(new PointF(lstRects[i - 1].Right, rect.Top)); + } + break; + case FunelChartAlignment.Right: + if (i == 0) + { + lstPoints.Add(new PointF(rect.Right, rect.Top)); + } + else + { + lstPoints.Add(new PointF(rect.Right - lstRects[i - 1].Width, rect.Top)); + lstPoints.Add(new PointF(rect.Right, rect.Top)); + } + break; + } + lstPoints.Add(new PointF(rect.Right, rect.Bottom - intSplitWidth)); + lstPoints.Add(new PointF(rect.Left, rect.Bottom - intSplitWidth)); + } + else + { + lstPoints.Add(new PointF(rect.Left, rect.Top + intSplitWidth)); + lstPoints.Add(new PointF(rect.Right, rect.Top + intSplitWidth)); + switch (alignment) + { + case FunelChartAlignment.Left: + if (i == lstRects.Count - 1) + { + lstPoints.Add(new PointF(rect.Left, rect.Bottom)); + } + else + { + lstPoints.Add(new PointF(lstRects[i + 1].Right, rect.Bottom)); + lstPoints.Add(new PointF(rect.Left, rect.Bottom)); + } + break; + case FunelChartAlignment.Center: + if (i == lstRects.Count - 1) + { + lstPoints.Add(new PointF(rect.Left + rect.Width / 2, rect.Bottom)); + } + else + { + lstPoints.Add(new PointF(lstRects[i + 1].Right, rect.Bottom)); + lstPoints.Add(new PointF(lstRects[i + 1].Left, rect.Bottom)); + } + break; + case FunelChartAlignment.Right: + if (i == lstRects.Count - 1) + { + lstPoints.Add(new PointF(rect.Right, rect.Bottom)); + } + else + { + lstPoints.Add(new PointF(rect.Right, rect.Bottom)); + lstPoints.Add(new PointF(lstRects[i + 1].Left, rect.Bottom)); + } + break; + } + } + path.AddLines(lstPoints.ToArray()); + path.CloseAllFigures(); + // g.DrawPath(new Pen(new SolidBrush(lstItems[i].ValueColor.Value)), path); + g.FillPath(new SolidBrush(lstItems[i].ValueColor.Value), path); + + //写字 + if (itemTextAlign == FunelChartAlignment.Center) + { + g.DrawString(lstItems[i].Text + (ShowValue ? lstItems[i].Value.ToString("\n" + valueFormat) : ""), Font, new SolidBrush((lstItems[i].TextForeColor == null || lstItems[i].TextForeColor == Color.Empty || lstItems[i].TextForeColor == Color.Transparent) ? Color.White : lstItems[i].TextForeColor.Value), rect, new StringFormat() { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center }); + } + else if (itemTextAlign == FunelChartAlignment.Left) + { + g.DrawString(lstItems[i].Text + (ShowValue ? lstItems[i].Value.ToString("\n" + valueFormat) : ""), Font, new SolidBrush((lstItems[i].TextForeColor == null || lstItems[i].TextForeColor == Color.Empty || lstItems[i].TextForeColor == Color.Transparent) ? lstItems[i].ValueColor.Value : lstItems[i].TextForeColor.Value), new RectangleF(0, rect.Top, rect.Left, rect.Height), new StringFormat() { Alignment = StringAlignment.Far, LineAlignment = StringAlignment.Center }); + g.DrawLine(new Pen(new SolidBrush((lstItems[i].TextForeColor == null || lstItems[i].TextForeColor == Color.Empty || lstItems[i].TextForeColor == Color.Transparent) ? lstItems[i].ValueColor.Value : lstItems[i].TextForeColor.Value)), rect.Left, rect.Top + rect.Height / 2, rect.Left + rect.Width / 2, rect.Top + rect.Height / 2); + } + else + { + g.DrawString(lstItems[i].Text + (ShowValue ? lstItems[i].Value.ToString("\n" + valueFormat) : ""), Font, new SolidBrush((lstItems[i].TextForeColor == null || lstItems[i].TextForeColor == Color.Empty || lstItems[i].TextForeColor == Color.Transparent) ? lstItems[i].ValueColor.Value : lstItems[i].TextForeColor.Value), new RectangleF(rect.Right, rect.Top, this.Width - rect.Right, rect.Height), new StringFormat() { Alignment = StringAlignment.Near, LineAlignment = StringAlignment.Center }); + g.DrawLine(new Pen(new SolidBrush((lstItems[i].TextForeColor == null || lstItems[i].TextForeColor == Color.Empty || lstItems[i].TextForeColor == Color.Transparent) ? lstItems[i].ValueColor.Value : lstItems[i].TextForeColor.Value)), rect.Left + rect.Width / 2, rect.Top + rect.Height / 2, rect.Right, rect.Top + rect.Height / 2); + } + } + } + } +} diff --git a/UsingControl/HZHControls/Controls/Charts/MarkText.cs b/UsingControl/HZHControls/Controls/Charts/MarkText.cs new file mode 100644 index 0000000..52d6655 --- /dev/null +++ b/UsingControl/HZHControls/Controls/Charts/MarkText.cs @@ -0,0 +1,113 @@ +// *********************************************************************** +// Assembly : HZH_Controls +// Created : 2019-09-23 +// +// *********************************************************************** +// +// Copyright by Huang Zhenghui() All, QQ group:568015492 QQ:623128629 Email:623128629@qq.com +// +// +// Blog: https://www.cnblogs.com/bfyx +// GitHubhttps://github.com/kwwwvagaa/NetWinformControl +// giteehttps://gitee.com/kwwwvagaa/net_winform_custom_control.git +// +// If you use this code, please keep this note. +// *********************************************************************** +using System.Drawing; + +namespace HZH_Controls.Controls +{ + /// + /// Class MarkText. + /// + public class MarkText + { + /// + /// The mark text offect + /// + public static readonly int MarkTextOffect = 5; + + /// + /// Gets or sets the curve key. + /// + /// The curve key. + public string CurveKey + { + get; + set; + } + + /// + /// Gets or sets the index. + /// + /// The index. + public int Index + { + get; + set; + } + + /// + /// Gets or sets the mark text. + /// + /// The mark text. + public string Text + { + get; + set; + } + + private Color? textColor = null; + + public Color? TextColor + { + get { return textColor; } + set { textColor = value; } + } + + + /// + /// The position style + /// + private MarkTextPositionStyle positionStyle = MarkTextPositionStyle.Auto; + + /// + /// Gets or sets the position style. + /// + /// The position style. + public MarkTextPositionStyle PositionStyle + { + get { return positionStyle; } + set { positionStyle = value; } + } + + /// + /// Calculates the index of the direction from data. + /// + /// The data. + /// The index. + /// MarkTextPositionStyle. + public static MarkTextPositionStyle CalculateDirectionFromDataIndex(float[] data, int Index) + { + float num = (Index == 0) ? data[Index] : data[Index - 1]; + float num2 = (Index == data.Length - 1) ? data[Index] : data[Index + 1]; + if (num < data[Index] && data[Index] < num2) + { + return MarkTextPositionStyle.Left; + } + if (num > data[Index] && data[Index] > num2) + { + return MarkTextPositionStyle.Right; + } + if (num <= data[Index] && data[Index] >= num2) + { + return MarkTextPositionStyle.Up; + } + if (num >= data[Index] && data[Index] <= num2) + { + return MarkTextPositionStyle.Down; + } + return MarkTextPositionStyle.Up; + } + } +} diff --git a/UsingControl/HZHControls/Controls/Charts/MarkTextPositionStyle.cs b/UsingControl/HZHControls/Controls/Charts/MarkTextPositionStyle.cs new file mode 100644 index 0000000..e191618 --- /dev/null +++ b/UsingControl/HZHControls/Controls/Charts/MarkTextPositionStyle.cs @@ -0,0 +1,11 @@ +namespace HZH_Controls.Controls +{ + public enum MarkTextPositionStyle + { + Up = 1, + Right = 2, + Down = 4, + Left = 8, + Auto = 16 + } +} diff --git a/UsingControl/HZHControls/Controls/Charts/RadarChart/RadarLine.cs b/UsingControl/HZHControls/Controls/Charts/RadarChart/RadarLine.cs new file mode 100644 index 0000000..e88d850 --- /dev/null +++ b/UsingControl/HZHControls/Controls/Charts/RadarChart/RadarLine.cs @@ -0,0 +1,55 @@ +// *********************************************************************** +// Assembly : HZH_Controls +// Created : 2019-09-25 +// +// *********************************************************************** +// +// Copyright by Huang Zhenghui(黄正辉) All, QQ group:568015492 QQ:623128629 Email:623128629@qq.com +// +// +// Blog: https://www.cnblogs.com/bfyx +// GitHub:https://github.com/kwwwvagaa/NetWinformControl +// gitee:https://gitee.com/kwwwvagaa/net_winform_custom_control.git +// +// If you use this code, please keep this note. +// *********************************************************************** +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; + +namespace HZH_Controls.Controls +{ + /// + /// Class RadarLine. + /// + public class RadarLine + { + /// + /// Gets or sets the name. + /// + /// The name. + public string Name { get; set; } + /// + /// Gets or sets the values. + /// + /// The values. + public double[] Values { get; set; } + /// + /// Gets or sets the color of the line. + /// + /// The color of the line. + public Color? LineColor { get; set; } + /// + /// Gets or sets a value indicating whether [show value text]. + /// + /// true if [show value text]; otherwise, false. + public bool ShowValueText { get; set; } + /// + /// Gets or sets the color of the fill. + /// + /// The color of the fill. + public Color? FillColor { get; set; } + } +} diff --git a/UsingControl/HZHControls/Controls/Charts/RadarChart/RadarPosition.cs b/UsingControl/HZHControls/Controls/Charts/RadarChart/RadarPosition.cs new file mode 100644 index 0000000..622d65e --- /dev/null +++ b/UsingControl/HZHControls/Controls/Charts/RadarChart/RadarPosition.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace HZH_Controls.Controls +{ + public class RadarPosition + { + public string Text { get; set; } + public double MaxValue { get; set; } + } +} diff --git a/UsingControl/HZHControls/Controls/Charts/RadarChart/UCRadarChart.cs b/UsingControl/HZHControls/Controls/Charts/RadarChart/UCRadarChart.cs new file mode 100644 index 0000000..c36a232 --- /dev/null +++ b/UsingControl/HZHControls/Controls/Charts/RadarChart/UCRadarChart.cs @@ -0,0 +1,663 @@ +// *********************************************************************** +// Assembly : HZH_Controls +// Created : 2019-09-25 +// +// *********************************************************************** +// +// Copyright by Huang Zhenghui(黄正辉) All, QQ group:568015492 QQ:623128629 Email:623128629@qq.com +// +// +// Blog: https://www.cnblogs.com/bfyx +// GitHub:https://github.com/kwwwvagaa/NetWinformControl +// gitee:https://gitee.com/kwwwvagaa/net_winform_custom_control.git +// +// If you use this code, please keep this note. +// *********************************************************************** +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using System.Drawing; +using System.Drawing.Drawing2D; +using System.ComponentModel; + +namespace HZH_Controls.Controls +{ + /// + /// Class UCRadarChart. + /// Implements the + /// + /// + public class UCRadarChart : UserControl + { + /// + /// The split count + /// + private int splitCount = 5; + /// + /// Gets or sets the split count. + /// + /// The split count. + [Browsable(true)] + [Category("自定义")] + [Description("获取或设置分隔份数")] + public int SplitCount + { + get { return splitCount; } + set + { + splitCount = value; + Invalidate(); + } + } + [Browsable(true)] + [Category("自定义")] + [Description("获取或设置是否使用圆代替连线进行分隔")] + public bool UseRoundSplit { get; set; } + + /// + /// The split odd color + /// + private Color splitOddColor = Color.White; + /// + /// 分隔奇数栏背景色 + /// + /// The color of the split odd. + [Browsable(true)] + [Category("自定义")] + [Description("获取或设置分隔奇数栏背景色")] + public Color SplitOddColor + { + get { return splitOddColor; } + set + { + splitOddColor = value; + Invalidate(); + } + } + /// + /// The split even color + /// + private Color splitEvenColor = Color.FromArgb(232, 232, 232); + /// + /// 分隔偶数栏背景色 + /// + /// The color of the split even. + [Browsable(true)] + [Category("自定义")] + [Description("获取或设置分隔偶数栏背景色")] + public Color SplitEvenColor + { + get { return splitEvenColor; } + set + { + splitEvenColor = value; + Invalidate(); + } + } + + /// + /// The line color + /// + private Color lineColor = Color.FromArgb(153, 153, 153); + /// + /// Gets or sets the color of the line. + /// + /// The color of the line. + [Browsable(true)] + [Category("自定义")] + [Description("获取或设置线条色")] + public Color LineColor + { + get { return lineColor; } + set + { + lineColor = value; + Invalidate(); + } + } + + /// + /// The radar positions + /// + private RadarPosition[] radarPositions; + /// + /// 节点列表,至少需要3个 + /// + /// The radar positions. + [Browsable(true)] + [Category("自定义")] + [Description("获取或设置节点,至少需要3个")] + public RadarPosition[] RadarPositions + { + get { return radarPositions; } + set + { + radarPositions = value; + Invalidate(); + } + } + + /// + /// The title + /// + private string title; + /// + /// 标题 + /// + /// The title. + [Browsable(true)] + [Category("自定义")] + [Description("获取或设置标题")] + public string Title + { + get { return title; } + set + { + title = value; + ResetTitleSize(); + Invalidate(); + } + } + + /// + /// The title font + /// + private Font titleFont = new Font("微软雅黑", 12); + /// + /// Gets or sets the title font. + /// + /// The title font. + [Browsable(true)] + [Category("自定义")] + [Description("获取或设置标题字体")] + public Font TitleFont + { + get { return titleFont; } + set + { + titleFont = value; + ResetTitleSize(); + Invalidate(); + } + } + + /// + /// The title color + /// + private Color titleColor = Color.Black; + /// + /// Gets or sets the color of the title. + /// + /// The color of the title. + [Browsable(true)] + [Category("自定义")] + [Description("获取或设置标题文本颜色")] + public Color TitleColor + { + get { return titleColor; } + set + { + titleColor = value; + Invalidate(); + } + } + + /// + /// The lines + /// + private RadarLine[] lines; + /// + /// Gets or sets the lines. + /// + /// The lines. + [Browsable(true)] + [Category("自定义")] + [Description("获取或设置值线条,Values长度必须与RadarPositions长度一致,否则无法显示")] + public RadarLine[] Lines + { + get { return lines; } + set + { + lines = value; + Invalidate(); + } + } + + + + /// + /// The title size + /// + SizeF titleSize = SizeF.Empty; + /// + /// The m rect working + /// + private RectangleF m_rectWorking = Rectangle.Empty; + /// + /// The line value type size + /// + SizeF lineValueTypeSize = SizeF.Empty; + /// + /// The int line value COM count + /// + int intLineValueComCount = 0; + /// + /// The int line value row count + /// + int intLineValueRowCount = 0; + /// + /// Initializes a new instance of the class. + /// + public UCRadarChart() + { + this.SetStyle(ControlStyles.AllPaintingInWmPaint, true); + this.SetStyle(ControlStyles.DoubleBuffer, true); + this.SetStyle(ControlStyles.ResizeRedraw, true); + this.SetStyle(ControlStyles.Selectable, true); + this.SetStyle(ControlStyles.SupportsTransparentBackColor, true); + this.SetStyle(ControlStyles.UserPaint, true); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; + this.SizeChanged += UCRadarChart_SizeChanged; + Size = new System.Drawing.Size(150, 150); + radarPositions = new RadarPosition[0]; + if (ControlHelper.IsDesignMode()) + { + radarPositions = new RadarPosition[6]; + for (int i = 0; i < 6; i++) + { + radarPositions[i] = new RadarPosition + { + Text = "Item" + (i + 1), + MaxValue = 100 + }; + } + } + + lines = new RadarLine[0]; + if (ControlHelper.IsDesignMode()) + { + Random r = new Random(); + lines = new RadarLine[2]; + for (int i = 0; i < 2; i++) + { + lines[i] = new RadarLine() + { + Name = "line" + i + }; + lines[i].Values = new double[radarPositions.Length]; + for (int j = 0; j < radarPositions.Length; j++) + { + lines[i].Values[j] = r.Next(20, (int)radarPositions[j].MaxValue); + } + } + } + } + + /// + /// Handles the SizeChanged event of the UCRadarChart control. + /// + /// The source of the event. + /// The instance containing the event data. + void UCRadarChart_SizeChanged(object sender, EventArgs e) + { + ResetWorkingRect(); + } + + /// + /// Resets the working rect. + /// + private void ResetWorkingRect() + { + if (lines != null && lines.Length > 0) + { + using (Graphics g = this.CreateGraphics()) + { + foreach (var item in lines) + { + var s = g.MeasureString(item.Name, Font); + if (s.Width > lineValueTypeSize.Width) + lineValueTypeSize = s; + } + } + } + var lineTypePanelHeight = 0f; + if (lineValueTypeSize != SizeF.Empty) + { + intLineValueComCount = (int)(this.Width / (lineValueTypeSize.Width + 25)); + + intLineValueRowCount = lines.Length / intLineValueComCount; + if (lines.Length % intLineValueComCount != 0) + { + intLineValueRowCount++; + } + lineTypePanelHeight = (lineValueTypeSize.Height + 10) * intLineValueRowCount; + } + var min = Math.Min(this.Width, this.Height - titleSize.Height - lineTypePanelHeight); + var rectWorking = new RectangleF((this.Width - min) / 2 + 10, titleSize.Height + lineTypePanelHeight + 10, min - 10, min - 10); + //处理文字 + float fltSplitAngle = 360F / radarPositions.Length; + float fltRadiusWidth = rectWorking.Width / 2; + float minX = rectWorking.Left; + float maxX = rectWorking.Right; + float minY = rectWorking.Top; + float maxY = rectWorking.Bottom; + using (Graphics g = this.CreateGraphics()) + { + PointF centrePoint = new PointF(rectWorking.Left + rectWorking.Width / 2, rectWorking.Top + rectWorking.Height / 2); + for (int i = 0; i < radarPositions.Length; i++) + { + float fltAngle = 270 + fltSplitAngle * i; + fltAngle = fltAngle % 360; + PointF _point = GetPointByAngle(centrePoint, fltAngle, fltRadiusWidth); + var _txtSize = g.MeasureString(radarPositions[i].Text, Font); + if (_point.X < centrePoint.X)//左 + { + if (_point.X - _txtSize.Width < minX) + { + minX = rectWorking.Left + _txtSize.Width; + } + } + else//右 + { + if (_point.X + _txtSize.Width > maxX) + { + maxX = rectWorking.Right - _txtSize.Width; + } + } + if (_point.Y < centrePoint.Y)//上 + { + if (_point.Y - _txtSize.Height < minY) + { + minY = rectWorking.Top + _txtSize.Height; + } + } + else//下 + { + if (_point.Y + _txtSize.Height > maxY) + { + maxY = rectWorking.Bottom - _txtSize.Height; + } + } + } + } + + min = Math.Min(maxX - minX, maxY - minY); + m_rectWorking = new RectangleF(minX, minY, min, min); + } + + /// + /// 引发 事件。 + /// + /// 包含事件数据的 。 + protected override void OnPaint(PaintEventArgs e) + { + base.OnPaint(e); + var g = e.Graphics; + g.SetGDIHigh(); + + if (!string.IsNullOrEmpty(title)) + { + g.DrawString(title, titleFont, new SolidBrush(titleColor), new RectangleF(m_rectWorking.Left + (m_rectWorking.Width - titleSize.Width) / 2, m_rectWorking.Top - titleSize.Height - 10 - (intLineValueRowCount * (10 + lineValueTypeSize.Height)), titleSize.Width, titleSize.Height)); + } + + if (radarPositions.Length <= 2) + { + g.DrawString("至少需要3个顶点", Font, new SolidBrush(Color.Black), m_rectWorking, new StringFormat() { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center }); + return; + } + + var y = m_rectWorking.Top - 20 - (intLineValueRowCount * (10 + lineValueTypeSize.Height)); + + for (int i = 0; i < intLineValueRowCount; i++) + { + var x = 0f; + int intCount = intLineValueComCount; + if (i == intLineValueRowCount - 1) + { + intCount = lines.Length % intLineValueComCount; + + } + x = m_rectWorking.Left + (m_rectWorking.Width - intCount * (lineValueTypeSize.Width + 25)) / 2; + + for (int j = 0; j < intCount; j++) + { + g.FillRectangle(new SolidBrush(lines[i * intLineValueComCount + j].LineColor.Value), new RectangleF(x + (lineValueTypeSize.Width + 25) * j, y + lineValueTypeSize.Height * i, 15, lineValueTypeSize.Height)); + g.DrawString(lines[i * intLineValueComCount + j].Name, Font, new SolidBrush(lines[i * intLineValueComCount + j].LineColor.Value), new PointF(x + (lineValueTypeSize.Width + 25) * j + 20, y + lineValueTypeSize.Height * i)); + } + } + + float fltSplitAngle = 360F / radarPositions.Length; + float fltRadiusWidth = m_rectWorking.Width / 2; + float fltSplitRadiusWidth = fltRadiusWidth / splitCount; + PointF centrePoint = new PointF(m_rectWorking.Left + m_rectWorking.Width / 2, m_rectWorking.Top + m_rectWorking.Height / 2); + + List> lstRingPoints = new List>(splitCount); + //分割点 + for (int i = 0; i < radarPositions.Length; i++) + { + float fltAngle = 270 + fltSplitAngle * i; + fltAngle = fltAngle % 360; + for (int j = 0; j < splitCount; j++) + { + if (i == 0) + { + lstRingPoints.Add(new List()); + } + PointF _point = GetPointByAngle(centrePoint, fltAngle, fltSplitRadiusWidth * (splitCount - j)); + lstRingPoints[j].Add(_point); + } + } + + if (UseRoundSplit) + { + for (int i = 0; i < splitCount; i++) + { + RectangleF rect = new RectangleF(centrePoint.X - fltSplitRadiusWidth * (splitCount - i), centrePoint.Y - fltSplitRadiusWidth * (splitCount - i), fltSplitRadiusWidth * (splitCount - i) * 2, fltSplitRadiusWidth * (splitCount - i) * 2); + if (i % 2 == 0) + { + g.FillEllipse(new SolidBrush(splitOddColor), rect); + } + else + { + g.FillEllipse(new SolidBrush(splitEvenColor), rect); + } + + g.DrawEllipse(new Pen(new SolidBrush(lineColor)), rect); + } + } + else + { + //间隔颜色 + for (int i = 0; i < lstRingPoints.Count; i++) + { + var ring = lstRingPoints[i]; + GraphicsPath path = new GraphicsPath(); + path.AddLines(ring.ToArray()); + if ((lstRingPoints.Count - i) % 2 == 0) + { + g.FillPath(new SolidBrush(splitEvenColor), path); + } + else + { + g.FillPath(new SolidBrush(splitOddColor), path); + } + } + //画环 + foreach (var ring in lstRingPoints) + { + ring.Add(ring[0]); + g.DrawLines(new Pen(new SolidBrush(lineColor)), ring.ToArray()); + } + } + //分割线 + foreach (var item in lstRingPoints[0]) + { + g.DrawLine(new Pen(new SolidBrush(lineColor)), centrePoint, item); + } + + //值 + for (int i = 0; i < lines.Length; i++) + { + var line = lines[i]; + if (line.Values.Length != radarPositions.Length)//如果数据长度和节点长度不一致则不绘制 + continue; + if (line.LineColor == null || line.LineColor == Color.Empty || line.LineColor == Color.Transparent) + line.LineColor = ControlHelper.Colors[i + 13]; + List ps = new List(); + for (int j = 0; j < radarPositions.Length; j++) + { + float fltAngle = 270 + fltSplitAngle * j; + fltAngle = fltAngle % 360; + PointF _point = GetPointByAngle(centrePoint, fltAngle, fltRadiusWidth * (float)(line.Values[j] / radarPositions[i].MaxValue)); + ps.Add(_point); + } + ps.Add(ps[0]); + if (line.FillColor != null && line.FillColor != Color.Empty && line.FillColor != Color.Transparent) + { + GraphicsPath path = new GraphicsPath(); + path.AddLines(ps.ToArray()); + g.FillPath(new SolidBrush(line.FillColor.Value), path); + } + g.DrawLines(new Pen(new SolidBrush(line.LineColor.Value), 2), ps.ToArray()); + + for (int j = 0; j < radarPositions.Length; j++) + { + var item = ps[j]; + g.FillEllipse(new SolidBrush(Color.White), new RectangleF(item.X - 3, item.Y - 3, 6, 6)); + g.DrawEllipse(new Pen(new SolidBrush(line.LineColor.Value)), new RectangleF(item.X - 3, item.Y - 3, 6, 6)); + if (line.ShowValueText) + { + var valueSize = g.MeasureString(line.Values[j].ToString("0.##"), Font); + g.DrawString(line.Values[j].ToString("0.##"), Font, new SolidBrush(line.LineColor.Value), new PointF(item.X - valueSize.Width / 2, item.Y - valueSize.Height - 5)); + } + } + } + + //文本 + + for (int i = 0; i < radarPositions.Length; i++) + { + PointF point = lstRingPoints[0][i]; + var txtSize = g.MeasureString(radarPositions[i].Text, Font); + + if (point.X == centrePoint.X) + { + if (point.Y > centrePoint.Y) + { + g.DrawString(radarPositions[i].Text, Font, new SolidBrush(ForeColor), new PointF(point.X - txtSize.Width / 2, point.Y + 10)); + } + else + { + g.DrawString(radarPositions[i].Text, Font, new SolidBrush(ForeColor), new PointF(point.X - txtSize.Width / 2, point.Y - 10 - txtSize.Height)); + } + } + else if (point.Y == centrePoint.Y) + { + if (point.X < centrePoint.X) + g.DrawString(radarPositions[i].Text, Font, new SolidBrush(ForeColor), new PointF(point.X - 10 - txtSize.Width, point.Y - txtSize.Height / 2)); + else + g.DrawString(radarPositions[i].Text, Font, new SolidBrush(ForeColor), new PointF(point.X + 10, point.Y - txtSize.Height / 2)); + } + else if (point.X < centrePoint.X)//左 + { + if (point.Y < centrePoint.Y)//左上 + { + g.DrawString(radarPositions[i].Text, Font, new SolidBrush(ForeColor), new PointF(point.X - 10 - txtSize.Width, point.Y - 10 + txtSize.Height / 2)); + } + else//左下 + { + g.DrawString(radarPositions[i].Text, Font, new SolidBrush(ForeColor), new PointF(point.X - 10 - txtSize.Width, point.Y + 10 - txtSize.Height / 2)); + } + } + else + { + if (point.Y < centrePoint.Y)//右上 + { + g.DrawString(radarPositions[i].Text, Font, new SolidBrush(ForeColor), new PointF(point.X + 10, point.Y - 10 + txtSize.Height / 2)); + } + else//右下 + { + g.DrawString(radarPositions[i].Text, Font, new SolidBrush(ForeColor), new PointF(point.X + 10, point.Y + 10 - txtSize.Height / 2)); + } + } + } + + } + + #region 根据中心点、角度、半径计算圆边坐标点 English:Calculating the coordinate points of circular edge according to the center point, angle and radius + /// + /// 功能描述:根据中心点、角度、半径计算圆边坐标点 English:Calculating the coordinate points of circular edge according to the center point, angle and radius + /// 作  者:HZH + /// 创建日期:2019-09-25 09:46:32 + /// 任务编号:POS + /// + /// centrePoint + /// fltAngle + /// fltRadiusWidth + /// 返回值 + private PointF GetPointByAngle(PointF centrePoint, float fltAngle, float fltRadiusWidth) + { + PointF p = centrePoint; + if (fltAngle == 0) + { + p.X += fltRadiusWidth; + } + else if (fltAngle == 90) + { + p.Y += fltRadiusWidth; + } + else if (fltAngle == 180) + { + p.X -= fltRadiusWidth; + } + else if (fltAngle == 270) + { + p.Y -= fltRadiusWidth; + } + else if (fltAngle > 0 && fltAngle < 90) + { + p.Y += (float)Math.Sin(Math.PI * (fltAngle / 180.00F)) * fltRadiusWidth; + p.X += (float)Math.Cos(Math.PI * (fltAngle / 180.00F)) * fltRadiusWidth; + } + else if (fltAngle > 90 && fltAngle < 180) + { + p.Y += (float)Math.Sin(Math.PI * ((180 - fltAngle) / 180.00F)) * fltRadiusWidth; + p.X -= (float)Math.Cos(Math.PI * ((180 - fltAngle) / 180.00F)) * fltRadiusWidth; + } + else if (fltAngle > 180 && fltAngle < 270) + { + p.Y -= (float)Math.Sin(Math.PI * ((fltAngle - 180) / 180.00F)) * fltRadiusWidth; + p.X -= (float)Math.Cos(Math.PI * ((fltAngle - 180) / 180.00F)) * fltRadiusWidth; + } + else if (fltAngle > 270 && fltAngle < 360) + { + p.Y -= (float)Math.Sin(Math.PI * ((360 - fltAngle) / 180.00F)) * fltRadiusWidth; + p.X += (float)Math.Cos(Math.PI * ((360 - fltAngle) / 180.00F)) * fltRadiusWidth; + } + return p; + } + #endregion + + /// + /// Resets the size of the title. + /// + private void ResetTitleSize() + { + if (!string.IsNullOrEmpty(title)) + { + using (Graphics g = this.CreateGraphics()) + { + titleSize = g.MeasureString(title, titleFont); + } + } + else + { + titleSize = SizeF.Empty; + } + titleSize.Height += 20; + ResetWorkingRect(); + } + } +} diff --git a/UsingControl/HZHControls/Controls/Charts/ZoomType.cs b/UsingControl/HZHControls/Controls/Charts/ZoomType.cs new file mode 100644 index 0000000..d5628f6 --- /dev/null +++ b/UsingControl/HZHControls/Controls/Charts/ZoomType.cs @@ -0,0 +1,36 @@ +// *********************************************************************** +// Assembly : HZH_Controls +// Created : 2019-09-17 +// +// *********************************************************************** +// +// Copyright by Huang Zhenghui() All, QQ group:568015492 QQ:623128629 Email:623128629@qq.com +// +// +// Blog: https://www.cnblogs.com/bfyx +// GitHubhttps://github.com/kwwwvagaa/NetWinformControl +// giteehttps://gitee.com/kwwwvagaa/net_winform_custom_control.git +// +// If you use this code, please keep this note. +// *********************************************************************** +namespace HZH_Controls.Controls +{ + /// + /// Enum ZoomType + /// + public enum ZoomType + { + /// + /// The none + /// + None, + /// + /// The enlarge + /// + Enlarge, + /// + /// The reduce + /// + Reduce + } +} diff --git a/UsingControl/HZHControls/Controls/Checkbox/UCCheckBox.Designer.cs b/UsingControl/HZHControls/Controls/Checkbox/UCCheckBox.Designer.cs new file mode 100644 index 0000000..f0b93b1 --- /dev/null +++ b/UsingControl/HZHControls/Controls/Checkbox/UCCheckBox.Designer.cs @@ -0,0 +1,105 @@ +// *********************************************************************** +// Assembly : HZH_Controls +// Created : 08-08-2019 +// +// *********************************************************************** +// +// Copyright by Huang Zhenghui(黄正辉) All, QQ group:568015492 QQ:623128629 Email:623128629@qq.com +// +// +// Blog: https://www.cnblogs.com/bfyx +// GitHub:https://github.com/kwwwvagaa/NetWinformControl +// gitee:https://gitee.com/kwwwvagaa/net_winform_custom_control.git +// +// If you use this code, please keep this note. +// *********************************************************************** +namespace HZH_Controls.Controls +{ + /// + /// Class UCCheckBox. + /// Implements the + /// + /// + partial class UCCheckBox + { + /// + /// 必需的设计器变量。 + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 清理所有正在使用的资源。 + /// + /// 如果应释放托管资源,为 true;否则为 false。 + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region 组件设计器生成的代码 + + /// + /// 设计器支持所需的方法 - 不要 + /// 使用代码编辑器修改此方法的内容。 + /// + private void InitializeComponent() + { + this.panel1 = new System.Windows.Forms.Panel(); + this.label1 = new System.Windows.Forms.Label(); + this.SuspendLayout(); + // + // panel1 + // + this.panel1.BackgroundImage = global::HZH_Controls.Properties.Resources.checkbox0; + this.panel1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; + this.panel1.Dock = System.Windows.Forms.DockStyle.Left; + this.panel1.Location = new System.Drawing.Point(1, 1); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(18, 28); + this.panel1.TabIndex = 0; + this.panel1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.CheckBox_MouseDown); + // + // label1 + // + this.label1.Dock = System.Windows.Forms.DockStyle.Fill; + this.label1.Font = new System.Drawing.Font("微软雅黑", 12F); + this.label1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(62)))), ((int)(((byte)(62)))), ((int)(((byte)(62))))); + this.label1.Location = new System.Drawing.Point(19, 1); + this.label1.Name = "label1"; + this.label1.Padding = new System.Windows.Forms.Padding(5, 0, 0, 0); + this.label1.Size = new System.Drawing.Size(213, 28); + this.label1.TabIndex = 1; + this.label1.Text = "复选框"; + this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + this.label1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.CheckBox_MouseDown); + // + // UCCheckBox + // + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; + this.BackColor = System.Drawing.Color.Transparent; + this.Controls.Add(this.label1); + this.Controls.Add(this.panel1); + this.Name = "UCCheckBox"; + this.Padding = new System.Windows.Forms.Padding(1); + this.Size = new System.Drawing.Size(233, 30); + this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.CheckBox_MouseDown); + this.ResumeLayout(false); + + } + + #endregion + + /// + /// The panel1 + /// + private System.Windows.Forms.Panel panel1; + /// + /// The label1 + /// + private System.Windows.Forms.Label label1; + } +} diff --git a/UsingControl/HZHControls/Controls/Checkbox/UCCheckBox.cs b/UsingControl/HZHControls/Controls/Checkbox/UCCheckBox.cs new file mode 100644 index 0000000..58e1475 --- /dev/null +++ b/UsingControl/HZHControls/Controls/Checkbox/UCCheckBox.cs @@ -0,0 +1,216 @@ +// *********************************************************************** +// Assembly : HZH_Controls +// Created : 08-08-2019 +// +// *********************************************************************** +// +// Copyright by Huang Zhenghui(黄正辉) All, QQ group:568015492 QQ:623128629 Email:623128629@qq.com +// +// +// Blog: https://www.cnblogs.com/bfyx +// GitHub:https://github.com/kwwwvagaa/NetWinformControl +// gitee:https://gitee.com/kwwwvagaa/net_winform_custom_control.git +// +// If you use this code, please keep this note. +// *********************************************************************** +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace HZH_Controls.Controls +{ + /// + /// Class UCCheckBox. + /// Implements the + /// + /// + [DefaultEvent("CheckedChangeEvent")] + public partial class UCCheckBox : UserControl + { + /// + /// 选中改变事件 + /// + [Description("选中改变事件"), Category("自定义")] + public event EventHandler CheckedChangeEvent; + /// + /// 字体 + /// + /// The font. + /// + /// + /// + /// + /// + /// + [Description("字体"), Category("自定义")] + public override Font Font + { + get + { + return base.Font; + } + set + { + base.Font = value; + label1.Font = value; + } + } + + /// + /// The fore color + /// + private Color _ForeColor = Color.FromArgb(62, 62, 62); + /// + /// 字体颜色 + /// + /// The color of the fore. + /// + /// + /// + [Description("字体颜色"), Category("自定义")] + public new Color ForeColor + { + get { return _ForeColor; } + set + { + base.ForeColor = value; + label1.ForeColor = value; + _ForeColor = value; + } + } + /// + /// The text + /// + private string _Text = "复选框"; + /// + /// 文本 + /// + /// The text value. + [Description("文本"), Category("自定义")] + public string TextValue + { + get { return _Text; } + set + { + label1.Text = value; + _Text = value; + } + } + /// + /// The checked + /// + private bool _checked = false; + /// + /// 是否选中 + /// + /// true if checked; otherwise, false. + [Description("是否选中"), Category("自定义")] + public bool Checked + { + get + { + return _checked; + } + set + { + if (_checked != value) + { + _checked = value; + if (base.Enabled) + { + if (_checked) + { + panel1.BackgroundImage = Properties.Resources.checkbox1; + } + else + { + panel1.BackgroundImage = Properties.Resources.checkbox0; + } + } + else + { + if (_checked) + { + panel1.BackgroundImage = Properties.Resources.checkbox10; + } + else + { + panel1.BackgroundImage = Properties.Resources.checkbox00; + } + } + + if (CheckedChangeEvent != null) + { + CheckedChangeEvent(this, null); + } + } + } + } + + /// + /// 获取或设置一个值,该值指示控件是否可以对用户交互作出响应。 + /// + /// true if enabled; otherwise, false. + /// + /// + /// + /// + /// + /// + public new bool Enabled + { + get + { + return base.Enabled; + } + set + { + base.Enabled = value; + if (value) + { + if (_checked) + { + panel1.BackgroundImage = Properties.Resources.checkbox1; + } + else + { + panel1.BackgroundImage = Properties.Resources.checkbox0; + } + } + else + { + if (_checked) + { + panel1.BackgroundImage = Properties.Resources.checkbox10; + } + else + { + panel1.BackgroundImage = Properties.Resources.checkbox00; + } + } + } + } + /// + /// Initializes a new instance of the class. + /// + public UCCheckBox() + { + InitializeComponent(); + } + + /// + /// Handles the MouseDown event of the CheckBox control. + /// + /// The source of the event. + /// The instance containing the event data. + private void CheckBox_MouseDown(object sender, MouseEventArgs e) + { + Checked = !Checked; + } + } +} diff --git a/UsingControl/HZHControls/Controls/Checkbox/UCCheckBox.resx b/UsingControl/HZHControls/Controls/Checkbox/UCCheckBox.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/UsingControl/HZHControls/Controls/Checkbox/UCCheckBox.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/UsingControl/HZHControls/Controls/ComboBox/UCCombox.Designer.cs b/UsingControl/HZHControls/Controls/ComboBox/UCCombox.Designer.cs new file mode 100644 index 0000000..9c636ce --- /dev/null +++ b/UsingControl/HZHControls/Controls/ComboBox/UCCombox.Designer.cs @@ -0,0 +1,147 @@ +// *********************************************************************** +// Assembly : HZH_Controls +// Created : 08-08-2019 +// +// *********************************************************************** +// +// Copyright by Huang Zhenghui(黄正辉) All, QQ group:568015492 QQ:623128629 Email:623128629@qq.com +// +// +// Blog: https://www.cnblogs.com/bfyx +// GitHub:https://github.com/kwwwvagaa/NetWinformControl +// gitee:https://gitee.com/kwwwvagaa/net_winform_custom_control.git +// +// If you use this code, please keep this note. +// *********************************************************************** +namespace HZH_Controls.Controls +{ + /// + /// Class UCCombox. + /// Implements the + /// + /// + partial class UCCombox + { + /// + /// 必需的设计器变量。 + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 清理所有正在使用的资源。 + /// + /// 如果应释放托管资源,为 true;否则为 false。 + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region 组件设计器生成的代码 + + /// + /// 设计器支持所需的方法 - 不要 + /// 使用代码编辑器修改此方法的内容。 + /// + private void InitializeComponent() + { + this.panel1 = new System.Windows.Forms.Panel(); + this.txtInput = new HZH_Controls.Controls.TextBoxEx(); + this.lblInput = new System.Windows.Forms.Label(); + this.SuspendLayout(); + // + // panel1 + // + this.panel1.BackColor = System.Drawing.Color.Transparent; + this.panel1.BackgroundImage = global::HZH_Controls.Properties.Resources.ComboBox; + this.panel1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center; + this.panel1.Dock = System.Windows.Forms.DockStyle.Right; + this.panel1.Location = new System.Drawing.Point(136, 0); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(37, 32); + this.panel1.TabIndex = 0; + this.panel1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.click_MouseDown); + // + // txtInput + // + this.txtInput.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right))); + this.txtInput.BackColor = System.Drawing.Color.White; + this.txtInput.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.txtInput.DecLength = 2; + this.txtInput.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel); + this.txtInput.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.txtInput.InputType = HZH_Controls.TextInputType.NotControl; + this.txtInput.Location = new System.Drawing.Point(3, 4); + this.txtInput.Margin = new System.Windows.Forms.Padding(3, 3, 10, 3); + this.txtInput.MaxValue = new decimal(new int[] { + 1000000, + 0, + 0, + 0}); + this.txtInput.MinValue = new decimal(new int[] { + 1000000, + 0, + 0, + -2147483648}); + this.txtInput.MyRectangle = new System.Drawing.Rectangle(0, 0, 0, 0); + this.txtInput.Name = "txtInput"; + this.txtInput.OldText = null; + this.txtInput.PromptColor = System.Drawing.Color.Silver; + this.txtInput.PromptFont = new System.Drawing.Font("微软雅黑", 15F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel); + this.txtInput.PromptText = ""; + this.txtInput.RegexPattern = ""; + this.txtInput.Size = new System.Drawing.Size(133, 24); + this.txtInput.TabIndex = 1; + this.txtInput.TextChanged += new System.EventHandler(this.txtInput_TextChanged); + // + // lblInput + // + this.lblInput.AutoSize = true; + this.lblInput.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.lblInput.Location = new System.Drawing.Point(3, 6); + this.lblInput.Name = "lblInput"; + this.lblInput.Size = new System.Drawing.Size(0, 20); + this.lblInput.TabIndex = 2; + this.lblInput.Visible = false; + this.lblInput.MouseDown += new System.Windows.Forms.MouseEventHandler(this.click_MouseDown); + // + // UCCombox + // + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; + this.BackColor = System.Drawing.Color.Transparent; + this.ConerRadius = 5; + this.Controls.Add(this.panel1); + this.Controls.Add(this.txtInput); + this.Controls.Add(this.lblInput); + this.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(240)))), ((int)(((byte)(240)))), ((int)(((byte)(240))))); + this.IsRadius = true; + this.IsShowRect = true; + this.Name = "UCCombox"; + this.Size = new System.Drawing.Size(173, 32); + this.Load += new System.EventHandler(this.UCComboBox_Load); + this.SizeChanged += new System.EventHandler(this.UCComboBox_SizeChanged); + this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.click_MouseDown); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + /// + /// The panel1 + /// + private System.Windows.Forms.Panel panel1; + /// + /// The text input + /// + public TextBoxEx txtInput; + /// + /// The label input + /// + private System.Windows.Forms.Label lblInput; + } +} diff --git a/UsingControl/HZHControls/Controls/ComboBox/UCCombox.cs b/UsingControl/HZHControls/Controls/ComboBox/UCCombox.cs new file mode 100644 index 0000000..8bcb2f2 --- /dev/null +++ b/UsingControl/HZHControls/Controls/ComboBox/UCCombox.cs @@ -0,0 +1,586 @@ +// *********************************************************************** +// Assembly : HZH_Controls +// Created : 08-08-2019 +// +// *********************************************************************** +// +// Copyright by Huang Zhenghui(黄正辉) All, QQ group:568015492 QQ:623128629 Email:623128629@qq.com +// +// +// Blog: https://www.cnblogs.com/bfyx +// GitHub:https://github.com/kwwwvagaa/NetWinformControl +// gitee:https://gitee.com/kwwwvagaa/net_winform_custom_control.git +// +// If you use this code, please keep this note. +// *********************************************************************** +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using System.Drawing.Drawing2D; + +namespace HZH_Controls.Controls +{ + /// + /// Class UCCombox. + /// Implements the + /// + /// + [DefaultEvent("SelectedChangedEvent")] + public partial class UCCombox : UCControlBase + { + /// + /// The fore color + /// + Color _ForeColor = Color.FromArgb(64, 64, 64); + /// + /// 文字颜色 + /// + /// The color of the fore. + /// + /// + /// + [Description("文字颜色"), Category("自定义")] + public override Color ForeColor + { + get + { + return _ForeColor; + } + set + { + _ForeColor = value; + lblInput.ForeColor = value; + txtInput.ForeColor = value; + } + } + /// + /// 选中事件 + /// + [Description("选中事件"), Category("自定义")] + public event EventHandler SelectedChangedEvent; + /// + /// 文本改变事件 + /// + [Description("文本改变事件"), Category("自定义")] + public event EventHandler TextChangedEvent; + + /// + /// The box style + /// + private ComboBoxStyle _BoxStyle = ComboBoxStyle.DropDown; + /// + /// 控件样式 + /// + /// The box style. + [Description("控件样式"), Category("自定义")] + public ComboBoxStyle BoxStyle + { + get { return _BoxStyle; } + set + { + _BoxStyle = value; + if (value == ComboBoxStyle.DropDownList) + { + lblInput.Visible = true; + txtInput.Visible = false; + } + else + { + lblInput.Visible = false; + txtInput.Visible = true; + } + + if (this._BoxStyle == ComboBoxStyle.DropDownList) + { + txtInput.BackColor = _BackColor; + base.FillColor = _BackColor; + base.RectColor = _BackColor; + } + else + { + txtInput.BackColor = Color.White; + base.FillColor = Color.White; + base.RectColor = Color.FromArgb(220, 220, 220); + } + } + } + + /// + /// The font + /// + private Font _Font = new Font("微软雅黑", 12); + /// + /// 字体 + /// + /// The font. + /// + /// + /// + /// + /// + /// + [Description("字体"), Category("自定义")] + public new Font Font + { + get { return _Font; } + set + { + _Font = value; + lblInput.Font = value; + txtInput.Font = value; + txtInput.PromptFont = value; + this.txtInput.Location = new Point(this.txtInput.Location.X, (this.Height - txtInput.Height) / 2); + this.lblInput.Location = new Point(this.lblInput.Location.X, (this.Height - lblInput.Height) / 2); + } + } + + + /// + /// 当使用边框时填充颜色,当值为背景色或透明色或空值则不填充 + /// + /// The color of the fill. + [Obsolete("不再可用的属性")] + [Browsable(false), EditorBrowsable(EditorBrowsableState.Never)] + private new Color FillColor + { + get; + set; + } + + /// + /// 边框颜色 + /// + /// The color of the rect. + [Obsolete("不再可用的属性")] + [Browsable(false), EditorBrowsable(EditorBrowsableState.Never)] + private new Color RectColor + { + get; + set; + } + + /// + /// The text value + /// + private string _TextValue; + /// + /// 文字 + /// + /// The text value. + [Description("文字"), Category("自定义")] + public string TextValue + { + get { return _TextValue; } + set + { + _TextValue = value; + if (lblInput.Text != value) + lblInput.Text = value; + if (txtInput.Text != value) + txtInput.Text = value; + } + } + + /// + /// The source + /// + private List> _source = null; + /// + /// 数据源 + /// + /// The source. + [Description("数据源"), Category("自定义")] + public List> Source + { + get { return _source; } + set + { + _source = value; + _selectedIndex = -1; + _selectedValue = ""; + _selectedItem = new KeyValuePair(); + _selectedText = ""; + lblInput.Text = ""; + txtInput.Text = ""; + } + } + + /// + /// The selected item + /// + private KeyValuePair _selectedItem = new KeyValuePair(); + + /// + /// The selected index + /// + private int _selectedIndex = -1; + /// + /// 选中的数据下标 + /// + /// The index of the selected. + [Description("选中的数据下标"), Category("自定义")] + public int SelectedIndex + { + get + { + return _selectedIndex; + } + set + { + if (value < 0 || _source == null || _source.Count <= 0 || value >= _source.Count) + { + _selectedIndex = -1; + _selectedValue = ""; + _selectedItem = new KeyValuePair(); + SelectedText = ""; + } + else + { + _selectedIndex = value; + _selectedItem = _source[value]; + _selectedValue = _source[value].Key; + SelectedText = _source[value].Value; + } + } + } + + /// + /// The selected value + /// + private string _selectedValue = ""; + /// + /// 选中的值 + /// + /// The selected value. + [Description("选中的值"), Category("自定义")] + public string SelectedValue + { + get + { + return _selectedValue; + } + set + { + if (_source == null || _source.Count <= 0) + { + SelectedText = ""; + _selectedValue = ""; + _selectedIndex = -1; + _selectedItem = new KeyValuePair(); + } + else + { + for (int i = 0; i < _source.Count; i++) + { + if (_source[i].Key == value) + { + _selectedValue = value; + _selectedIndex = i; + _selectedItem = _source[i]; + SelectedText = _source[i].Value; + return; + } + } + _selectedValue = ""; + _selectedIndex = -1; + _selectedItem = new KeyValuePair(); + SelectedText = ""; + } + } + } + + /// + /// The selected text + /// + private string _selectedText = ""; + /// + /// 选中的文本 + /// + /// The selected text. + [Description("选中的文本"), Category("自定义")] + public string SelectedText + { + get { return _selectedText; } + private set + { + _selectedText = value; + lblInput.Text = _selectedText; + txtInput.Text = _selectedText; + if (SelectedChangedEvent != null) + { + SelectedChangedEvent(this, null); + } + } + } + + /// + /// The item width + /// + private int _ItemWidth = 70; + /// + /// 项宽度 + /// + /// The width of the item. + [Description("项宽度"), Category("自定义")] + public int ItemWidth + { + get { return _ItemWidth; } + set { _ItemWidth = value; } + } + + /// + /// The drop panel height + /// + private int _dropPanelHeight = -1; + /// + /// 下拉面板高度 + /// + /// The height of the drop panel. + [Description("下拉面板高度"), Category("自定义")] + public int DropPanelHeight + { + get { return _dropPanelHeight; } + set { _dropPanelHeight = value; } + } + /// + /// 获取或设置控件的背景色。 + /// + /// The color of the back. + /// + /// + /// + [Obsolete("不再可用的属性,如需要改变背景色,请使用BackColorExt")] + [Browsable(false), EditorBrowsable(EditorBrowsableState.Never)] + private new Color BackColor + { + get + { + return base.BackColor; + } + set + { + base.BackColor = Color.Transparent; + } + } + + /// + /// The back color + /// + private Color _BackColor = Color.FromArgb(240, 240, 240); + /// + /// 背景色 + /// + /// The back color ext. + [Description("背景色"), Category("自定义")] + public Color BackColorExt + { + get + { + return _BackColor; + } + set + { + if (value == Color.Transparent) + return; + _BackColor = value; + lblInput.BackColor = value; + + if (this._BoxStyle == ComboBoxStyle.DropDownList) + { + txtInput.BackColor = value; + base.FillColor = value; + base.RectColor = value; + } + else + { + txtInput.BackColor = Color.White; + base.FillColor = Color.White; + base.RectColor = Color.FromArgb(220, 220, 220); + } + } + } + + /// + /// The triangle color + /// + private Color triangleColor = Color.FromArgb(255, 77, 59); + /// + /// 三角颜色 + /// + /// The color of the triangle. + [Description("三角颜色"), Category("自定义")] + public Color TriangleColor + { + get { return triangleColor; } + set + { + triangleColor = value; + Bitmap bit = new Bitmap(12, 10); + Graphics g = Graphics.FromImage(bit); + g.SetGDIHigh(); + GraphicsPath path = new GraphicsPath(); + path.AddLines(new Point[] + { + new Point(1,1), + new Point(11,1), + new Point(6,10), + new Point(1,1) + }); + g.FillPath(new SolidBrush(value), path); + g.Dispose(); + panel1.BackgroundImage = bit; + } + } + + /// + /// Initializes a new instance of the class. + /// + public UCCombox() + { + InitializeComponent(); + lblInput.BackColor = _BackColor; + if (this._BoxStyle == ComboBoxStyle.DropDownList) + { + txtInput.BackColor = _BackColor; + base.FillColor = _BackColor; + base.RectColor = _BackColor; + } + else + { + txtInput.BackColor = Color.White; + base.FillColor = Color.White; + base.RectColor = Color.FromArgb(220, 220, 220); + } + base.BackColor = Color.Transparent; + } + + /// + /// Handles the SizeChanged event of the UCComboBox control. + /// + /// The source of the event. + /// The instance containing the event data. + private void UCComboBox_SizeChanged(object sender, EventArgs e) + { + this.txtInput.Location = new Point(this.txtInput.Location.X, (this.Height - txtInput.Height) / 2); + this.lblInput.Location = new Point(this.lblInput.Location.X, (this.Height - lblInput.Height) / 2); + } + + /// + /// Handles the TextChanged event of the txtInput control. + /// + /// The source of the event. + /// The instance containing the event data. + private void txtInput_TextChanged(object sender, EventArgs e) + { + TextValue = txtInput.Text; + if (TextChangedEvent != null) + { + TextChangedEvent(this, null); + } + } + + /// + /// Handles the MouseDown event of the click control. + /// + /// The source of the event. + /// The instance containing the event data. + protected virtual void click_MouseDown(object sender, MouseEventArgs e) + { + if (_frmAnchor == null || _frmAnchor.IsDisposed || _frmAnchor.Visible == false) + { + + if (this.Source != null && this.Source.Count > 0) + { + int intRow = 0; + int intCom = 1; + var p = this.PointToScreen(this.Location); + while (true) + { + int intScreenHeight = Screen.PrimaryScreen.Bounds.Height; + if ((p.Y + this.Height + this.Source.Count / intCom * 50 < intScreenHeight || p.Y - this.Source.Count / intCom * 50 > 0) + && (_dropPanelHeight <= 0 ? true : (this.Source.Count / intCom * 50 <= _dropPanelHeight))) + { + intRow = this.Source.Count / intCom + (this.Source.Count % intCom != 0 ? 1 : 0); + break; + } + intCom++; + } + UCTimePanel ucTime = new UCTimePanel(); + ucTime.IsShowBorder = true; + int intWidth = this.Width / intCom; + if (intWidth < _ItemWidth) + intWidth = _ItemWidth; + Size size = new Size(intCom * intWidth, intRow * 50); + ucTime.Size = size; + ucTime.FirstEvent = true; + ucTime.SelectSourceEvent += ucTime_SelectSourceEvent; + ucTime.Row = intRow; + ucTime.Column = intCom; + List> lst = new List>(); + foreach (var item in this.Source) + { + lst.Add(new KeyValuePair(item.Key, item.Value)); + } + ucTime.Source = lst; + + ucTime.SetSelect(_selectedValue); + + _frmAnchor = new Forms.FrmAnchor(this, ucTime); + _frmAnchor.Load += (a, b) => { (a as Form).Size = size; }; + + _frmAnchor.Show(this.FindForm()); + + } + } + else + { + _frmAnchor.Close(); + } + } + + + /// + /// The FRM anchor + /// + Forms.FrmAnchor _frmAnchor; + /// + /// Handles the SelectSourceEvent event of the ucTime control. + /// + /// The source of the event. + /// The instance containing the event data. + void ucTime_SelectSourceEvent(object sender, EventArgs e) + { + if (_frmAnchor != null && !_frmAnchor.IsDisposed && _frmAnchor.Visible) + { + SelectedValue = sender.ToString(); + _frmAnchor.Close(); + } + } + + /// + /// Handles the Load event of the UCComboBox control. + /// + /// The source of the event. + /// The instance containing the event data. + private void UCComboBox_Load(object sender, EventArgs e) + { + if (this._BoxStyle == ComboBoxStyle.DropDownList) + { + txtInput.BackColor = _BackColor; + base.FillColor = _BackColor; + base.RectColor = _BackColor; + } + else + { + txtInput.BackColor = Color.White; + base.FillColor = Color.White; + base.RectColor = Color.FromArgb(220, 220, 220); + } + } + } +} diff --git a/UsingControl/HZHControls/Controls/ComboBox/UCCombox.resx b/UsingControl/HZHControls/Controls/ComboBox/UCCombox.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/UsingControl/HZHControls/Controls/ComboBox/UCCombox.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/UsingControl/HZHControls/Controls/ComboBox/UCComboxGrid.Designer.cs b/UsingControl/HZHControls/Controls/ComboBox/UCComboxGrid.Designer.cs new file mode 100644 index 0000000..a986c78 --- /dev/null +++ b/UsingControl/HZHControls/Controls/ComboBox/UCComboxGrid.Designer.cs @@ -0,0 +1,73 @@ +// *********************************************************************** +// Assembly : HZH_Controls +// Created : 08-28-2019 +// +// *********************************************************************** +// +// Copyright by Huang Zhenghui(黄正辉) All, QQ group:568015492 QQ:623128629 Email:623128629@qq.com +// +// +// Blog: https://www.cnblogs.com/bfyx +// GitHub:https://github.com/kwwwvagaa/NetWinformControl +// gitee:https://gitee.com/kwwwvagaa/net_winform_custom_control.git +// +// If you use this code, please keep this note. +// *********************************************************************** +namespace HZH_Controls.Controls +{ + /// + /// Class UCComboxGrid. + /// Implements the + /// + /// + partial class UCComboxGrid + { + /// + /// 必需的设计器变量。 + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 清理所有正在使用的资源。 + /// + /// 如果应释放托管资源,为 true;否则为 false。 + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region 组件设计器生成的代码 + + /// + /// 设计器支持所需的方法 - 不要 + /// 使用代码编辑器修改此方法的内容。 + /// + private void InitializeComponent() + { + this.SuspendLayout(); + // + // txtInput + // + this.txtInput.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(240)))), ((int)(((byte)(240)))), ((int)(((byte)(240))))); + // + // UCComboxGrid + // + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; + this.BackColor = System.Drawing.Color.Transparent; + this.BoxStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(240)))), ((int)(((byte)(240)))), ((int)(((byte)(240))))); + this.Name = "UCComboxGrid"; + this.RectColor = System.Drawing.Color.FromArgb(((int)(((byte)(240)))), ((int)(((byte)(240)))), ((int)(((byte)(240))))); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + } +} diff --git a/UsingControl/HZHControls/Controls/ComboBox/UCComboxGrid.cs b/UsingControl/HZHControls/Controls/ComboBox/UCComboxGrid.cs new file mode 100644 index 0000000..08b9483 --- /dev/null +++ b/UsingControl/HZHControls/Controls/ComboBox/UCComboxGrid.cs @@ -0,0 +1,229 @@ +// *********************************************************************** +// Assembly : HZH_Controls +// Created : 08-28-2019 +// +// *********************************************************************** +// +// Copyright by Huang Zhenghui(黄正辉) All, QQ group:568015492 QQ:623128629 Email:623128629@qq.com +// +// +// Blog: https://www.cnblogs.com/bfyx +// GitHub:https://github.com/kwwwvagaa/NetWinformControl +// gitee:https://gitee.com/kwwwvagaa/net_winform_custom_control.git +// +// If you use this code, please keep this note. +// *********************************************************************** +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using HZH_Controls.Controls; + +namespace HZH_Controls.Controls +{ + /// + /// Class UCComboxGrid. + /// Implements the + /// + /// + public partial class UCComboxGrid : UCCombox + { + + /// + /// The m row type + /// + private Type m_rowType = typeof(UCDataGridViewRow); + /// + /// 表格行类型 + /// + /// The type of the grid row. + [Description("表格行类型"), Category("自定义")] + public Type GridRowType + { + get { return m_rowType; } + set + { + m_rowType = value; + } + } + /// + /// The int width + /// + int intWidth = 0; + + /// + /// The m columns + /// + private List m_columns = null; + /// + /// 表格列 + /// + /// The grid columns. + [Description("表格列"), Category("自定义")] + public List GridColumns + { + get { return m_columns; } + set + { + m_columns = value; + if (value != null) + intWidth = value.Sum(p => p.WidthType == SizeType.Absolute ? p.Width : (p.Width < 80 ? 80 : p.Width)); + } + } + /// + /// The m data source + /// + private List m_dataSource = null; + /// + /// 表格数据源 + /// + /// The grid data source. + [Description("表格数据源"), Category("自定义")] + public List GridDataSource + { + get { return m_dataSource; } + set { m_dataSource = value; } + } + + /// + /// The m text field + /// + private string m_textField; + /// + /// 显示值字段名称 + /// + /// The text field. + [Description("显示值字段名称"), Category("自定义")] + public string TextField + { + get { return m_textField; } + set + { + m_textField = value; + SetText(); + } + } + /// + /// 控件样式 + /// + /// The box style. + [Obsolete("不再可用的属性")] + [Browsable(false), EditorBrowsable(EditorBrowsableState.Never)] + private new ComboBoxStyle BoxStyle + { + get; + set; + } + /// + /// The select source + /// + private object selectSource = null; + /// + /// 选中的数据源 + /// + /// The select source. + [Description("选中的数据源"), Category("自定义")] + public object SelectSource + { + get { return selectSource; } + set + { + selectSource = value; + SetText(); + if (SelectedChangedEvent != null) + { + SelectedChangedEvent(value, null); + } + } + } + + + /// + /// 选中数据源改变事件 + /// + [Description("选中数据源改变事件"), Category("自定义")] + public new event EventHandler SelectedChangedEvent; + /// + /// Initializes a new instance of the class. + /// + public UCComboxGrid() + { + InitializeComponent(); + } + /// + /// The m uc panel + /// + UCComboxGridPanel m_ucPanel = null; + /// + /// The FRM anchor + /// + Forms.FrmAnchor _frmAnchor; + /// + /// Handles the MouseDown event of the click control. + /// + /// The source of the event. + /// The instance containing the event data. + protected override void click_MouseDown(object sender, MouseEventArgs e) + { + if (m_columns == null || m_columns.Count <= 0) + return; + if (m_ucPanel == null) + { + var p = this.Parent.PointToScreen(this.Location); + int intScreenHeight = Screen.PrimaryScreen.Bounds.Height; + int intHeight = Math.Max(p.Y, intScreenHeight - p.Y - this.Height); + intHeight -= 100; + m_ucPanel = new UCComboxGridPanel(); + m_ucPanel.ItemClick += m_ucPanel_ItemClick; + m_ucPanel.Height = intHeight; + m_ucPanel.Width = intWidth; + m_ucPanel.Columns = m_columns; + m_ucPanel.RowType = m_rowType; + if (m_dataSource != null && m_dataSource.Count > 0) + { + int _intHeight = Math.Min(110 + m_dataSource.Count * 36, m_ucPanel.Height); + if (_intHeight <= 0) + _intHeight = 100; + m_ucPanel.Height = _intHeight; + } + } + m_ucPanel.DataSource = m_dataSource; + if (_frmAnchor == null || _frmAnchor.IsDisposed || _frmAnchor.Visible == false) + { + _frmAnchor = new Forms.FrmAnchor(this, m_ucPanel, isNotFocus: false); + _frmAnchor.Show(this.FindForm()); + } + + } + + /// + /// Handles the ItemClick event of the m_ucPanel control. + /// + /// The source of the event. + /// The instance containing the event data. + void m_ucPanel_ItemClick(object sender, DataGridViewEventArgs e) + { + _frmAnchor.Hide(); + SelectSource = sender; + } + + /// + /// Sets the text. + /// + private void SetText() + { + if (!string.IsNullOrEmpty(m_textField) && selectSource != null) + { + var pro = selectSource.GetType().GetProperty(m_textField); + if (pro != null) + { + TextValue = pro.GetValue(selectSource, null).ToStringExt(); + } + } + } + } +} diff --git a/UsingControl/HZHControls/Controls/ComboBox/UCComboxGrid.resx b/UsingControl/HZHControls/Controls/ComboBox/UCComboxGrid.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/UsingControl/HZHControls/Controls/ComboBox/UCComboxGrid.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/UsingControl/HZHControls/Controls/ComboBox/UCComboxGridPanel.Designer.cs b/UsingControl/HZHControls/Controls/ComboBox/UCComboxGridPanel.Designer.cs new file mode 100644 index 0000000..1c493dd --- /dev/null +++ b/UsingControl/HZHControls/Controls/ComboBox/UCComboxGridPanel.Designer.cs @@ -0,0 +1,290 @@ +// *********************************************************************** +// Assembly : HZH_Controls +// Created : 08-28-2019 +// +// *********************************************************************** +// +// Copyright by Huang Zhenghui(黄正辉) All, QQ group:568015492 QQ:623128629 Email:623128629@qq.com +// +// +// Blog: https://www.cnblogs.com/bfyx +// GitHub:https://github.com/kwwwvagaa/NetWinformControl +// gitee:https://gitee.com/kwwwvagaa/net_winform_custom_control.git +// +// If you use this code, please keep this note. +// *********************************************************************** +namespace HZH_Controls.Controls +{ + /// + /// Class UCComboxGridPanel. + /// Implements the + /// + /// + partial class UCComboxGridPanel + { + /// + /// 必需的设计器变量。 + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 清理所有正在使用的资源。 + /// + /// 如果应释放托管资源,为 true;否则为 false。 + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region 组件设计器生成的代码 + + /// + /// 设计器支持所需的方法 - 不要 + /// 使用代码编辑器修改此方法的内容。 + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + this.panel1 = new System.Windows.Forms.Panel(); + this.ucControlBase1 = new HZH_Controls.Controls.UCControlBase(); + this.ucDataGridView1 = new HZH_Controls.Controls.UCDataGridView(); + this.m_page = new HZH_Controls.Controls.UCPagerControl(); + this.panel2 = new System.Windows.Forms.Panel(); + this.txtSearch = new HZH_Controls.Controls.UCTextBoxEx(); + this.timer1 = new System.Windows.Forms.Timer(this.components); + this.ucSplitLine_V2 = new HZH_Controls.Controls.UCSplitLine_V(); + this.ucSplitLine_V1 = new HZH_Controls.Controls.UCSplitLine_V(); + this.ucSplitLine_H2 = new HZH_Controls.Controls.UCSplitLine_H(); + this.ucSplitLine_H1 = new HZH_Controls.Controls.UCSplitLine_H(); + this.panel1.SuspendLayout(); + this.ucControlBase1.SuspendLayout(); + this.SuspendLayout(); + // + // panel1 + // + this.panel1.Controls.Add(this.ucControlBase1); + this.panel1.Controls.Add(this.panel2); + this.panel1.Controls.Add(this.txtSearch); + this.panel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel1.Location = new System.Drawing.Point(1, 1); + this.panel1.Name = "panel1"; + this.panel1.Padding = new System.Windows.Forms.Padding(5); + this.panel1.Size = new System.Drawing.Size(447, 333); + this.panel1.TabIndex = 4; + // + // ucControlBase1 + // + this.ucControlBase1.ConerRadius = 5; + this.ucControlBase1.Controls.Add(this.ucDataGridView1); + this.ucControlBase1.Controls.Add(this.m_page); + this.ucControlBase1.Dock = System.Windows.Forms.DockStyle.Fill; + this.ucControlBase1.FillColor = System.Drawing.Color.Transparent; + this.ucControlBase1.Font = new System.Drawing.Font("微软雅黑", 15F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel); + this.ucControlBase1.IsRadius = false; + this.ucControlBase1.IsShowRect = true; + this.ucControlBase1.Location = new System.Drawing.Point(5, 62); + this.ucControlBase1.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.ucControlBase1.Name = "ucControlBase1"; + this.ucControlBase1.Padding = new System.Windows.Forms.Padding(5); + this.ucControlBase1.RectColor = System.Drawing.Color.FromArgb(((int)(((byte)(220)))), ((int)(((byte)(220)))), ((int)(((byte)(220))))); + this.ucControlBase1.RectWidth = 1; + this.ucControlBase1.Size = new System.Drawing.Size(437, 266); + this.ucControlBase1.TabIndex = 2; + this.ucControlBase1.TabStop = false; + // + // ucDataGridView1 + // + this.ucDataGridView1.AutoScroll = true; + this.ucDataGridView1.BackColor = System.Drawing.Color.White; + this.ucDataGridView1.Columns = null; + this.ucDataGridView1.DataSource = null; + this.ucDataGridView1.Dock = System.Windows.Forms.DockStyle.Fill; + this.ucDataGridView1.HeadFont = new System.Drawing.Font("微软雅黑", 12F); + this.ucDataGridView1.HeadHeight = 40; + this.ucDataGridView1.HeadPadingLeft = 0; + this.ucDataGridView1.HeadTextColor = System.Drawing.Color.Black; + this.ucDataGridView1.IsShowCheckBox = false; + this.ucDataGridView1.IsShowHead = true; + this.ucDataGridView1.Location = new System.Drawing.Point(5, 5); + this.ucDataGridView1.Name = "ucDataGridView1"; + this.ucDataGridView1.RowHeight = 30; + this.ucDataGridView1.RowType = typeof(HZH_Controls.Controls.UCDataGridViewRow); + this.ucDataGridView1.Size = new System.Drawing.Size(427, 223); + this.ucDataGridView1.TabIndex = 0; + this.ucDataGridView1.TabStop = false; + // + // m_page + // + this.m_page.DataSource = null; + this.m_page.Dock = System.Windows.Forms.DockStyle.Bottom; + this.m_page.Location = new System.Drawing.Point(5, 228); + this.m_page.Name = "m_page"; + this.m_page.PageCount = 0; + this.m_page.PageIndex = 1; + this.m_page.PageSize = 10; + this.m_page.Size = new System.Drawing.Size(427, 33); + this.m_page.StartIndex = 0; + this.m_page.TabIndex = 1; + // + // panel2 + // + this.panel2.Dock = System.Windows.Forms.DockStyle.Top; + this.panel2.Location = new System.Drawing.Point(5, 47); + this.panel2.Name = "panel2"; + this.panel2.Size = new System.Drawing.Size(437, 15); + this.panel2.TabIndex = 1; + // + // txtSearch + // + this.txtSearch.BackColor = System.Drawing.Color.Transparent; + this.txtSearch.ConerRadius = 5; + this.txtSearch.Cursor = System.Windows.Forms.Cursors.IBeam; + this.txtSearch.DecLength = 2; + this.txtSearch.Dock = System.Windows.Forms.DockStyle.Top; + this.txtSearch.FillColor = System.Drawing.Color.Empty; + this.txtSearch.FocusBorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(77)))), ((int)(((byte)(59))))); + this.txtSearch.Font = new System.Drawing.Font("微软雅黑", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel); + this.txtSearch.InputText = ""; + this.txtSearch.InputType = HZH_Controls.TextInputType.NotControl; + this.txtSearch.IsFocusColor = true; + this.txtSearch.IsRadius = true; + this.txtSearch.IsShowClearBtn = true; + this.txtSearch.IsShowKeyboard = false; + this.txtSearch.IsShowRect = true; + this.txtSearch.IsShowSearchBtn = false; + this.txtSearch.KeyBoardType = HZH_Controls.Controls.KeyBoardType.UCKeyBorderAll_EN; + this.txtSearch.Location = new System.Drawing.Point(5, 5); + this.txtSearch.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.txtSearch.MaxValue = new decimal(new int[] { + 1000000, + 0, + 0, + 0}); + this.txtSearch.MinValue = new decimal(new int[] { + 1000000, + 0, + 0, + -2147483648}); + this.txtSearch.Name = "txtSearch"; + this.txtSearch.Padding = new System.Windows.Forms.Padding(5); + this.txtSearch.PromptColor = System.Drawing.Color.Gray; + this.txtSearch.PromptFont = new System.Drawing.Font("微软雅黑", 15F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel); + this.txtSearch.PromptText = "输入内容模糊搜索"; + this.txtSearch.RectColor = System.Drawing.Color.FromArgb(((int)(((byte)(220)))), ((int)(((byte)(220)))), ((int)(((byte)(220))))); + this.txtSearch.RectWidth = 1; + this.txtSearch.RegexPattern = ""; + this.txtSearch.Size = new System.Drawing.Size(437, 42); + this.txtSearch.TabIndex = 0; + // + // timer1 + // + this.timer1.Interval = 1000; + this.timer1.Tick += new System.EventHandler(this.timer1_Tick); + // + // ucSplitLine_V2 + // + this.ucSplitLine_V2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(232)))), ((int)(((byte)(232)))), ((int)(((byte)(232))))); + this.ucSplitLine_V2.Dock = System.Windows.Forms.DockStyle.Right; + this.ucSplitLine_V2.Location = new System.Drawing.Point(448, 1); + this.ucSplitLine_V2.Name = "ucSplitLine_V2"; + this.ucSplitLine_V2.Size = new System.Drawing.Size(1, 333); + this.ucSplitLine_V2.TabIndex = 3; + this.ucSplitLine_V2.TabStop = false; + // + // ucSplitLine_V1 + // + this.ucSplitLine_V1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(232)))), ((int)(((byte)(232)))), ((int)(((byte)(232))))); + this.ucSplitLine_V1.Dock = System.Windows.Forms.DockStyle.Left; + this.ucSplitLine_V1.Location = new System.Drawing.Point(0, 1); + this.ucSplitLine_V1.Name = "ucSplitLine_V1"; + this.ucSplitLine_V1.Size = new System.Drawing.Size(1, 333); + this.ucSplitLine_V1.TabIndex = 2; + this.ucSplitLine_V1.TabStop = false; + // + // ucSplitLine_H2 + // + this.ucSplitLine_H2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(232)))), ((int)(((byte)(232)))), ((int)(((byte)(232))))); + this.ucSplitLine_H2.Dock = System.Windows.Forms.DockStyle.Bottom; + this.ucSplitLine_H2.Location = new System.Drawing.Point(0, 334); + this.ucSplitLine_H2.Name = "ucSplitLine_H2"; + this.ucSplitLine_H2.Size = new System.Drawing.Size(449, 1); + this.ucSplitLine_H2.TabIndex = 1; + this.ucSplitLine_H2.TabStop = false; + // + // ucSplitLine_H1 + // + this.ucSplitLine_H1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(232)))), ((int)(((byte)(232)))), ((int)(((byte)(232))))); + this.ucSplitLine_H1.Dock = System.Windows.Forms.DockStyle.Top; + this.ucSplitLine_H1.Location = new System.Drawing.Point(0, 0); + this.ucSplitLine_H1.Name = "ucSplitLine_H1"; + this.ucSplitLine_H1.Size = new System.Drawing.Size(449, 1); + this.ucSplitLine_H1.TabIndex = 0; + this.ucSplitLine_H1.TabStop = false; + // + // UCComboxGridPanel + // + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; + this.BackColor = System.Drawing.Color.White; + this.Controls.Add(this.panel1); + this.Controls.Add(this.ucSplitLine_V2); + this.Controls.Add(this.ucSplitLine_V1); + this.Controls.Add(this.ucSplitLine_H2); + this.Controls.Add(this.ucSplitLine_H1); + this.Name = "UCComboxGridPanel"; + this.Size = new System.Drawing.Size(449, 335); + this.Load += new System.EventHandler(this.UCComboxGridPanel_Load); + this.panel1.ResumeLayout(false); + this.ucControlBase1.ResumeLayout(false); + this.ResumeLayout(false); + + } + + #endregion + + /// + /// The uc split line h1 + /// + private UCSplitLine_H ucSplitLine_H1; + /// + /// The uc split line h2 + /// + private UCSplitLine_H ucSplitLine_H2; + /// + /// The uc split line v1 + /// + private UCSplitLine_V ucSplitLine_V1; + /// + /// The uc split line v2 + /// + private UCSplitLine_V ucSplitLine_V2; + /// + /// The panel1 + /// + private System.Windows.Forms.Panel panel1; + /// + /// The uc control base1 + /// + private UCControlBase ucControlBase1; + /// + /// The uc data grid view1 + /// + private UCDataGridView ucDataGridView1; + /// + /// The panel2 + /// + private System.Windows.Forms.Panel panel2; + /// + /// The timer1 + /// + private System.Windows.Forms.Timer timer1; + /// + /// The text search + /// + private UCTextBoxEx txtSearch; + private UCPagerControl m_page; + } +} diff --git a/UsingControl/HZHControls/Controls/ComboBox/UCComboxGridPanel.cs b/UsingControl/HZHControls/Controls/ComboBox/UCComboxGridPanel.cs new file mode 100644 index 0000000..f7bfdef --- /dev/null +++ b/UsingControl/HZHControls/Controls/ComboBox/UCComboxGridPanel.cs @@ -0,0 +1,188 @@ +// *********************************************************************** +// Assembly : HZH_Controls +// Created : 08-28-2019 +// +// *********************************************************************** +// +// Copyright by Huang Zhenghui(黄正辉) All, QQ group:568015492 QQ:623128629 Email:623128629@qq.com +// +// +// Blog: https://www.cnblogs.com/bfyx +// GitHub:https://github.com/kwwwvagaa/NetWinformControl +// gitee:https://gitee.com/kwwwvagaa/net_winform_custom_control.git +// +// If you use this code, please keep this note. +// *********************************************************************** +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace HZH_Controls.Controls +{ + /// + /// Class UCComboxGridPanel. + /// Implements the + /// + /// + [ToolboxItem(false)] + public partial class UCComboxGridPanel : UserControl + { + /// + /// 项点击事件 + /// + [Description("项点击事件"), Category("自定义")] + public event DataGridViewEventHandler ItemClick; + /// + /// The m row type + /// + private Type m_rowType = typeof(UCDataGridViewRow); + /// + /// 行类型 + /// + /// The type of the row. + [Description("行类型"), Category("自定义")] + public Type RowType + { + get { return m_rowType; } + set + { + m_rowType = value; + this.ucDataGridView1.RowType = m_rowType; + } + } + + /// + /// The m columns + /// + private List m_columns = null; + /// + /// 列 + /// + /// The columns. + [Description("列"), Category("自定义")] + public List Columns + { + get { return m_columns; } + set + { + m_columns = value; + this.ucDataGridView1.Columns = value; + } + } + /// + /// The m data source + /// + private List m_dataSource = null; + /// + /// 数据源 + /// + /// The data source. + [Description("数据源"), Category("自定义")] + public List DataSource + { + get { return m_dataSource; } + set { m_dataSource = value; } + } + + /// + /// The string last search text + /// + private string strLastSearchText = string.Empty; + + /// + /// Initializes a new instance of the class. + /// + public UCComboxGridPanel() + { + InitializeComponent(); + this.txtSearch.txtInput.TextChanged += txtInput_TextChanged; + this.ucDataGridView1.ItemClick += ucDataGridView1_ItemClick; + m_page.ShowSourceChanged += m_page_ShowSourceChanged; + } + + + + /// + /// Handles the ItemClick event of the ucDataGridView1 control. + /// + /// The source of the event. + /// The instance containing the event data. + void ucDataGridView1_ItemClick(object sender, DataGridViewEventArgs e) + { + if (ItemClick != null) + { + ItemClick((sender as IDataGridViewRow).DataSource, null); + } + } + + /// + /// Handles the TextChanged event of the txtInput control. + /// + /// The source of the event. + /// The instance containing the event data. + void txtInput_TextChanged(object sender, EventArgs e) + { + timer1.Enabled = false; + timer1.Enabled = true; + } + + /// + /// Handles the Load event of the UCComboxGridPanel control. + /// + /// The source of the event. + /// The instance containing the event data. + private void UCComboxGridPanel_Load(object sender, EventArgs e) + { + m_page.DataSource = m_dataSource; + this.ucDataGridView1.DataSource = m_page.GetCurrentSource(); + } + + /// + /// Handles the Tick event of the timer1 control. + /// + /// The source of the event. + /// The instance containing the event data. + private void timer1_Tick(object sender, EventArgs e) + { + if (strLastSearchText == txtSearch.InputText) + { + timer1.Enabled = false; + } + else + { + strLastSearchText = txtSearch.InputText; + Search(txtSearch.InputText); + } + } + + /// + /// Searches the specified string text. + /// + /// The string text. + private void Search(string strText) + { + m_page.StartIndex = 0; + if (!string.IsNullOrEmpty(strText)) + { + strText = strText.ToLower().Trim(); + List lst = m_dataSource.FindAll(p => m_columns.Any(c => (c.Format == null ? (p.GetType().GetProperty(c.DataField).GetValue(p, null).ToStringExt()) : c.Format(p.GetType().GetProperty(c.DataField).GetValue(p, null))).ToLower().Contains(strText))); + m_page.DataSource = lst; + } + else + { + m_page.DataSource = m_dataSource; + } + m_page.Reload(); + } + + void m_page_ShowSourceChanged(object currentSource) + { + this.ucDataGridView1.DataSource = currentSource; + } + } +} diff --git a/ToolLib.Log/LogForm/UserLogger.resx b/UsingControl/HZHControls/Controls/ComboBox/UCComboxGridPanel.resx similarity index 97% rename from ToolLib.Log/LogForm/UserLogger.resx rename to UsingControl/HZHControls/Controls/ComboBox/UCComboxGridPanel.resx index ad53752..1f666f2 100644 --- a/ToolLib.Log/LogForm/UserLogger.resx +++ b/UsingControl/HZHControls/Controls/ComboBox/UCComboxGridPanel.resx @@ -117,7 +117,7 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + 17, 17 \ No newline at end of file diff --git a/UsingControl/HZHControls/Controls/DataGridView/DataGridViewCellEntity.cs b/UsingControl/HZHControls/Controls/DataGridView/DataGridViewCellEntity.cs new file mode 100644 index 0000000..124df51 --- /dev/null +++ b/UsingControl/HZHControls/Controls/DataGridView/DataGridViewCellEntity.cs @@ -0,0 +1,45 @@ +// *********************************************************************** +// Assembly : HZH_Controls +// Created : 08-09-2019 +// +// *********************************************************************** +// +// Copyright by Huang Zhenghui(黄正辉) All, QQ group:568015492 QQ:623128629 Email:623128629@qq.com +// +// +// Blog: https://www.cnblogs.com/bfyx +// GitHub:https://github.com/kwwwvagaa/NetWinformControl +// gitee:https://gitee.com/kwwwvagaa/net_winform_custom_control.git +// +// If you use this code, please keep this note. +// *********************************************************************** +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace HZH_Controls.Controls +{ + /// + /// Class DataGridViewCellEntity. + /// + public class DataGridViewCellEntity + { + /// + /// Gets or sets the title. + /// + /// The title. + public string Title { get; set; } + /// + /// Gets or sets the width. + /// + /// The width. + public int Width { get; set; } + /// + /// Gets or sets the type of the width. + /// + /// The type of the width. + public System.Windows.Forms.SizeType WidthType { get; set; } + + } +} diff --git a/UsingControl/HZHControls/Controls/DataGridView/DataGridViewCellEventArgs.cs b/UsingControl/HZHControls/Controls/DataGridView/DataGridViewCellEventArgs.cs new file mode 100644 index 0000000..6861649 --- /dev/null +++ b/UsingControl/HZHControls/Controls/DataGridView/DataGridViewCellEventArgs.cs @@ -0,0 +1,48 @@ +// *********************************************************************** +// Assembly : HZH_Controls +// Created : 08-09-2019 +// +// *********************************************************************** +// +// Copyright by Huang Zhenghui(黄正辉) All, QQ group:568015492 QQ:623128629 Email:623128629@qq.com +// +// +// Blog: https://www.cnblogs.com/bfyx +// GitHub:https://github.com/kwwwvagaa/NetWinformControl +// gitee:https://gitee.com/kwwwvagaa/net_winform_custom_control.git +// +// If you use this code, please keep this note. +// *********************************************************************** +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace HZH_Controls.Controls +{ + /// + /// Class DataGridViewEventArgs. + /// Implements the + /// + /// + public class DataGridViewEventArgs : EventArgs + { + /// + /// Gets or sets the cell control. + /// + /// The cell control. + public Control CellControl { get; set; } + /// + /// Gets or sets the index of the cell. + /// + /// The index of the cell. + public int CellIndex { get; set; } + /// + /// Gets or sets the index of the row. + /// + /// The index of the row. + public int RowIndex { get; set; } + + } +} diff --git a/UsingControl/HZHControls/Controls/DataGridView/DataGridViewCellEventHandler.cs b/UsingControl/HZHControls/Controls/DataGridView/DataGridViewCellEventHandler.cs new file mode 100644 index 0000000..bdaf9ac --- /dev/null +++ b/UsingControl/HZHControls/Controls/DataGridView/DataGridViewCellEventHandler.cs @@ -0,0 +1,41 @@ +// *********************************************************************** +// Assembly : HZH_Controls +// Created : 08-09-2019 +// +// *********************************************************************** +// +// Copyright by Huang Zhenghui(黄正辉) All, QQ group:568015492 QQ:623128629 Email:623128629@qq.com +// +// +// Blog: https://www.cnblogs.com/bfyx +// GitHub:https://github.com/kwwwvagaa/NetWinformControl +// gitee:https://gitee.com/kwwwvagaa/net_winform_custom_control.git +// +// If you use this code, please keep this note. +// *********************************************************************** +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.InteropServices; +using System.Text; + +namespace HZH_Controls.Controls +{ + /// + /// Delegate DataGridViewEventHandler + /// + /// The sender. + /// The instance containing the event data. + [Serializable] + [ComVisible(true)] + public delegate void DataGridViewEventHandler(object sender, DataGridViewEventArgs e); + + /// + /// Delegate DataGridViewRowCustomEventHandler + /// + /// The sender. + /// The instance containing the event data. + [Serializable] + [ComVisible(true)] + public delegate void DataGridViewRowCustomEventHandler(object sender, DataGridViewRowCustomEventArgs e); +} diff --git a/UsingControl/HZHControls/Controls/DataGridView/DataGridViewColumnEntity.cs b/UsingControl/HZHControls/Controls/DataGridView/DataGridViewColumnEntity.cs new file mode 100644 index 0000000..b704a0c --- /dev/null +++ b/UsingControl/HZHControls/Controls/DataGridView/DataGridViewColumnEntity.cs @@ -0,0 +1,82 @@ +// *********************************************************************** +// Assembly : HZH_Controls +// Created : 08-09-2019 +// +// *********************************************************************** +// +// Copyright by Huang Zhenghui(黄正辉) All, QQ group:568015492 QQ:623128629 Email:623128629@qq.com +// +// +// Blog: https://www.cnblogs.com/bfyx +// GitHub:https://github.com/kwwwvagaa/NetWinformControl +// gitee:https://gitee.com/kwwwvagaa/net_winform_custom_control.git +// +// If you use this code, please keep this note. +// *********************************************************************** +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Drawing; + +namespace HZH_Controls.Controls +{ + /// + /// Class DataGridViewColumnEntity. + /// + public class DataGridViewColumnEntity + { + /// + /// Gets or sets the head text. + /// + /// The head text. + public string HeadText { get; set; } + /// + /// Gets or sets the width. + /// + /// The width. + public int Width { get; set; } + /// + /// Gets or sets the type of the width. + /// + /// The type of the width. + public System.Windows.Forms.SizeType WidthType { get; set; } + /// + /// Gets or sets the data field. + /// + /// The data field. + public string DataField { get; set; } + /// + /// Gets or sets the format. + /// + /// The format. + public Func Format { get; set; } + /// + /// The text align + /// + private ContentAlignment _TextAlign = ContentAlignment.MiddleCenter; + /// + /// Gets or sets the text align. + /// + /// The text align. + public ContentAlignment TextAlign { get { return _TextAlign; } set { _TextAlign = value; } } + /// + /// 自定义的单元格控件,一个实现IDataGridViewCustomCell的Control + /// + /// The custom cell. + private Type customCellType = null; + public Type CustomCellType + { + get + { + return customCellType; + } + set + { + if (!typeof(IDataGridViewCustomCell).IsAssignableFrom(value) || !value.IsSubclassOf(typeof(System.Windows.Forms.Control))) + throw new Exception("行控件没有实现IDataGridViewCustomCell接口"); + customCellType = value; + } + } + } +} diff --git a/UsingControl/HZHControls/Controls/DataGridView/DataGridViewRowCustomEventArgs.cs b/UsingControl/HZHControls/Controls/DataGridView/DataGridViewRowCustomEventArgs.cs new file mode 100644 index 0000000..2c8478b --- /dev/null +++ b/UsingControl/HZHControls/Controls/DataGridView/DataGridViewRowCustomEventArgs.cs @@ -0,0 +1,36 @@ +// *********************************************************************** +// Assembly : HZH_Controls +// Created : 08-27-2019 +// +// *********************************************************************** +// +// Copyright by Huang Zhenghui(黄正辉) All, QQ group:568015492 QQ:623128629 Email:623128629@qq.com +// +// +// Blog: https://www.cnblogs.com/bfyx +// GitHub:https://github.com/kwwwvagaa/NetWinformControl +// gitee:https://gitee.com/kwwwvagaa/net_winform_custom_control.git +// +// If you use this code, please keep this note. +// *********************************************************************** +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace HZH_Controls.Controls +{ + /// + /// Class DataGridViewRowCustomEventArgs. + /// Implements the + /// + /// + public class DataGridViewRowCustomEventArgs : EventArgs + { + /// + /// Gets or sets the name of the event. + /// + /// The name of the event. + public string EventName { get; set; } + } +} diff --git a/UsingControl/HZHControls/Controls/DataGridView/IDataGridViewCustomCell.cs b/UsingControl/HZHControls/Controls/DataGridView/IDataGridViewCustomCell.cs new file mode 100644 index 0000000..8801a51 --- /dev/null +++ b/UsingControl/HZHControls/Controls/DataGridView/IDataGridViewCustomCell.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace HZH_Controls.Controls +{ + public interface IDataGridViewCustomCell + { + /// + /// 绑定行关联的数据 + /// + /// The object. + void SetBindSource(object obj); + } +} diff --git a/UsingControl/HZHControls/Controls/DataGridView/IDataGridViewRow.cs b/UsingControl/HZHControls/Controls/DataGridView/IDataGridViewRow.cs new file mode 100644 index 0000000..ffe9d14 --- /dev/null +++ b/UsingControl/HZHControls/Controls/DataGridView/IDataGridViewRow.cs @@ -0,0 +1,91 @@ +// *********************************************************************** +// Assembly : HZH_Controls +// Created : 08-09-2019 +// +// *********************************************************************** +// +// Copyright by Huang Zhenghui(黄正辉) All, QQ group:568015492 QQ:623128629 Email:623128629@qq.com +// +// +// Blog: https://www.cnblogs.com/bfyx +// GitHub:https://github.com/kwwwvagaa/NetWinformControl +// gitee:https://gitee.com/kwwwvagaa/net_winform_custom_control.git +// +// If you use this code, please keep this note. +// *********************************************************************** +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace HZH_Controls.Controls +{ + /// + /// Interface IDataGridViewRow + /// + public interface IDataGridViewRow + { + /// + /// Occurs when [row custom event]. + /// + event DataGridViewRowCustomEventHandler RowCustomEvent; + /// + /// CheckBox选中事件 + /// + event DataGridViewEventHandler CheckBoxChangeEvent; + /// + /// 点击单元格事件 + /// + event DataGridViewEventHandler CellClick; + /// + /// 数据源改变事件 + /// + event DataGridViewEventHandler SourceChanged; + /// + /// 列参数,用于创建列数和宽度 + /// + /// The columns. + List Columns { get; set; } + /// + /// Gets or sets a value indicating whether this instance is show CheckBox. + /// + /// true if this instance is show CheckBox; otherwise, false. + bool IsShowCheckBox { get; set; } + /// + /// 是否选中 + /// + /// true if this instance is checked; otherwise, false. + bool IsChecked { get; set; } + + /// + /// 数据源 + /// + /// The data source. + object DataSource { get; set; } + /// + /// 添加单元格元素,仅做添加控件操作,不做数据绑定,数据绑定使用BindingCells + /// + void ReloadCells(); + /// + /// 绑定数据到Cell + /// + /// 返回true则表示已处理过,否则将进行默认绑定(通常只针对有Text值的控件) + void BindingCellData(); + /// + /// 设置选中状态,通常为设置颜色即可 + /// + /// 是否选中 + void SetSelect(bool blnSelected); + /// + /// 行高 + /// + /// The height of the row. + int RowHeight { get; set; } + /// + /// 行号 + /// + /// The Index of the row. + int RowIndex { get; set; } + } +} diff --git a/UsingControl/HZHControls/Controls/DataGridView/UCDataGridView.Designer.cs b/UsingControl/HZHControls/Controls/DataGridView/UCDataGridView.Designer.cs new file mode 100644 index 0000000..b5465db --- /dev/null +++ b/UsingControl/HZHControls/Controls/DataGridView/UCDataGridView.Designer.cs @@ -0,0 +1,148 @@ +// *********************************************************************** +// Assembly : HZH_Controls +// Created : 08-09-2019 +// +// *********************************************************************** +// +// Copyright by Huang Zhenghui(黄正辉) All, QQ group:568015492 QQ:623128629 Email:623128629@qq.com +// +// +// Blog: https://www.cnblogs.com/bfyx +// GitHub:https://github.com/kwwwvagaa/NetWinformControl +// gitee:https://gitee.com/kwwwvagaa/net_winform_custom_control.git +// +// If you use this code, please keep this note. +// *********************************************************************** +namespace HZH_Controls.Controls +{ + /// + /// Class UCDataGridView. + /// Implements the + /// + /// + partial class UCDataGridView + { + /// + /// 必需的设计器变量。 + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 清理所有正在使用的资源。 + /// + /// 如果应释放托管资源,为 true;否则为 false。 + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region 组件设计器生成的代码 + + /// + /// 设计器支持所需的方法 - 不要 + /// 使用代码编辑器修改此方法的内容。 + /// + private void InitializeComponent() + { + this.panHead = new System.Windows.Forms.Panel(); + this.panColumns = new System.Windows.Forms.TableLayoutPanel(); + this.panHeadLeft = new System.Windows.Forms.Panel(); + this.ucSplitLine_H1 = new HZH_Controls.Controls.UCSplitLine_H(); + this.panRow = new System.Windows.Forms.Panel(); + this.panHead.SuspendLayout(); + this.SuspendLayout(); + // + // panHead + // + this.panHead.Controls.Add(this.panColumns); + this.panHead.Controls.Add(this.panHeadLeft); + this.panHead.Controls.Add(this.ucSplitLine_H1); + this.panHead.Dock = System.Windows.Forms.DockStyle.Top; + this.panHead.Location = new System.Drawing.Point(0, 0); + this.panHead.Name = "panHead"; + this.panHead.Size = new System.Drawing.Size(1061, 40); + this.panHead.TabIndex = 0; + // + // panColumns + // + this.panColumns.ColumnCount = 1; + this.panColumns.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.panColumns.Dock = System.Windows.Forms.DockStyle.Fill; + this.panColumns.Location = new System.Drawing.Point(0, 0); + this.panColumns.Name = "panColumns"; + this.panColumns.RowCount = 1; + this.panColumns.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.panColumns.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F)); + this.panColumns.Size = new System.Drawing.Size(1061, 39); + this.panColumns.TabIndex = 1; + // + // panHeadLeft + // + this.panHeadLeft.Dock = System.Windows.Forms.DockStyle.Left; + this.panHeadLeft.Location = new System.Drawing.Point(0, 0); + this.panHeadLeft.Name = "panHeadLeft"; + this.panHeadLeft.Size = new System.Drawing.Size(0, 39); + this.panHeadLeft.TabIndex = 2; + // + // ucSplitLine_H1 + // + this.ucSplitLine_H1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(232)))), ((int)(((byte)(232)))), ((int)(((byte)(232))))); + this.ucSplitLine_H1.Dock = System.Windows.Forms.DockStyle.Bottom; + this.ucSplitLine_H1.Location = new System.Drawing.Point(0, 39); + this.ucSplitLine_H1.Name = "ucSplitLine_H1"; + this.ucSplitLine_H1.Size = new System.Drawing.Size(1061, 1); + this.ucSplitLine_H1.TabIndex = 0; + this.ucSplitLine_H1.TabStop = false; + // + // panRow + // + this.panRow.AutoScroll = true; + this.panRow.Dock = System.Windows.Forms.DockStyle.Fill; + this.panRow.Location = new System.Drawing.Point(0, 40); + this.panRow.Name = "panRow"; + this.panRow.Size = new System.Drawing.Size(1061, 525); + this.panRow.TabIndex = 1; + // + // UCDataGridView + // + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; + this.AutoScroll = true; + this.BackColor = System.Drawing.Color.White; + this.Controls.Add(this.panRow); + this.Controls.Add(this.panHead); + this.Name = "UCDataGridView"; + this.Size = new System.Drawing.Size(1061, 565); + this.panHead.ResumeLayout(false); + this.ResumeLayout(false); + + } + + #endregion + + /// + /// The pan head + /// + private System.Windows.Forms.Panel panHead; + /// + /// The pan columns + /// + private System.Windows.Forms.TableLayoutPanel panColumns; + /// + /// The uc split line h1 + /// + private UCSplitLine_H ucSplitLine_H1; + /// + /// The pan row + /// + private System.Windows.Forms.Panel panRow; + /// + /// The pan head left + /// + private System.Windows.Forms.Panel panHeadLeft; + + } +} diff --git a/UsingControl/HZHControls/Controls/DataGridView/UCDataGridView.cs b/UsingControl/HZHControls/Controls/DataGridView/UCDataGridView.cs new file mode 100644 index 0000000..317ac7a --- /dev/null +++ b/UsingControl/HZHControls/Controls/DataGridView/UCDataGridView.cs @@ -0,0 +1,714 @@ +// *********************************************************************** +// Assembly : HZH_Controls +// Created : 08-09-2019 +// +// *********************************************************************** +// +// Copyright by Huang Zhenghui(黄正辉) All, QQ group:568015492 QQ:623128629 Email:623128629@qq.com +// +// +// Blog: https://www.cnblogs.com/bfyx +// GitHub:https://github.com/kwwwvagaa/NetWinformControl +// gitee:https://gitee.com/kwwwvagaa/net_winform_custom_control.git +// +// If you use this code, please keep this note. +// *********************************************************************** +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using System.Collections; + +namespace HZH_Controls.Controls +{ + /// + /// Class UCDataGridView. + /// Implements the + /// + /// + public partial class UCDataGridView : UserControl + { + #region 属性 + /// + /// The m head pading left + /// + private int m_headPadingLeft = 0; + + /// + /// Gets or sets the head pading left. + /// + /// The head pading left. + [Description("标题左侧间距"), Category("自定义")] + public int HeadPadingLeft + { + get { return m_headPadingLeft; } + set + { + m_headPadingLeft = value; + this.panHeadLeft.Width = m_headPadingLeft; + } + } + + /// + /// The m head font + /// + private Font m_headFont = new Font("微软雅黑", 12F); + /// + /// 标题字体 + /// + /// The head font. + [Description("标题字体"), Category("自定义")] + public Font HeadFont + { + get { return m_headFont; } + set { m_headFont = value; } + } + /// + /// The m head text color + /// + private Color m_headTextColor = Color.Black; + /// + /// 标题字体颜色 + /// + /// The color of the head text. + [Description("标题文字颜色"), Category("自定义")] + public Color HeadTextColor + { + get { return m_headTextColor; } + set { m_headTextColor = value; } + } + + /// + /// The m is show head + /// + private bool m_isShowHead = true; + /// + /// 是否显示标题 + /// + /// true if this instance is show head; otherwise, false. + [Description("是否显示标题"), Category("自定义")] + public bool IsShowHead + { + get { return m_isShowHead; } + set + { + m_isShowHead = value; + panHead.Visible = value; + } + } + /// + /// The m head height + /// + private int m_headHeight = 40; + /// + /// 标题高度 + /// + /// The height of the head. + [Description("标题高度"), Category("自定义")] + public int HeadHeight + { + get { return m_headHeight; } + set + { + m_headHeight = value; + panHead.Height = value; + } + } + + /// + /// The m is show CheckBox + /// + private bool m_isShowCheckBox = false; + /// + /// 是否显示复选框 + /// + /// true if this instance is show CheckBox; otherwise, false. + [Description("是否显示选择框"), Category("自定义")] + public bool IsShowCheckBox + { + get { return m_isShowCheckBox; } + set + { + if (value != m_isShowCheckBox) + { + m_isShowCheckBox = value; + LoadColumns(); + } + } + } + + /// + /// The m row height + /// + private int m_rowHeight = 40; + /// + /// 行高 + /// + /// The height of the row. + [Description("数据行高"), Category("自定义")] + public int RowHeight + { + get { return m_rowHeight; } + set { m_rowHeight = value; } + } + + + /// + /// Gets the show count. + /// + /// The show count. + [Description("当前高度可显示行个数"), Category("自定义")] + public int ShowCount + { + get + { + return this.panRow.Height / (m_rowHeight); + } + } + + /// + /// The m columns + /// + private List m_columns = null; + /// + /// 列 + /// + /// The columns. + [Description("列"), Category("自定义")] + public List Columns + { + get { return m_columns; } + set + { + m_columns = value; + LoadColumns(); + } + } + + /// + /// The m data source + /// + private object m_dataSource = null; + /// + /// 数据源,支持列表或table,如果使用翻页控件,请使用翻页控件的DataSource + /// + /// The data source. + /// 数据源不是有效的数据类型,请使用Datatable或列表 + /// 数据源不是有效的数据类型,请使用Datatable或列表 + [Description("数据源,支持列表或table,如果使用翻页控件,请使用翻页控件的DataSource"), Category("自定义")] + public object DataSource + { + get { return m_dataSource; } + set + { + if (value != null) + { + if (!(value is DataTable) && (!typeof(IList).IsAssignableFrom(value.GetType()))) + { + throw new Exception("数据源不是有效的数据类型,请使用Datatable或列表"); + } + } + m_dataSource = value; + if (m_columns != null && m_columns.Count > 0) + { + ReloadSource(); + } + if (BindingSourceEvent != null) + { + BindingSourceEvent(this, null); + } + } + } + + /// + /// Gets the rows. + /// + /// The rows. + public List Rows { get; private set; } + + /// + /// The m row type + /// + private Type m_rowType = typeof(UCDataGridViewRow); + /// + /// 行元素类型,默认UCDataGridViewItem + /// + /// The type of the row. + /// 行控件没有实现IDataGridViewRow接口 + /// 行控件没有实现IDataGridViewRow接口 + [Description("行控件类型,默认UCDataGridViewRow,如果不满足请自定义行控件实现接口IDataGridViewRow"), Category("自定义")] + public Type RowType + { + get { return m_rowType; } + set + { + if (value == null) + return; + if (!typeof(IDataGridViewRow).IsAssignableFrom(value) || !value.IsSubclassOf(typeof(Control))) + throw new Exception("行控件没有实现IDataGridViewRow接口"); + m_rowType = value; + if (m_columns != null && m_columns.Count > 0) + ReloadSource(); + } + } + + /// + /// The m select row + /// + IDataGridViewRow m_selectRow = null; + /// + /// 选中的节点 + /// + /// The select row. + [Description("选中行"), Category("自定义")] + public IDataGridViewRow SelectRow + { + get { return m_selectRow; } + private set { m_selectRow = value; } + } + + + /// + /// 选中的行,如果显示CheckBox,则以CheckBox选中为准 + /// + /// The select rows. + [Description("选中的行,如果显示CheckBox,则以CheckBox选中为准"), Category("自定义")] + public List SelectRows + { + get + { + return GetSelectRows(); + } + } + + /// + /// Gets the select rows. + /// + /// List<IDataGridViewRow>. + private List GetSelectRows() + { + List lst = new List(); + if (m_isShowCheckBox) + { + if (Rows != null && Rows.Count > 0) + lst.AddRange(Rows.FindAll(p => p.IsChecked)); + } + else + { + if (m_selectRow != null) + lst.AddRange(new List() { m_selectRow }); + } + if (Rows != null && Rows.Count > 0) + { + foreach (var row in Rows) + { + Control c = row as Control; + UCDataGridView grid = FindChildGrid(c); + if (grid != null) + lst.AddRange(grid.SelectRows); + } + } + return lst; + } + + /// + /// Finds the child grid. + /// + /// The c. + /// UCDataGridView. + private UCDataGridView FindChildGrid(Control c) + { + foreach (Control item in c.Controls) + { + if (item is UCDataGridView) + return item as UCDataGridView; + else if (item.Controls.Count > 0) + { + var grid = FindChildGrid(item); + if (grid != null) + return grid; + } + } + return null; + } + + #region 事件 + /// + /// The head CheckBox change event + /// + [Description("选中标题选择框事件"), Category("自定义")] + public EventHandler HeadCheckBoxChangeEvent; + /// + /// The head column click event + /// + [Description("标题点击事件"), Category("自定义")] + public EventHandler HeadColumnClickEvent; + /// + /// Occurs when [item click]. + /// + [Description("项点击事件"), Category("自定义")] + public event DataGridViewEventHandler ItemClick; + /// + /// Occurs when [source changed]. + /// + [Description("行数据源改变事件"), Category("自定义")] + public event DataGridViewEventHandler RowSourceChangedEvent; + /// + /// Occurs when [row custom event]. + /// + [Description("预留的自定义的事件,比如你需要在行上放置删改等按钮时,可以通过此事件传递出来"), Category("自定义")] + public event DataGridViewRowCustomEventHandler RowCustomEvent; + [Description("绑定数据源后事件"), Category("自定义")] + public event EventHandler BindingSourceEvent; + #endregion + #endregion + + /// + /// Initializes a new instance of the class. + /// + public UCDataGridView() + { + InitializeComponent(); + } + + #region 私有方法 + #region 加载column + /// + /// 功能描述:加载column + /// 作  者:HZH + /// 创建日期:2019-08-08 17:51:50 + /// 任务编号:POS + /// + private void LoadColumns() + { + try + { + if (DesignMode) + { return; } + + ControlHelper.FreezeControl(this.panHead, true); + this.panRow.Controls.Clear(); + this.panColumns.Controls.Clear(); + this.panColumns.ColumnStyles.Clear(); + + if (m_columns != null && m_columns.Count() > 0) + { + int intColumnsCount = m_columns.Count(); + if (m_isShowCheckBox) + { + intColumnsCount++; + } + this.panColumns.ColumnCount = intColumnsCount; + for (int i = 0; i < intColumnsCount; i++) + { + Control c = null; + if (i == 0 && m_isShowCheckBox) + { + this.panColumns.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(SizeType.Absolute, 30F)); + + UCCheckBox box = new UCCheckBox(); + box.TextValue = ""; + box.Size = new Size(30, 30); + box.CheckedChangeEvent += (a, b) => + { + Rows.ForEach(p => p.IsChecked = box.Checked); + if (HeadCheckBoxChangeEvent != null) + { + HeadCheckBoxChangeEvent(a, b); + } + }; + c = box; + } + else + { + var item = m_columns[i - (m_isShowCheckBox ? 1 : 0)]; + this.panColumns.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(item.WidthType, item.Width)); + Label lbl = new Label(); + lbl.Name = "dgvColumns_" + i; + lbl.Text = item.HeadText; + lbl.Font = m_headFont; + lbl.ForeColor = m_headTextColor; + lbl.TextAlign = ContentAlignment.MiddleCenter; + lbl.AutoSize = false; + lbl.Dock = DockStyle.Fill; + lbl.MouseDown += (a, b) => + { + if (HeadColumnClickEvent != null) + { + HeadColumnClickEvent(a, b); + } + }; + c = lbl; + } + this.panColumns.Controls.Add(c, i, 0); + } + + } + } + finally + { + ControlHelper.FreezeControl(this.panHead, false); + } + } + #endregion + + #endregion + + #region 公共函数 + /// + /// 刷新数据 + /// + public void ReloadSource() + { + if (DesignMode) + { return; } + try + { + ControlHelper.FreezeControl(this, true); + Rows = new List(); + if (m_columns == null || m_columns.Count <= 0) + return; + if (m_dataSource != null) + { + int intIndex = 0; + + int intSourceCount = 0; + if (m_dataSource is DataTable) + { + intSourceCount = (m_dataSource as DataTable).Rows.Count; + } + else if (typeof(IList).IsAssignableFrom(m_dataSource.GetType())) + { + intSourceCount = (m_dataSource as IList).Count; + } + + foreach (Control item in this.panRow.Controls) + { + if (intIndex >= intSourceCount) + { + item.Visible = false; + } + else + { + var row = (item as IDataGridViewRow); + row.IsShowCheckBox = m_isShowCheckBox; + if (m_dataSource is DataTable) + { + row.DataSource = (m_dataSource as DataTable).Rows[intIndex]; + } + else + { + row.DataSource = (m_dataSource as IList)[intIndex]; + } + row.BindingCellData(); + if (row.RowHeight != m_rowHeight) + row.RowHeight = m_rowHeight; + item.Visible = true; + item.BringToFront(); + + Rows.Add(row); + row.RowIndex = Rows.IndexOf(row); + } + intIndex++; + } + + if (intIndex < intSourceCount) + { + for (int i = intIndex; i < intSourceCount; i++) + { + IDataGridViewRow row = (IDataGridViewRow)Activator.CreateInstance(m_rowType); + if (m_dataSource is DataTable) + { + row.DataSource = (m_dataSource as DataTable).Rows[i]; + } + else + { + row.DataSource = (m_dataSource as IList)[i]; + } + row.Columns = m_columns; + List lstCells = new List(); + row.IsShowCheckBox = m_isShowCheckBox; + row.ReloadCells(); + row.BindingCellData(); + + Control rowControl = (row as Control); + row.RowHeight = m_rowHeight; + rowControl.Dock = DockStyle.Top; + row.CellClick += (a, b) => { SetSelectRow(rowControl, b); }; + row.CheckBoxChangeEvent += (a, b) => { SetSelectRow(rowControl, b); }; + row.RowCustomEvent += (a, b) => { if (RowCustomEvent != null) { RowCustomEvent(a, b); } }; + row.SourceChanged += RowSourceChanged; + Rows.Add(row); + row.RowIndex = Rows.IndexOf(row); + this.panRow.Controls.Add(rowControl); + rowControl.BringToFront(); + + } + } + } + else + { + foreach (Control item in this.panRow.Controls) + { + item.Visible = false; + } + } + } + finally + { + ControlHelper.FreezeControl(this, false); + } + } + + /// + /// 快捷键 + /// + /// 通过引用传递的 ,它表示要处理的窗口消息。 + /// 值之一,它表示要处理的键。 + /// 如果字符已由控件处理,则为 true;否则为 false。 + protected override bool ProcessCmdKey(ref Message msg, Keys keyData) + { + if (keyData == Keys.Up) + { + Previous(); + } + else if (keyData == Keys.Down) + { + Next(); + } + else if (keyData == Keys.Home) + { + First(); + } + else if (keyData == Keys.End) + { + End(); + } + return base.ProcessCmdKey(ref msg, keyData); + } + /// + /// 选中第一个 + /// + public void First() + { + if (Rows == null || Rows.Count <= 0) + return; + Control c = null; + c = (Rows[0] as Control); + SetSelectRow(c, new DataGridViewEventArgs() { RowIndex = 0 }); + } + /// + /// 选中上一个 + /// + public void Previous() + { + if (Rows == null || Rows.Count <= 0) + return; + Control c = null; + + int index = Rows.IndexOf(m_selectRow); + if (index - 1 >= 0) + { + c = (Rows[index - 1] as Control); + SetSelectRow(c, new DataGridViewEventArgs() { RowIndex = index - 1 }); + } + } + /// + /// 选中下一个 + /// + public void Next() + { + if (Rows == null || Rows.Count <= 0) + return; + Control c = null; + + int index = Rows.IndexOf(m_selectRow); + if (index + 1 < Rows.Count) + { + c = (Rows[index + 1] as Control); + SetSelectRow(c, new DataGridViewEventArgs() { RowIndex = index + 1 }); + } + } + /// + /// 选中最后一个 + /// + public void End() + { + if (Rows == null || Rows.Count <= 0) + return; + Control c = null; + c = (Rows[Rows.Count - 1] as Control); + SetSelectRow(c, new DataGridViewEventArgs() { RowIndex = Rows.Count - 1 }); + } + + #endregion + + #region 事件 + /// + /// Rows the source changed. + /// + /// The sender. + /// The instance containing the event data. + void RowSourceChanged(object sender, DataGridViewEventArgs e) + { + if (RowSourceChangedEvent != null) + RowSourceChangedEvent(sender, e); + } + /// + /// Sets the select row. + /// + /// The item. + /// The instance containing the event data. + private void SetSelectRow(Control item, DataGridViewEventArgs e) + { + try + { + ControlHelper.FreezeControl(this, true); + if (item == null) + return; + if (item.Visible == false) + return; + this.FindForm().ActiveControl = this; + this.FindForm().ActiveControl = item; + if (m_selectRow != item) + { + if (m_selectRow != null) + { + m_selectRow.SetSelect(false); + } + m_selectRow = item as IDataGridViewRow; + m_selectRow.SetSelect(true); + + if (this.panRow.Controls.Count > 0) + { + if (item.Location.Y < 0) + { + this.panRow.AutoScrollPosition = new Point(0, Math.Abs(this.panRow.Controls[this.panRow.Controls.Count - 1].Location.Y) + item.Location.Y); + } + else if (item.Location.Y + m_rowHeight > this.panRow.Height) + { + this.panRow.AutoScrollPosition = new Point(0, Math.Abs(this.panRow.AutoScrollPosition.Y) + item.Location.Y - this.panRow.Height + m_rowHeight); + } + } + } + + + if (ItemClick != null) + { + ItemClick(item, e); + } + } + finally + { + ControlHelper.FreezeControl(this, false); + } + } + + #endregion + + } +} diff --git a/UsingControl/HZHControls/Controls/DataGridView/UCDataGridView.resx b/UsingControl/HZHControls/Controls/DataGridView/UCDataGridView.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/UsingControl/HZHControls/Controls/DataGridView/UCDataGridView.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/UsingControl/HZHControls/Controls/DataGridView/UCDataGridViewRow.Designer.cs b/UsingControl/HZHControls/Controls/DataGridView/UCDataGridViewRow.Designer.cs new file mode 100644 index 0000000..78ce86b --- /dev/null +++ b/UsingControl/HZHControls/Controls/DataGridView/UCDataGridViewRow.Designer.cs @@ -0,0 +1,102 @@ +// *********************************************************************** +// Assembly : HZH_Controls +// Created : 08-09-2019 +// +// *********************************************************************** +// +// Copyright by Huang Zhenghui(黄正辉) All, QQ group:568015492 QQ:623128629 Email:623128629@qq.com +// +// +// Blog: https://www.cnblogs.com/bfyx +// GitHub:https://github.com/kwwwvagaa/NetWinformControl +// gitee:https://gitee.com/kwwwvagaa/net_winform_custom_control.git +// +// If you use this code, please keep this note. +// *********************************************************************** +namespace HZH_Controls.Controls +{ + /// + /// Class UCDataGridViewRow. + /// Implements the + /// + /// + partial class UCDataGridViewRow + { + /// + /// 必需的设计器变量。 + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 清理所有正在使用的资源。 + /// + /// 如果应释放托管资源,为 true;否则为 false。 + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region 组件设计器生成的代码 + + /// + /// 设计器支持所需的方法 - 不要 + /// 使用代码编辑器修改此方法的内容。 + /// + private void InitializeComponent() + { + this.ucSplitLine_H1 = new HZH_Controls.Controls.UCSplitLine_H(); + this.panCells = new System.Windows.Forms.TableLayoutPanel(); + this.SuspendLayout(); + // + // ucSplitLine_H1 + // + this.ucSplitLine_H1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(232)))), ((int)(((byte)(232)))), ((int)(((byte)(232))))); + this.ucSplitLine_H1.Dock = System.Windows.Forms.DockStyle.Bottom; + this.ucSplitLine_H1.Location = new System.Drawing.Point(0, 55); + this.ucSplitLine_H1.Name = "ucSplitLine_H1"; + this.ucSplitLine_H1.Size = new System.Drawing.Size(661, 1); + this.ucSplitLine_H1.TabIndex = 0; + this.ucSplitLine_H1.TabStop = false; + // + // panCells + // + this.panCells.ColumnCount = 1; + this.panCells.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.panCells.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 20F)); + this.panCells.Dock = System.Windows.Forms.DockStyle.Fill; + this.panCells.Location = new System.Drawing.Point(0, 0); + this.panCells.Name = "panCells"; + this.panCells.RowCount = 1; + this.panCells.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.panCells.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F)); + this.panCells.Size = new System.Drawing.Size(661, 55); + this.panCells.TabIndex = 1; + // + // UCDataGridViewItem + // + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; + this.BackColor = System.Drawing.Color.White; + this.Controls.Add(this.panCells); + this.Controls.Add(this.ucSplitLine_H1); + this.Name = "UCDataGridViewItem"; + this.Size = new System.Drawing.Size(661, 56); + this.ResumeLayout(false); + + } + + #endregion + + /// + /// The uc split line h1 + /// + private UCSplitLine_H ucSplitLine_H1; + /// + /// The pan cells + /// + private System.Windows.Forms.TableLayoutPanel panCells; + } +} diff --git a/UsingControl/HZHControls/Controls/DataGridView/UCDataGridViewRow.cs b/UsingControl/HZHControls/Controls/DataGridView/UCDataGridViewRow.cs new file mode 100644 index 0000000..b4d1daa --- /dev/null +++ b/UsingControl/HZHControls/Controls/DataGridView/UCDataGridViewRow.cs @@ -0,0 +1,323 @@ +// *********************************************************************** +// Assembly : HZH_Controls +// Created : 08-09-2019 +// +// *********************************************************************** +// +// Copyright by Huang Zhenghui(黄正辉) All, QQ group:568015492 QQ:623128629 Email:623128629@qq.com +// +// +// Blog: https://www.cnblogs.com/bfyx +// GitHub:https://github.com/kwwwvagaa/NetWinformControl +// gitee:https://gitee.com/kwwwvagaa/net_winform_custom_control.git +// +// If you use this code, please keep this note. +// *********************************************************************** +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace HZH_Controls.Controls +{ + /// + /// Class UCDataGridViewRow. + /// Implements the + /// Implements the + /// + /// + /// + [ToolboxItem(false)] + public partial class UCDataGridViewRow : UserControl, IDataGridViewRow + { + + #region 属性 + /// + /// CheckBox选中事件 + /// + public event DataGridViewEventHandler CheckBoxChangeEvent; + /// + /// Occurs when [row custom event]. + /// + public event DataGridViewRowCustomEventHandler RowCustomEvent; + /// + /// 点击单元格事件 + /// + public event DataGridViewEventHandler CellClick; + + /// + /// 数据源改变事件 + /// + public event DataGridViewEventHandler SourceChanged; + + /// + /// 列参数,用于创建列数和宽度 + /// + /// The columns. + public List Columns + { + get; + set; + } + + /// + /// 数据源 + /// + /// The data source. + public object DataSource + { + get; + set; + } + + /// + /// 行号 + /// + /// The Index of the row. + public int RowIndex { get; set; } + + /// + /// Gets or sets a value indicating whether this instance is show CheckBox. + /// + /// true if this instance is show CheckBox; otherwise, false. + public bool IsShowCheckBox + { + get; + set; + } + /// + /// The m is checked + /// + private bool m_isChecked; + /// + /// 是否选中 + /// + /// true if this instance is checked; otherwise, false. + public bool IsChecked + { + get + { + return m_isChecked; + } + + set + { + if (m_isChecked != value) + { + m_isChecked = value; + (this.panCells.Controls.Find("check", false)[0] as UCCheckBox).Checked = value; + } + } + } + /// + /// The m row height + /// + int m_rowHeight = 40; + /// + /// 行高 + /// + /// The height of the row. + public int RowHeight + { + get + { + return m_rowHeight; + } + set + { + m_rowHeight = value; + this.Height = value; + } + } + + #endregion + + /// + /// Initializes a new instance of the class. + /// + public UCDataGridViewRow() + { + InitializeComponent(); + } + + /// + /// 绑定数据到Cell + /// + /// 返回true则表示已处理过,否则将进行默认绑定(通常只针对有Text值的控件) + public void BindingCellData() + { + if (DataSource != null) + { + for (int i = 0; i < Columns.Count; i++) + { + DataGridViewColumnEntity com = Columns[i]; + var cs = this.panCells.Controls.Find("lbl_" + com.DataField, false); + if (cs != null && cs.Length > 0) + { + if (DataSource is DataRow) + { + DataRow row=DataSource as DataRow; + if (com.Format != null) + { + cs[0].Text = com.Format(row[com.DataField]); + } + else + { + cs[0].Text = row[com.DataField].ToStringExt(); + } + } + else + { + var pro = DataSource.GetType().GetProperty(com.DataField); + + if (pro != null) + { + var value = pro.GetValue(DataSource, null); + if (com.Format != null) + { + cs[0].Text = com.Format(value); + } + else + { + cs[0].Text = value.ToStringExt(); + } + } + } + } + } + } + foreach (Control item in this.panCells.Controls) + { + if (item is IDataGridViewCustomCell) + { + IDataGridViewCustomCell cell = item as IDataGridViewCustomCell; + cell.SetBindSource(DataSource); + } + } + } + + /// + /// Handles the MouseDown event of the Item control. + /// + /// The source of the event. + /// The instance containing the event data. + void Item_MouseDown(object sender, MouseEventArgs e) + { + if (CellClick != null) + { + CellClick(this, new DataGridViewEventArgs() + { + CellControl = this, + CellIndex = (sender as Control).Tag.ToInt(), + RowIndex = this.RowIndex + }); + } + } + + /// + /// 设置选中状态,通常为设置颜色即可 + /// + /// 是否选中 + public void SetSelect(bool blnSelected) + { + if (blnSelected) + { + this.BackColor = Color.FromArgb(255, 247, 245); + } + else + { + this.BackColor = Color.Transparent; + } + } + + /// + /// Reloads the cells. + /// + public void ReloadCells() + { + try + { + ControlHelper.FreezeControl(this, true); + this.panCells.Controls.Clear(); + this.panCells.ColumnStyles.Clear(); + + int intColumnsCount = Columns.Count(); + if (Columns != null && intColumnsCount > 0) + { + if (IsShowCheckBox) + { + intColumnsCount++; + } + this.panCells.ColumnCount = intColumnsCount; + for (int i = 0; i < intColumnsCount; i++) + { + Control c = null; + if (i == 0 && IsShowCheckBox) + { + this.panCells.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(SizeType.Absolute, 30F)); + + UCCheckBox box = new UCCheckBox(); + box.Name = "check"; + box.TextValue = ""; + box.Size = new Size(30, 30); + box.Dock = DockStyle.Fill; + box.CheckedChangeEvent += (a, b) => + { + IsChecked = box.Checked; + if (CheckBoxChangeEvent != null) + { + CheckBoxChangeEvent(a, new DataGridViewEventArgs() + { + RowIndex = this.RowIndex, + CellControl = box, + CellIndex = 0 + }); + } + }; + c = box; + } + else + { + var item = Columns[i - (IsShowCheckBox ? 1 : 0)]; + this.panCells.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(item.WidthType, item.Width)); + + if (item.CustomCellType == null) + { + Label lbl = new Label(); + lbl.Tag = i - (IsShowCheckBox ? 1 : 0); + lbl.Name = "lbl_" + item.DataField; + lbl.Font = new Font("微软雅黑", 12); + lbl.ForeColor = Color.Black; + lbl.AutoSize = false; + lbl.Dock = DockStyle.Fill; + lbl.TextAlign = item.TextAlign; + lbl.MouseDown += (a, b) => + { + Item_MouseDown(a, b); + }; + c = lbl; + } + else + { + Control cc = (Control)Activator.CreateInstance(item.CustomCellType); + cc.Dock = DockStyle.Fill; + c = cc; + } + } + this.panCells.Controls.Add(c, i, 0); + } + + } + } + finally + { + ControlHelper.FreezeControl(this, false); + } + } + + } +} diff --git a/UsingControl/HZHControls/Controls/DataGridView/UCDataGridViewRow.resx b/UsingControl/HZHControls/Controls/DataGridView/UCDataGridViewRow.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/UsingControl/HZHControls/Controls/DataGridView/UCDataGridViewRow.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/UsingControl/HZHControls/Controls/DataGridView/UCDataGridViewTreeRow.Designer.cs b/UsingControl/HZHControls/Controls/DataGridView/UCDataGridViewTreeRow.Designer.cs new file mode 100644 index 0000000..b6fb8bf --- /dev/null +++ b/UsingControl/HZHControls/Controls/DataGridView/UCDataGridViewTreeRow.Designer.cs @@ -0,0 +1,211 @@ +// *********************************************************************** +// Assembly : HZH_Controls +// Created : 08-23-2019 +// +// *********************************************************************** +// +// Copyright by Huang Zhenghui(黄正辉) All, QQ group:568015492 QQ:623128629 Email:623128629@qq.com +// +// +// Blog: https://www.cnblogs.com/bfyx +// GitHub:https://github.com/kwwwvagaa/NetWinformControl +// gitee:https://gitee.com/kwwwvagaa/net_winform_custom_control.git +// +// If you use this code, please keep this note. +// *********************************************************************** +namespace HZH_Controls.Controls +{ + /// + /// Class UCDataGridViewTreeRow. + /// Implements the + /// + /// + partial class UCDataGridViewTreeRow + { + /// + /// 必需的设计器变量。 + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 清理所有正在使用的资源。 + /// + /// 如果应释放托管资源,为 true;否则为 false。 + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region 组件设计器生成的代码 + + /// + /// 设计器支持所需的方法 - 不要 + /// 使用代码编辑器修改此方法的内容。 + /// + private void InitializeComponent() + { + this.panCells = new System.Windows.Forms.TableLayoutPanel(); + this.panLeft = new System.Windows.Forms.Panel(); + this.panChildGrid = new System.Windows.Forms.Panel(); + this.ucDGVChild = new HZH_Controls.Controls.UCDataGridView(); + this.ucSplitLine_V1 = new HZH_Controls.Controls.UCSplitLine_V(); + this.panChildLeft = new System.Windows.Forms.Panel(); + this.panMain = new System.Windows.Forms.Panel(); + this.ucSplitLine_H1 = new HZH_Controls.Controls.UCSplitLine_H(); + this.panChildGrid.SuspendLayout(); + this.panMain.SuspendLayout(); + this.SuspendLayout(); + // + // panCells + // + this.panCells.ColumnCount = 1; + this.panCells.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.panCells.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 20F)); + this.panCells.Dock = System.Windows.Forms.DockStyle.Fill; + this.panCells.Location = new System.Drawing.Point(24, 0); + this.panCells.Name = "panCells"; + this.panCells.RowCount = 1; + this.panCells.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.panCells.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 55F)); + this.panCells.Size = new System.Drawing.Size(637, 64); + this.panCells.TabIndex = 2; + // + // panLeft + // + this.panLeft.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center; + this.panLeft.Dock = System.Windows.Forms.DockStyle.Left; + this.panLeft.Location = new System.Drawing.Point(0, 0); + this.panLeft.Name = "panLeft"; + this.panLeft.Size = new System.Drawing.Size(24, 64); + this.panLeft.TabIndex = 0; + this.panLeft.Tag = "0"; + this.panLeft.MouseDown += new System.Windows.Forms.MouseEventHandler(this.panLeft_MouseDown); + // + // panChildGrid + // + this.panChildGrid.Controls.Add(this.ucDGVChild); + this.panChildGrid.Controls.Add(this.ucSplitLine_V1); + this.panChildGrid.Controls.Add(this.panChildLeft); + this.panChildGrid.Dock = System.Windows.Forms.DockStyle.Bottom; + this.panChildGrid.Location = new System.Drawing.Point(0, 65); + this.panChildGrid.Name = "panChildGrid"; + this.panChildGrid.Size = new System.Drawing.Size(661, 0); + this.panChildGrid.TabIndex = 0; + this.panChildGrid.SizeChanged += new System.EventHandler(this.panChildGrid_SizeChanged); + // + // ucDGVChild + // + this.ucDGVChild.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.ucDGVChild.BackColor = System.Drawing.Color.White; + this.ucDGVChild.Columns = null; + this.ucDGVChild.DataSource = null; + this.ucDGVChild.HeadFont = new System.Drawing.Font("微软雅黑", 12F); + this.ucDGVChild.HeadHeight = 40; + this.ucDGVChild.HeadPadingLeft = 0; + this.ucDGVChild.HeadTextColor = System.Drawing.Color.Black; + this.ucDGVChild.IsShowCheckBox = false; + this.ucDGVChild.IsShowHead = false; + this.ucDGVChild.Location = new System.Drawing.Point(25, 0); + this.ucDGVChild.Name = "ucDGVChild"; + this.ucDGVChild.RowHeight = 40; + this.ucDGVChild.RowType = typeof(HZH_Controls.Controls.UCDataGridViewRow); + this.ucDGVChild.Size = new System.Drawing.Size(636, 100); + this.ucDGVChild.TabIndex = 0; + this.ucDGVChild.SizeChanged += new System.EventHandler(this.ucDGVChild_SizeChanged); + // + // ucSplitLine_V1 + // + this.ucSplitLine_V1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(232)))), ((int)(((byte)(232)))), ((int)(((byte)(232))))); + this.ucSplitLine_V1.Dock = System.Windows.Forms.DockStyle.Left; + this.ucSplitLine_V1.Location = new System.Drawing.Point(24, 0); + this.ucSplitLine_V1.Name = "ucSplitLine_V1"; + this.ucSplitLine_V1.Size = new System.Drawing.Size(1, 0); + this.ucSplitLine_V1.TabIndex = 0; + this.ucSplitLine_V1.TabStop = false; + // + // panChildLeft + // + this.panChildLeft.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center; + this.panChildLeft.Dock = System.Windows.Forms.DockStyle.Left; + this.panChildLeft.Location = new System.Drawing.Point(0, 0); + this.panChildLeft.Name = "panChildLeft"; + this.panChildLeft.Size = new System.Drawing.Size(24, 0); + this.panChildLeft.TabIndex = 1; + this.panChildLeft.Tag = "0"; + // + // panMain + // + this.panMain.Controls.Add(this.panCells); + this.panMain.Controls.Add(this.panLeft); + this.panMain.Dock = System.Windows.Forms.DockStyle.Fill; + this.panMain.Location = new System.Drawing.Point(0, 0); + this.panMain.Name = "panMain"; + this.panMain.Size = new System.Drawing.Size(661, 64); + this.panMain.TabIndex = 0; + // + // ucSplitLine_H1 + // + this.ucSplitLine_H1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(232)))), ((int)(((byte)(232)))), ((int)(((byte)(232))))); + this.ucSplitLine_H1.Dock = System.Windows.Forms.DockStyle.Bottom; + this.ucSplitLine_H1.Location = new System.Drawing.Point(0, 64); + this.ucSplitLine_H1.Name = "ucSplitLine_H1"; + this.ucSplitLine_H1.Size = new System.Drawing.Size(661, 1); + this.ucSplitLine_H1.TabIndex = 1; + this.ucSplitLine_H1.TabStop = false; + // + // UCDataGridViewTreeRow + // + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; + this.BackColor = System.Drawing.Color.White; + this.Controls.Add(this.panMain); + this.Controls.Add(this.ucSplitLine_H1); + this.Controls.Add(this.panChildGrid); + this.Name = "UCDataGridViewTreeRow"; + this.Size = new System.Drawing.Size(661, 65); + this.panChildGrid.ResumeLayout(false); + this.panMain.ResumeLayout(false); + this.ResumeLayout(false); + + } + + #endregion + + /// + /// The pan cells + /// + private System.Windows.Forms.TableLayoutPanel panCells; + /// + /// The uc split line h1 + /// + private UCSplitLine_H ucSplitLine_H1; + /// + /// The pan left + /// + private System.Windows.Forms.Panel panLeft; + /// + /// The pan child grid + /// + private System.Windows.Forms.Panel panChildGrid; + /// + /// The uc DGV child + /// + private UCDataGridView ucDGVChild; + /// + /// The pan child left + /// + private System.Windows.Forms.Panel panChildLeft; + /// + /// The pan main + /// + private System.Windows.Forms.Panel panMain; + /// + /// The uc split line v1 + /// + private UCSplitLine_V ucSplitLine_V1; + } +} diff --git a/UsingControl/HZHControls/Controls/DataGridView/UCDataGridViewTreeRow.cs b/UsingControl/HZHControls/Controls/DataGridView/UCDataGridViewTreeRow.cs new file mode 100644 index 0000000..f77dc82 --- /dev/null +++ b/UsingControl/HZHControls/Controls/DataGridView/UCDataGridViewTreeRow.cs @@ -0,0 +1,474 @@ +// *********************************************************************** +// Assembly : HZH_Controls +// Created : 08-23-2019 +// +// *********************************************************************** +// +// Copyright by Huang Zhenghui(黄正辉) All, QQ group:568015492 QQ:623128629 Email:623128629@qq.com +// +// +// Blog: https://www.cnblogs.com/bfyx +// GitHub:https://github.com/kwwwvagaa/NetWinformControl +// gitee:https://gitee.com/kwwwvagaa/net_winform_custom_control.git +// +// If you use this code, please keep this note. +// *********************************************************************** +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using System.Collections; + +namespace HZH_Controls.Controls +{ + /// + /// Class UCDataGridViewTreeRow. + /// Implements the + /// Implements the + /// + /// + /// + [ToolboxItem(false)] + public partial class UCDataGridViewTreeRow : UserControl, IDataGridViewRow + { + #region 属性 + /// + /// CheckBox选中事件 + /// + public event DataGridViewEventHandler CheckBoxChangeEvent; + + /// + /// 点击单元格事件 + /// + public event DataGridViewEventHandler CellClick; + + /// + /// 数据源改变事件 + /// + public event DataGridViewEventHandler SourceChanged; + /// + /// Occurs when [row custom event]. + /// + public event DataGridViewRowCustomEventHandler RowCustomEvent; + /// + /// 列参数,用于创建列数和宽度 + /// + /// The columns. + public List Columns + { + get; + set; + } + + /// + /// 数据源 + /// + /// The data source. + public object DataSource + { + get; + set; + } + + /// + /// 行号,树状图目前没有给予行号 + /// + /// The Index of the row. + public int RowIndex { get; set; } + + /// + /// Gets or sets a value indicating whether this instance is show CheckBox. + /// + /// true if this instance is show CheckBox; otherwise, false. + public bool IsShowCheckBox + { + get; + set; + } + /// + /// The m is checked + /// + private bool m_isChecked; + /// + /// 是否选中 + /// + /// true if this instance is checked; otherwise, false. + public bool IsChecked + { + get + { + return m_isChecked; + } + + set + { + if (m_isChecked != value) + { + m_isChecked = value; + (this.panCells.Controls.Find("check", false)[0] as UCCheckBox).Checked = value; + } + } + } + + /// + /// The m row height + /// + int m_rowHeight = 40; + /// + /// 行高 + /// + /// The height of the row. + public int RowHeight + { + get + { + return m_rowHeight; + } + set + { + m_rowHeight = value; + this.Height = value; + } + } + #endregion + + /// + /// Initializes a new instance of the class. + /// + public UCDataGridViewTreeRow() + { + InitializeComponent(); + this.ucDGVChild.RowType = this.GetType(); + this.SizeChanged += UCDataGridViewTreeRow_SizeChanged; + this.ucDGVChild.ItemClick += (a, b) => + { + if (CellClick != null) + { + CellClick(a, new DataGridViewEventArgs() + { + CellControl = (a as Control), + CellIndex = (a as Control).Tag.ToInt() + }); + } + }; + + } + + /// + /// Handles the SizeChanged event of the UCDataGridViewTreeRow control. + /// + /// The source of the event. + /// The instance containing the event data. + void UCDataGridViewTreeRow_SizeChanged(object sender, EventArgs e) + { + if (this.Parent != null) + { + if (this.Parent.Parent.Parent != null && this.Parent.Parent.Parent.Name == "panChildGrid" && this.panLeft.Tag.ToInt() == 1) + { + int intHeight = this.Parent.Parent.Controls[0].Controls.ToArray().Sum(p => p.Height); + if (this.Parent.Parent.Parent.Height != intHeight) + this.Parent.Parent.Parent.Height = intHeight; + } + } + } + + + /// + /// 绑定数据到Cell + /// + /// 返回true则表示已处理过,否则将进行默认绑定(通常只针对有Text值的控件) + public void BindingCellData() + { + for (int i = 0; i < Columns.Count; i++) + { + DataGridViewColumnEntity com = Columns[i]; + var cs = this.panCells.Controls.Find("lbl_" + com.DataField, false); + if (cs != null && cs.Length > 0) + { + var pro = DataSource.GetType().GetProperty(com.DataField); + if (pro != null) + { + var value = pro.GetValue(DataSource, null); + if (com.Format != null) + { + cs[0].Text = com.Format(value); + } + else + { + cs[0].Text = value.ToStringExt(); + } + } + } + } + foreach (Control item in this.panCells.Controls) + { + if (item is IDataGridViewCustomCell) + { + IDataGridViewCustomCell cell = item as IDataGridViewCustomCell; + cell.SetBindSource(DataSource); + } + } + panLeft.Tag = 0; + var proChildrens = DataSource.GetType().GetProperty("Childrens"); + if (proChildrens != null) + { + var value = proChildrens.GetValue(DataSource, null); + if (value != null) + { + int intSourceCount = 0; + if (value is DataTable) + { + intSourceCount = (value as DataTable).Rows.Count; + } + else if (typeof(IList).IsAssignableFrom(value.GetType())) + { + intSourceCount = (value as IList).Count; + } + if (intSourceCount > 0) + { + panLeft.BackgroundImage = Properties.Resources.caret_right; + panLeft.Enabled = true; + panChildGrid.Tag = value; + } + else + { + panLeft.BackgroundImage = null; + panLeft.Enabled = false; + panChildGrid.Tag = null; + } + } + else + { + panLeft.BackgroundImage = null; + panLeft.Enabled = false; + panChildGrid.Tag = null; + } + } + else + { + panLeft.BackgroundImage = null; + panLeft.Enabled = false; + panChildGrid.Tag = null; + } + } + + /// + /// Handles the MouseDown event of the Item control. + /// + /// The source of the event. + /// The instance containing the event data. + void Item_MouseDown(object sender, MouseEventArgs e) + { + if (CellClick != null) + { + CellClick(this, new DataGridViewEventArgs() + { + CellControl = this, + CellIndex = (sender as Control).Tag.ToInt() + }); + } + } + + /// + /// 设置选中状态,通常为设置颜色即可 + /// + /// 是否选中 + public void SetSelect(bool blnSelected) + { + if (blnSelected) + { + this.panMain.BackColor = Color.FromArgb(255, 247, 245); + } + else + { + this.panMain.BackColor = Color.Transparent; + } + } + + /// + /// 添加单元格元素,仅做添加控件操作,不做数据绑定,数据绑定使用BindingCells + /// + public void ReloadCells() + { + try + { + ControlHelper.FreezeControl(this, true); + this.panCells.Controls.Clear(); + this.panCells.ColumnStyles.Clear(); + + int intColumnsCount = Columns.Count(); + if (Columns != null && intColumnsCount > 0) + { + if (IsShowCheckBox) + { + intColumnsCount++; + } + this.panCells.ColumnCount = intColumnsCount; + for (int i = 0; i < intColumnsCount; i++) + { + Control c = null; + if (i == 0 && IsShowCheckBox) + { + this.panCells.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(SizeType.Absolute, 30F)); + + UCCheckBox box = new UCCheckBox(); + box.Name = "check"; + box.TextValue = ""; + box.Size = new Size(30, 30); + box.Dock = DockStyle.Fill; + box.CheckedChangeEvent += (a, b) => + { + IsChecked = box.Checked; + if (this.ucDGVChild.Rows != null) + { + this.ucDGVChild.Rows.ForEach(p => p.IsChecked = box.Checked); + if (CheckBoxChangeEvent != null) + { + CheckBoxChangeEvent(a, new DataGridViewEventArgs() + { + CellControl = box, + CellIndex = 0 + }); + } + } + }; + c = box; + } + else + { + var item = Columns[i - (IsShowCheckBox ? 1 : 0)]; + this.panCells.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(item.WidthType, item.Width)); + + if (item.CustomCellType == null) + { + Label lbl = new Label(); + lbl.Tag = i - (IsShowCheckBox ? 1 : 0); + lbl.Name = "lbl_" + item.DataField; + lbl.Font = new Font("微软雅黑", 12); + lbl.ForeColor = Color.Black; + lbl.AutoSize = false; + lbl.Dock = DockStyle.Fill; + lbl.TextAlign = item.TextAlign; + lbl.MouseDown += (a, b) => + { + Item_MouseDown(a, b); + }; + c = lbl; + } + else + { + Control cc = (Control)Activator.CreateInstance(item.CustomCellType); + cc.Dock = DockStyle.Fill; + c = cc; + } + } + this.panCells.Controls.Add(c, i, 0); + } + + } + } + finally + { + ControlHelper.FreezeControl(this, false); + } + } + + /// + /// Handles the SizeChanged event of the panChildGrid control. + /// + /// The source of the event. + /// The instance containing the event data. + private void panChildGrid_SizeChanged(object sender, EventArgs e) + { + int intHeight = RowHeight + panChildGrid.Height; + if (panChildGrid.Height != 0) + this.ucDGVChild.Height = panChildGrid.Height; + if (this.Height != intHeight) + { + this.Height = intHeight; + } + } + + /// + /// Handles the MouseDown event of the panLeft control. + /// + /// The source of the event. + /// The instance containing the event data. + private void panLeft_MouseDown(object sender, MouseEventArgs e) + { + try + { + ControlHelper.FreezeControl(this.FindForm(), true); + if (panLeft.Tag.ToInt() == 0) + { + var value = panChildGrid.Tag; + if (value != null) + { + panLeft.BackgroundImage = Properties.Resources.caret_down; + panLeft.Tag = 1; + int intSourceCount = 0; + if (value is DataTable) + { + intSourceCount = (value as DataTable).Rows.Count; + } + else if (typeof(IList).IsAssignableFrom(value.GetType())) + { + intSourceCount = (value as IList).Count; + } + this.panChildGrid.Height = RowHeight * intSourceCount; + if (panChildGrid.Height > 0) + { + if (value != this.ucDGVChild.DataSource) + { + this.ucDGVChild.Columns = Columns; + this.ucDGVChild.RowHeight = RowHeight; + this.ucDGVChild.HeadPadingLeft = this.panLeft.Width; + this.ucDGVChild.IsShowCheckBox = IsShowCheckBox; + this.ucDGVChild.DataSource = value; + this.ucDGVChild.Rows.ForEach(p => p.IsChecked = this.IsChecked); + } + } + } + } + else + { + + Control[] cs = panChildGrid.Controls.Find("panLeft", true); + foreach (var item in cs) + { + item.Tag = 0; + item.BackgroundImage = Properties.Resources.caret_right; + } + + Control[] cs1 = panChildGrid.Controls.Find("panChildGrid", true); + foreach (var item in cs1) + { + item.Height = 0; + } + panChildGrid.Height = 0; + panLeft.BackgroundImage = Properties.Resources.caret_right; + this.Height = m_rowHeight; + panLeft.Tag = 0; + } + } + finally + { + ControlHelper.FreezeControl(this.FindForm(), false); + } + } + + /// + /// Handles the SizeChanged event of the ucDGVChild control. + /// + /// The source of the event. + /// The instance containing the event data. + private void ucDGVChild_SizeChanged(object sender, EventArgs e) + { + + } + } +} diff --git a/UsingControl/HZHControls/Controls/DataGridView/UCDataGridViewTreeRow.resx b/UsingControl/HZHControls/Controls/DataGridView/UCDataGridViewTreeRow.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/UsingControl/HZHControls/Controls/DataGridView/UCDataGridViewTreeRow.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/UsingControl/HZHControls/Controls/DateTime/DateTimePickerType.cs b/UsingControl/HZHControls/Controls/DateTime/DateTimePickerType.cs new file mode 100644 index 0000000..c00996c --- /dev/null +++ b/UsingControl/HZHControls/Controls/DateTime/DateTimePickerType.cs @@ -0,0 +1,41 @@ +// *********************************************************************** +// Assembly : HZH_Controls +// Created : 08-08-2019 +// +// *********************************************************************** +// +// Copyright by Huang Zhenghui(黄正辉) All, QQ group:568015492 QQ:623128629 Email:623128629@qq.com +// +// +// Blog: https://www.cnblogs.com/bfyx +// GitHub:https://github.com/kwwwvagaa/NetWinformControl +// gitee:https://gitee.com/kwwwvagaa/net_winform_custom_control.git +// +// If you use this code, please keep this note. +// *********************************************************************** +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace HZH_Controls.Controls +{ + /// + /// Enum DateTimePickerType + /// + public enum DateTimePickerType + { + /// + /// The date time + /// + DateTime = 1, + /// + /// The date + /// + Date = 2, + /// + /// The time + /// + Time = 4 + } +} diff --git a/UsingControl/HZHControls/Controls/DateTime/UCDatePickerExt.Designer.cs b/UsingControl/HZHControls/Controls/DateTime/UCDatePickerExt.Designer.cs new file mode 100644 index 0000000..5624af3 --- /dev/null +++ b/UsingControl/HZHControls/Controls/DateTime/UCDatePickerExt.Designer.cs @@ -0,0 +1,384 @@ +// *********************************************************************** +// Assembly : HZH_Controls +// Created : 08-08-2019 +// +// *********************************************************************** +// +// Copyright by Huang Zhenghui(黄正辉) All, QQ group:568015492 QQ:623128629 Email:623128629@qq.com +// +// +// Blog: https://www.cnblogs.com/bfyx +// GitHub:https://github.com/kwwwvagaa/NetWinformControl +// gitee:https://gitee.com/kwwwvagaa/net_winform_custom_control.git +// +// If you use this code, please keep this note. +// *********************************************************************** +namespace HZH_Controls.Controls +{ + /// + /// Class UCDatePickerExt. + /// Implements the + /// + /// + partial class UCDatePickerExt + { + /// + /// 必需的设计器变量。 + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 清理所有正在使用的资源。 + /// + /// 如果应释放托管资源,为 true;否则为 false。 + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region 组件设计器生成的代码 + + /// + /// 设计器支持所需的方法 - 不要 + /// 使用代码编辑器修改此方法的内容。 + /// + private void InitializeComponent() + { + this.panel1 = new System.Windows.Forms.Panel(); + this.label5 = new System.Windows.Forms.Label(); + this.txtMinute = new HZH_Controls.Controls.TextBoxEx(); + this.label4 = new System.Windows.Forms.Label(); + this.txtHour = new HZH_Controls.Controls.TextBoxEx(); + this.label3 = new System.Windows.Forms.Label(); + this.txtDay = new HZH_Controls.Controls.TextBoxEx(); + this.label2 = new System.Windows.Forms.Label(); + this.txtMonth = new HZH_Controls.Controls.TextBoxEx(); + this.label1 = new System.Windows.Forms.Label(); + this.txtYear = new HZH_Controls.Controls.TextBoxEx(); + this.panel1.SuspendLayout(); + this.SuspendLayout(); + // + // panel1 + // + this.panel1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right))); + this.panel1.Controls.Add(this.label5); + this.panel1.Controls.Add(this.txtMinute); + this.panel1.Controls.Add(this.label4); + this.panel1.Controls.Add(this.txtHour); + this.panel1.Controls.Add(this.label3); + this.panel1.Controls.Add(this.txtDay); + this.panel1.Controls.Add(this.label2); + this.panel1.Controls.Add(this.txtMonth); + this.panel1.Controls.Add(this.label1); + this.panel1.Controls.Add(this.txtYear); + this.panel1.Location = new System.Drawing.Point(3, 6); + this.panel1.MaximumSize = new System.Drawing.Size(0, 27); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(330, 27); + this.panel1.TabIndex = 9; + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Dock = System.Windows.Forms.DockStyle.Left; + this.label5.Font = new System.Drawing.Font("微软雅黑", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel); + this.label5.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60))))); + this.label5.Location = new System.Drawing.Point(301, 0); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(32, 27); + this.label5.TabIndex = 17; + this.label5.Text = "分"; + this.label5.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // txtMinute + // + this.txtMinute.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.txtMinute.DecLength = 2; + this.txtMinute.Dock = System.Windows.Forms.DockStyle.Left; + this.txtMinute.Font = new System.Drawing.Font("Arial Unicode MS", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel); + this.txtMinute.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60))))); + this.txtMinute.InputType = HZH_Controls.TextInputType.Integer; + this.txtMinute.Location = new System.Drawing.Point(272, 0); + this.txtMinute.MaxValue = new decimal(new int[] { + 59, + 0, + 0, + 0}); + this.txtMinute.MinValue = new decimal(new int[] { + 0, + 0, + 0, + 0}); + this.txtMinute.MyRectangle = new System.Drawing.Rectangle(0, 0, 0, 0); + this.txtMinute.Name = "txtMinute"; + this.txtMinute.OldText = null; + this.txtMinute.PromptColor = System.Drawing.Color.Gray; + this.txtMinute.PromptFont = new System.Drawing.Font("微软雅黑", 15F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel); + this.txtMinute.PromptText = ""; + this.txtMinute.RegexPattern = ""; + this.txtMinute.Size = new System.Drawing.Size(29, 27); + this.txtMinute.TabIndex = 5; + this.txtMinute.Text = "59"; + this.txtMinute.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.txtMinute.SizeChanged += new System.EventHandler(this.txt_SizeChanged); + this.txtMinute.Leave += new System.EventHandler(this.txtMinute_Leave); + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Dock = System.Windows.Forms.DockStyle.Left; + this.label4.Font = new System.Drawing.Font("微软雅黑", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel); + this.label4.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60))))); + this.label4.Location = new System.Drawing.Point(240, 0); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(32, 27); + this.label4.TabIndex = 16; + this.label4.Text = "时"; + this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // txtHour + // + this.txtHour.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.txtHour.DecLength = 2; + this.txtHour.Dock = System.Windows.Forms.DockStyle.Left; + this.txtHour.Font = new System.Drawing.Font("Arial Unicode MS", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel); + this.txtHour.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60))))); + this.txtHour.InputType = HZH_Controls.TextInputType.Integer; + this.txtHour.Location = new System.Drawing.Point(211, 0); + this.txtHour.MaxValue = new decimal(new int[] { + 23, + 0, + 0, + 0}); + this.txtHour.MinValue = new decimal(new int[] { + 0, + 0, + 0, + 0}); + this.txtHour.MyRectangle = new System.Drawing.Rectangle(0, 0, 0, 0); + this.txtHour.Name = "txtHour"; + this.txtHour.OldText = null; + this.txtHour.PromptColor = System.Drawing.Color.Gray; + this.txtHour.PromptFont = new System.Drawing.Font("微软雅黑", 15F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel); + this.txtHour.PromptText = ""; + this.txtHour.RegexPattern = ""; + this.txtHour.Size = new System.Drawing.Size(29, 27); + this.txtHour.TabIndex = 4; + this.txtHour.Text = "23"; + this.txtHour.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.txtHour.SizeChanged += new System.EventHandler(this.txt_SizeChanged); + this.txtHour.TextChanged += new System.EventHandler(this.txtHour_TextChanged); + this.txtHour.Leave += new System.EventHandler(this.txtHour_Leave); + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Dock = System.Windows.Forms.DockStyle.Left; + this.label3.Font = new System.Drawing.Font("微软雅黑", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel); + this.label3.Location = new System.Drawing.Point(173, 0); + this.label3.Margin = new System.Windows.Forms.Padding(0); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(38, 27); + this.label3.TabIndex = 14; + this.label3.Text = " 日"; + this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // txtDay + // + this.txtDay.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.txtDay.DecLength = 2; + this.txtDay.Dock = System.Windows.Forms.DockStyle.Left; + this.txtDay.Font = new System.Drawing.Font("Arial Unicode MS", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel); + this.txtDay.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60))))); + this.txtDay.InputType = HZH_Controls.TextInputType.Integer; + this.txtDay.Location = new System.Drawing.Point(144, 0); + this.txtDay.MaxValue = new decimal(new int[] { + 31, + 0, + 0, + 0}); + this.txtDay.MinValue = new decimal(new int[] { + 0, + 0, + 0, + 0}); + this.txtDay.MyRectangle = new System.Drawing.Rectangle(0, 0, 0, 0); + this.txtDay.Name = "txtDay"; + this.txtDay.OldText = null; + this.txtDay.PromptColor = System.Drawing.Color.Gray; + this.txtDay.PromptFont = new System.Drawing.Font("微软雅黑", 15F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel); + this.txtDay.PromptText = ""; + this.txtDay.RegexPattern = ""; + this.txtDay.Size = new System.Drawing.Size(29, 27); + this.txtDay.TabIndex = 3; + this.txtDay.Text = "12"; + this.txtDay.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.txtDay.SizeChanged += new System.EventHandler(this.txt_SizeChanged); + this.txtDay.TextChanged += new System.EventHandler(this.txtDay_TextChanged); + this.txtDay.Leave += new System.EventHandler(this.txtDay_Leave); + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Dock = System.Windows.Forms.DockStyle.Left; + this.label2.Font = new System.Drawing.Font("微软雅黑", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel); + this.label2.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60))))); + this.label2.Location = new System.Drawing.Point(112, 0); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(32, 27); + this.label2.TabIndex = 12; + this.label2.Text = "月"; + this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // txtMonth + // + this.txtMonth.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.txtMonth.DecLength = 2; + this.txtMonth.Dock = System.Windows.Forms.DockStyle.Left; + this.txtMonth.Font = new System.Drawing.Font("Arial Unicode MS", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel); + this.txtMonth.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60))))); + this.txtMonth.InputType = HZH_Controls.TextInputType.Integer; + this.txtMonth.Location = new System.Drawing.Point(83, 0); + this.txtMonth.MaxValue = new decimal(new int[] { + 12, + 0, + 0, + 0}); + this.txtMonth.MinValue = new decimal(new int[] { + 0, + 0, + 0, + 0}); + this.txtMonth.MyRectangle = new System.Drawing.Rectangle(0, 0, 0, 0); + this.txtMonth.Name = "txtMonth"; + this.txtMonth.OldText = null; + this.txtMonth.PromptColor = System.Drawing.Color.Gray; + this.txtMonth.PromptFont = new System.Drawing.Font("微软雅黑", 15F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel); + this.txtMonth.PromptText = ""; + this.txtMonth.RegexPattern = ""; + this.txtMonth.Size = new System.Drawing.Size(29, 27); + this.txtMonth.TabIndex = 2; + this.txtMonth.Text = "12"; + this.txtMonth.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.txtMonth.SizeChanged += new System.EventHandler(this.txt_SizeChanged); + this.txtMonth.TextChanged += new System.EventHandler(this.txtMonth_TextChanged); + this.txtMonth.Leave += new System.EventHandler(this.txtMonth_Leave); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Dock = System.Windows.Forms.DockStyle.Left; + this.label1.Font = new System.Drawing.Font("微软雅黑", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel); + this.label1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60))))); + this.label1.Location = new System.Drawing.Point(51, 0); + this.label1.Margin = new System.Windows.Forms.Padding(0); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(32, 27); + this.label1.TabIndex = 10; + this.label1.Text = "年"; + this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + // + // txtYear + // + this.txtYear.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.txtYear.DecLength = 2; + this.txtYear.Dock = System.Windows.Forms.DockStyle.Left; + this.txtYear.Font = new System.Drawing.Font("Arial Unicode MS", 20F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel); + this.txtYear.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(60)))), ((int)(((byte)(60))))); + this.txtYear.InputType = HZH_Controls.TextInputType.Integer; + this.txtYear.Location = new System.Drawing.Point(0, 0); + this.txtYear.MaxValue = new decimal(new int[] { + 2099, + 0, + 0, + 0}); + this.txtYear.MinValue = new decimal(new int[] { + 0, + 0, + 0, + 0}); + this.txtYear.MyRectangle = new System.Drawing.Rectangle(0, 0, 0, 0); + this.txtYear.Name = "txtYear"; + this.txtYear.OldText = null; + this.txtYear.PromptColor = System.Drawing.Color.Gray; + this.txtYear.PromptFont = new System.Drawing.Font("微软雅黑", 15F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel); + this.txtYear.PromptText = ""; + this.txtYear.RegexPattern = ""; + this.txtYear.Size = new System.Drawing.Size(51, 27); + this.txtYear.TabIndex = 1; + this.txtYear.Text = "2019"; + this.txtYear.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.txtYear.SizeChanged += new System.EventHandler(this.txt_SizeChanged); + this.txtYear.TextChanged += new System.EventHandler(this.txtYear_TextChanged); + this.txtYear.Leave += new System.EventHandler(this.txtYear_Leave); + // + // UCDatePickerExt + // + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; + this.BackColor = System.Drawing.Color.White; + this.ConerRadius = 5; + this.Controls.Add(this.panel1); + this.IsRadius = true; + this.IsShowRect = true; + this.Name = "UCDatePickerExt"; + this.Padding = new System.Windows.Forms.Padding(0, 10, 0, 0); + this.Size = new System.Drawing.Size(336, 39); + this.Load += new System.EventHandler(this.UCDatePickerExt_Load); + this.panel1.ResumeLayout(false); + this.panel1.PerformLayout(); + this.ResumeLayout(false); + + } + + #endregion + + /// + /// The panel1 + /// + private System.Windows.Forms.Panel panel1; + /// + /// The label4 + /// + private System.Windows.Forms.Label label4; + /// + /// The label3 + /// + private System.Windows.Forms.Label label3; + /// + /// The label2 + /// + private System.Windows.Forms.Label label2; + /// + /// The label1 + /// + private System.Windows.Forms.Label label1; + /// + /// The text minute + /// + private TextBoxEx txtMinute; + /// + /// The text hour + /// + private TextBoxEx txtHour; + /// + /// The text day + /// + private TextBoxEx txtDay; + /// + /// The text month + /// + private TextBoxEx txtMonth; + /// + /// The text year + /// + private TextBoxEx txtYear; + /// + /// The label5 + /// + private System.Windows.Forms.Label label5; + } +} diff --git a/UsingControl/HZHControls/Controls/DateTime/UCDatePickerExt.cs b/UsingControl/HZHControls/Controls/DateTime/UCDatePickerExt.cs new file mode 100644 index 0000000..242d8c4 --- /dev/null +++ b/UsingControl/HZHControls/Controls/DateTime/UCDatePickerExt.cs @@ -0,0 +1,369 @@ +// *********************************************************************** +// Assembly : HZH_Controls +// Created : 08-08-2019 +// +// *********************************************************************** +// +// Copyright by Huang Zhenghui(黄正辉) All, QQ group:568015492 QQ:623128629 Email:623128629@qq.com +// +// +// Blog: https://www.cnblogs.com/bfyx +// GitHub:https://github.com/kwwwvagaa/NetWinformControl +// gitee:https://gitee.com/kwwwvagaa/net_winform_custom_control.git +// +// If you use this code, please keep this note. +// *********************************************************************** +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Windows.Forms; + + +namespace HZH_Controls.Controls +{ + /// + /// Class UCDatePickerExt. + /// Implements the + /// + /// + public partial class UCDatePickerExt : UCControlBase + { + /// + /// The m FRM anchor + /// + Forms.FrmAnchor m_frmAnchor; + /// + /// The m select pan + /// + UCDateTimeSelectPan m_selectPan = null; + /// + /// The m type + /// + DateTimePickerType m_type = DateTimePickerType.DateTime; + /// + /// Gets or sets the type of the time. + /// + /// The type of the time. + [Description("时间类型"), Category("自定义")] + public DateTimePickerType TimeType + { + get { return m_type; } + set + { + m_type = value; + if (value == DateTimePickerType.DateTime) + { + txtYear.Visible = true; + label1.Visible = true; + txtMonth.Visible = true; + label2.Visible = true; + txtDay.Visible = true; + label3.Visible = true; + txtHour.Visible = true; + label4.Visible = true; + txtMinute.Visible = true; + label5.Visible = true; + } + else if (value == DateTimePickerType.Date) + { + txtYear.Visible = true; + label1.Visible = true; + txtMonth.Visible = true; + label2.Visible = true; + txtDay.Visible = true; + label3.Visible = true; + txtHour.Visible = false; + label4.Visible = false; + txtMinute.Visible = false; + label5.Visible = false; + } + else + { + txtYear.Visible = false; + label1.Visible = false; + txtMonth.Visible = false; + label2.Visible = false; + txtDay.Visible = false; + label3.Visible = false; + txtHour.Visible = true; + label4.Visible = true; + txtMinute.Visible = true; + label5.Visible = true; + } + } + } + + /// + /// The current time + /// + private DateTime currentTime = DateTime.Now; + + /// + /// The time font size + /// + private int timeFontSize = 20; + /// + /// Gets or sets the size of the time font. + /// + /// The size of the time font. + [Description("时间字体大小"), Category("自定义")] + public int TimeFontSize + { + get { return timeFontSize; } + set + { + if (timeFontSize != value) + { + timeFontSize = value; + foreach (Control c in panel1.Controls) + { + c.Font = new Font(c.Font.Name, value); + } + } + } + } + + /// + /// Gets or sets the current time. + /// + /// The current time. + [Description("时间"), Category("自定义")] + public DateTime CurrentTime + { + get { return currentTime; } + set + { + currentTime = value; + SetTimeToControl(); + } + } + + /// + /// Sets the time to control. + /// + private void SetTimeToControl() + { + this.txtYear.Text = currentTime.Year.ToString(); + this.txtMonth.Text = currentTime.Month.ToString().PadLeft(2, '0'); + this.txtDay.Text = currentTime.Day.ToString().PadLeft(2, '0'); + this.txtHour.Text = currentTime.Hour.ToString().PadLeft(2, '0'); + this.txtMinute.Text = currentTime.Minute.ToString().PadLeft(2, '0'); + } + /// + /// Initializes a new instance of the class. + /// + public UCDatePickerExt() + { + InitializeComponent(); + } + + /// + /// Handles the Load event of the UCDatePickerExt control. + /// + /// The source of the event. + /// The instance containing the event data. + private void UCDatePickerExt_Load(object sender, EventArgs e) + { + SetTimeToControl(); + panel1.Height = this.txtDay.Height; + panel1.Height = this.txtHour.Height; + SetEvent(this); + } + + /// + /// Sets the event. + /// + /// The c. + private void SetEvent(Control c) + { + if (c != null) + { + c.MouseDown += c_MouseDown; + foreach (Control item in c.Controls) + { + SetEvent(item); + } + } + } + + /// + /// Handles the MouseDown event of the c control. + /// + /// The source of the event. + /// The instance containing the event data. + void c_MouseDown(object sender, MouseEventArgs e) + { + if (m_selectPan == null) + { + m_selectPan = new UCDateTimeSelectPan(); + m_selectPan.SelectedTimeEvent += uc_SelectedTimeEvent; + m_selectPan.CancelTimeEvent += m_selectPan_CancelTimeEvent; + } + m_selectPan.CurrentTime = currentTime; + m_selectPan.TimeType = m_type; + m_frmAnchor = new Forms.FrmAnchor(this, m_selectPan); + m_frmAnchor.Show(this.FindForm()); + } + + /// + /// Handles the CancelTimeEvent event of the m_selectPan control. + /// + /// The source of the event. + /// The instance containing the event data. + void m_selectPan_CancelTimeEvent(object sender, EventArgs e) + { + m_frmAnchor.Hide(); + } + + /// + /// Handles the SelectedTimeEvent event of the uc control. + /// + /// The source of the event. + /// The instance containing the event data. + void uc_SelectedTimeEvent(object sender, EventArgs e) + { + CurrentTime = m_selectPan.CurrentTime; + m_frmAnchor.Hide(); + } + + /// + /// Handles the TextChanged event of the txtYear control. + /// + /// The source of the event. + /// The instance containing the event data. + private void txtYear_TextChanged(object sender, EventArgs e) + { + if (txtYear.Text.Length == 4) + this.ActiveControl = txtMonth; + } + + /// + /// Handles the TextChanged event of the txtMonth control. + /// + /// The source of the event. + /// The instance containing the event data. + private void txtMonth_TextChanged(object sender, EventArgs e) + { + if (txtMonth.Text.Length == 2 || txtMonth.Text.ToInt() >= 3) + { + this.ActiveControl = txtDay; + } + } + + /// + /// Handles the TextChanged event of the txtDay control. + /// + /// The source of the event. + /// The instance containing the event data. + private void txtDay_TextChanged(object sender, EventArgs e) + { + if (m_type == DateTimePickerType.Date) + return; + if (txtDay.Text.Length == 2 || txtDay.Text.ToInt() >= 4) + { + this.ActiveControl = txtHour; + } + } + + /// + /// Handles the TextChanged event of the txtHour control. + /// + /// The source of the event. + /// The instance containing the event data. + private void txtHour_TextChanged(object sender, EventArgs e) + { + if (txtHour.Text.Length == 2 || txtHour.Text.ToInt() >= 3) + { + this.ActiveControl = txtMinute; + } + } + + /// + /// Handles the Leave event of the txtYear control. + /// + /// The source of the event. + /// The instance containing the event data. + private void txtYear_Leave(object sender, EventArgs e) + { + if (txtYear.Text.ToInt() < 1990) + { + txtYear.Text = currentTime.Year.ToString(); + } + currentTime = (txtYear.Text + currentTime.ToString("-MM-dd HH:mm:ss")).ToDate(); + } + + /// + /// Handles the Leave event of the txtMonth control. + /// + /// The source of the event. + /// The instance containing the event data. + private void txtMonth_Leave(object sender, EventArgs e) + { + if (txtMonth.Text.ToInt() < 1) + { + txtMonth.Text = currentTime.Month.ToString().PadLeft(2, '0'); + } + txtMonth.Text = txtMonth.Text.PadLeft(2, '0'); + currentTime = (currentTime.ToString("yyyy-" + txtMonth.Text + "-dd HH:mm:ss")).ToDate(); + } + + /// + /// Handles the Leave event of the txtDay control. + /// + /// The source of the event. + /// The instance containing the event data. + private void txtDay_Leave(object sender, EventArgs e) + { + if (txtDay.Text.ToInt() < 1 || txtDay.Text.ToInt() > DateTime.DaysInMonth(currentTime.Year, currentTime.Month)) + { + txtDay.Text = currentTime.Day.ToString().PadLeft(2, '0'); + } + txtDay.Text = txtDay.Text.PadLeft(2, '0'); + currentTime = (currentTime.ToString("yyyy-MM-" + txtDay.Text + " HH:mm:ss")).ToDate(); + } + + /// + /// Handles the Leave event of the txtHour control. + /// + /// The source of the event. + /// The instance containing the event data. + private void txtHour_Leave(object sender, EventArgs e) + { + if (txtHour.Text.ToInt() < 1) + { + txtHour.Text = currentTime.Hour.ToString().PadLeft(2, '0'); + } + txtHour.Text = txtHour.Text.PadLeft(2, '0'); + currentTime = (currentTime.ToString("yyyy-MM-dd " + txtHour.Text + ":mm:ss")).ToDate(); + } + + /// + /// Handles the Leave event of the txtMinute control. + /// + /// The source of the event. + /// The instance containing the event data. + private void txtMinute_Leave(object sender, EventArgs e) + { + if (txtMinute.Text.ToInt() < 1) + { + txtMinute.Text = currentTime.Minute.ToString().PadLeft(2, '0'); + } + txtMinute.Text = txtMinute.Text.PadLeft(2, '0'); + currentTime = (currentTime.ToString("yyyy-MM-dd HH:" + txtMinute.Text + ":ss")).ToDate(); + } + + /// + /// Handles the SizeChanged event of the txt control. + /// + /// The source of the event. + /// The instance containing the event data. + private void txt_SizeChanged(object sender, EventArgs e) + { + panel1.Height = (sender as TextBoxEx).Height; + } + } +} diff --git a/UsingControl/HZHControls/Controls/DateTime/UCDatePickerExt.resx b/UsingControl/HZHControls/Controls/DateTime/UCDatePickerExt.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/UsingControl/HZHControls/Controls/DateTime/UCDatePickerExt.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/UsingControl/HZHControls/Controls/DateTime/UCDateTimeSelectPan.Designer.cs b/UsingControl/HZHControls/Controls/DateTime/UCDateTimeSelectPan.Designer.cs new file mode 100644 index 0000000..888ec3c --- /dev/null +++ b/UsingControl/HZHControls/Controls/DateTime/UCDateTimeSelectPan.Designer.cs @@ -0,0 +1,504 @@ +// *********************************************************************** +// Assembly : HZH_Controls +// Created : 08-08-2019 +// +// *********************************************************************** +// +// Copyright by Huang Zhenghui(黄正辉) All, QQ group:568015492 QQ:623128629 Email:623128629@qq.com +// +// +// Blog: https://www.cnblogs.com/bfyx +// GitHub:https://github.com/kwwwvagaa/NetWinformControl +// gitee:https://gitee.com/kwwwvagaa/net_winform_custom_control.git +// +// If you use this code, please keep this note. +// *********************************************************************** +namespace HZH_Controls.Controls +{ + /// + /// Class UCDateTimeSelectPan. + /// Implements the + /// + /// + public partial class UCDateTimeSelectPan + { + /// + /// 必需的设计器变量。 + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 清理所有正在使用的资源。 + /// + /// 如果应释放托管资源,为 true;否则为 false。 + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region 组件设计器生成的代码 + + /// + /// 设计器支持所需的方法 - 不要 + /// 使用代码编辑器修改此方法的内容。 + /// + private void InitializeComponent() + { + this.panel1 = new System.Windows.Forms.Panel(); + this.btnMinute = new HZH_Controls.Controls.UCBtnExt(); + this.sp4 = new System.Windows.Forms.Panel(); + this.btnHour = new HZH_Controls.Controls.UCBtnExt(); + this.sp3 = new System.Windows.Forms.Panel(); + this.btnDay = new HZH_Controls.Controls.UCBtnExt(); + this.sp2 = new System.Windows.Forms.Panel(); + this.btnMonth = new HZH_Controls.Controls.UCBtnExt(); + this.sp1 = new System.Windows.Forms.Panel(); + this.btnYear = new HZH_Controls.Controls.UCBtnExt(); + this.panel2 = new System.Windows.Forms.Panel(); + this.btnCancel = new HZH_Controls.Controls.UCBtnExt(); + this.btnOk = new HZH_Controls.Controls.UCBtnExt(); + this.panMian = new System.Windows.Forms.Panel(); + this.panTime = new HZH_Controls.Controls.UCTimePanel(); + this.panRight = new System.Windows.Forms.Panel(); + this.panLeft = new System.Windows.Forms.Panel(); + this.ucSplitLine_H2 = new HZH_Controls.Controls.UCSplitLine_H(); + this.ucSplitLine_H1 = new HZH_Controls.Controls.UCSplitLine_H(); + this.panel3 = new System.Windows.Forms.Panel(); + this.panel1.SuspendLayout(); + this.panel2.SuspendLayout(); + this.panMian.SuspendLayout(); + this.panel3.SuspendLayout(); + this.SuspendLayout(); + // + // panel1 + // + this.panel1.Controls.Add(this.btnMinute); + this.panel1.Controls.Add(this.sp4); + this.panel1.Controls.Add(this.btnHour); + this.panel1.Controls.Add(this.sp3); + this.panel1.Controls.Add(this.btnDay); + this.panel1.Controls.Add(this.sp2); + this.panel1.Controls.Add(this.btnMonth); + this.panel1.Controls.Add(this.sp1); + this.panel1.Controls.Add(this.btnYear); + this.panel1.Dock = System.Windows.Forms.DockStyle.Top; + this.panel1.Location = new System.Drawing.Point(9, 9); + this.panel1.Name = "panel1"; + this.panel1.Padding = new System.Windows.Forms.Padding(10, 7, 10, 7); + this.panel1.Size = new System.Drawing.Size(497, 45); + this.panel1.TabIndex = 0; + // + // btnMinute + // + this.btnMinute.BackColor = System.Drawing.Color.Transparent; + this.btnMinute.BtnBackColor = System.Drawing.Color.Transparent; + this.btnMinute.BtnFont = new System.Drawing.Font("微软雅黑", 12F); + this.btnMinute.BtnForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(77)))), ((int)(((byte)(59))))); + this.btnMinute.BtnText = "30分"; + this.btnMinute.ConerRadius = 5; + this.btnMinute.Cursor = System.Windows.Forms.Cursors.Hand; + this.btnMinute.Dock = System.Windows.Forms.DockStyle.Left; + this.btnMinute.FillColor = System.Drawing.Color.White; + this.btnMinute.Font = new System.Drawing.Font("微软雅黑", 15F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel); + this.btnMinute.IsRadius = true; + this.btnMinute.IsShowRect = true; + this.btnMinute.IsShowTips = false; + this.btnMinute.Location = new System.Drawing.Point(406, 7); + this.btnMinute.Margin = new System.Windows.Forms.Padding(3, 6, 3, 6); + this.btnMinute.Name = "btnMinute"; + this.btnMinute.RectColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(77)))), ((int)(((byte)(59))))); + this.btnMinute.RectWidth = 1; + this.btnMinute.Size = new System.Drawing.Size(80, 31); + this.btnMinute.TabIndex = 1; + this.btnMinute.TabStop = false; + this.btnMinute.TipsText = ""; + this.btnMinute.BtnClick += new System.EventHandler(this.btnTime_BtnClick); + // + // sp4 + // + this.sp4.Dock = System.Windows.Forms.DockStyle.Left; + this.sp4.Location = new System.Drawing.Point(387, 7); + this.sp4.Name = "sp4"; + this.sp4.Size = new System.Drawing.Size(19, 31); + this.sp4.TabIndex = 5; + // + // btnHour + // + this.btnHour.BackColor = System.Drawing.Color.Transparent; + this.btnHour.BtnBackColor = System.Drawing.Color.Transparent; + this.btnHour.BtnFont = new System.Drawing.Font("微软雅黑", 12F); + this.btnHour.BtnForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(77)))), ((int)(((byte)(59))))); + this.btnHour.BtnText = "12时"; + this.btnHour.ConerRadius = 5; + this.btnHour.Cursor = System.Windows.Forms.Cursors.Hand; + this.btnHour.Dock = System.Windows.Forms.DockStyle.Left; + this.btnHour.FillColor = System.Drawing.Color.White; + this.btnHour.Font = new System.Drawing.Font("微软雅黑", 15F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel); + this.btnHour.IsRadius = true; + this.btnHour.IsShowRect = true; + this.btnHour.IsShowTips = false; + this.btnHour.Location = new System.Drawing.Point(307, 7); + this.btnHour.Margin = new System.Windows.Forms.Padding(3, 6, 3, 6); + this.btnHour.Name = "btnHour"; + this.btnHour.RectColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(77)))), ((int)(((byte)(59))))); + this.btnHour.RectWidth = 1; + this.btnHour.Size = new System.Drawing.Size(80, 31); + this.btnHour.TabIndex = 1; + this.btnHour.TabStop = false; + this.btnHour.TipsText = ""; + this.btnHour.BtnClick += new System.EventHandler(this.btnTime_BtnClick); + // + // sp3 + // + this.sp3.Dock = System.Windows.Forms.DockStyle.Left; + this.sp3.Location = new System.Drawing.Point(288, 7); + this.sp3.Name = "sp3"; + this.sp3.Size = new System.Drawing.Size(19, 31); + this.sp3.TabIndex = 4; + // + // btnDay + // + this.btnDay.BackColor = System.Drawing.Color.Transparent; + this.btnDay.BtnBackColor = System.Drawing.Color.Transparent; + this.btnDay.BtnFont = new System.Drawing.Font("微软雅黑", 12F); + this.btnDay.BtnForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(77)))), ((int)(((byte)(59))))); + this.btnDay.BtnText = "30日"; + this.btnDay.ConerRadius = 5; + this.btnDay.Cursor = System.Windows.Forms.Cursors.Hand; + this.btnDay.Dock = System.Windows.Forms.DockStyle.Left; + this.btnDay.FillColor = System.Drawing.Color.White; + this.btnDay.Font = new System.Drawing.Font("微软雅黑", 15F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel); + this.btnDay.IsRadius = true; + this.btnDay.IsShowRect = true; + this.btnDay.IsShowTips = false; + this.btnDay.Location = new System.Drawing.Point(208, 7); + this.btnDay.Margin = new System.Windows.Forms.Padding(3, 6, 3, 6); + this.btnDay.Name = "btnDay"; + this.btnDay.RectColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(77)))), ((int)(((byte)(59))))); + this.btnDay.RectWidth = 1; + this.btnDay.Size = new System.Drawing.Size(80, 31); + this.btnDay.TabIndex = 1; + this.btnDay.TabStop = false; + this.btnDay.TipsText = ""; + this.btnDay.BtnClick += new System.EventHandler(this.btnTime_BtnClick); + // + // sp2 + // + this.sp2.Dock = System.Windows.Forms.DockStyle.Left; + this.sp2.Location = new System.Drawing.Point(189, 7); + this.sp2.Name = "sp2"; + this.sp2.Size = new System.Drawing.Size(19, 31); + this.sp2.TabIndex = 3; + // + // btnMonth + // + this.btnMonth.BackColor = System.Drawing.Color.Transparent; + this.btnMonth.BtnBackColor = System.Drawing.Color.Transparent; + this.btnMonth.BtnFont = new System.Drawing.Font("微软雅黑", 12F); + this.btnMonth.BtnForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(77)))), ((int)(((byte)(59))))); + this.btnMonth.BtnText = "12月"; + this.btnMonth.ConerRadius = 5; + this.btnMonth.Cursor = System.Windows.Forms.Cursors.Hand; + this.btnMonth.Dock = System.Windows.Forms.DockStyle.Left; + this.btnMonth.FillColor = System.Drawing.Color.White; + this.btnMonth.Font = new System.Drawing.Font("微软雅黑", 15F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel); + this.btnMonth.IsRadius = true; + this.btnMonth.IsShowRect = true; + this.btnMonth.IsShowTips = false; + this.btnMonth.Location = new System.Drawing.Point(109, 7); + this.btnMonth.Margin = new System.Windows.Forms.Padding(3, 6, 3, 6); + this.btnMonth.Name = "btnMonth"; + this.btnMonth.RectColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(77)))), ((int)(((byte)(59))))); + this.btnMonth.RectWidth = 1; + this.btnMonth.Size = new System.Drawing.Size(80, 31); + this.btnMonth.TabIndex = 1; + this.btnMonth.TabStop = false; + this.btnMonth.TipsText = ""; + this.btnMonth.BtnClick += new System.EventHandler(this.btnTime_BtnClick); + // + // sp1 + // + this.sp1.Dock = System.Windows.Forms.DockStyle.Left; + this.sp1.Location = new System.Drawing.Point(90, 7); + this.sp1.Name = "sp1"; + this.sp1.Size = new System.Drawing.Size(19, 31); + this.sp1.TabIndex = 2; + // + // btnYear + // + this.btnYear.BackColor = System.Drawing.Color.Transparent; + this.btnYear.BtnBackColor = System.Drawing.Color.Transparent; + this.btnYear.BtnFont = new System.Drawing.Font("微软雅黑", 12F); + this.btnYear.BtnForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(77)))), ((int)(((byte)(59))))); + this.btnYear.BtnText = "2019年"; + this.btnYear.ConerRadius = 5; + this.btnYear.Cursor = System.Windows.Forms.Cursors.Hand; + this.btnYear.Dock = System.Windows.Forms.DockStyle.Left; + this.btnYear.FillColor = System.Drawing.Color.White; + this.btnYear.Font = new System.Drawing.Font("微软雅黑", 15F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel); + this.btnYear.IsRadius = true; + this.btnYear.IsShowRect = true; + this.btnYear.IsShowTips = false; + this.btnYear.Location = new System.Drawing.Point(10, 7); + this.btnYear.Margin = new System.Windows.Forms.Padding(3, 6, 3, 6); + this.btnYear.Name = "btnYear"; + this.btnYear.RectColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(77)))), ((int)(((byte)(59))))); + this.btnYear.RectWidth = 1; + this.btnYear.Size = new System.Drawing.Size(80, 31); + this.btnYear.TabIndex = 1; + this.btnYear.TabStop = false; + this.btnYear.TipsText = ""; + this.btnYear.BtnClick += new System.EventHandler(this.btnTime_BtnClick); + // + // panel2 + // + this.panel2.Controls.Add(this.btnCancel); + this.panel2.Controls.Add(this.btnOk); + this.panel2.Dock = System.Windows.Forms.DockStyle.Bottom; + this.panel2.Location = new System.Drawing.Point(9, 300); + this.panel2.Name = "panel2"; + this.panel2.Size = new System.Drawing.Size(497, 54); + this.panel2.TabIndex = 2; + // + // btnCancel + // + this.btnCancel.Anchor = System.Windows.Forms.AnchorStyles.None; + this.btnCancel.BackColor = System.Drawing.Color.Transparent; + this.btnCancel.BtnBackColor = System.Drawing.Color.Transparent; + this.btnCancel.BtnFont = new System.Drawing.Font("微软雅黑", 13F); + this.btnCancel.BtnForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(77)))), ((int)(((byte)(59))))); + this.btnCancel.BtnText = "取 消"; + this.btnCancel.ConerRadius = 5; + this.btnCancel.Cursor = System.Windows.Forms.Cursors.Hand; + this.btnCancel.FillColor = System.Drawing.Color.White; + this.btnCancel.Font = new System.Drawing.Font("微软雅黑", 15F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel); + this.btnCancel.IsRadius = true; + this.btnCancel.IsShowRect = true; + this.btnCancel.IsShowTips = false; + this.btnCancel.Location = new System.Drawing.Point(89, 9); + this.btnCancel.Margin = new System.Windows.Forms.Padding(3, 6, 3, 6); + this.btnCancel.Name = "btnCancel"; + this.btnCancel.RectColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(77)))), ((int)(((byte)(59))))); + this.btnCancel.RectWidth = 1; + this.btnCancel.Size = new System.Drawing.Size(129, 36); + this.btnCancel.TabIndex = 2; + this.btnCancel.TabStop = false; + this.btnCancel.TipsText = ""; + this.btnCancel.BtnClick += new System.EventHandler(this.btnCancel_BtnClick); + // + // btnOk + // + this.btnOk.Anchor = System.Windows.Forms.AnchorStyles.None; + this.btnOk.BackColor = System.Drawing.Color.Transparent; + this.btnOk.BtnBackColor = System.Drawing.Color.Transparent; + this.btnOk.BtnFont = new System.Drawing.Font("微软雅黑", 13F); + this.btnOk.BtnForeColor = System.Drawing.Color.White; + this.btnOk.BtnText = "确 定"; + this.btnOk.ConerRadius = 5; + this.btnOk.Cursor = System.Windows.Forms.Cursors.Hand; + this.btnOk.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(77)))), ((int)(((byte)(59))))); + this.btnOk.Font = new System.Drawing.Font("微软雅黑", 15F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel); + this.btnOk.IsRadius = true; + this.btnOk.IsShowRect = true; + this.btnOk.IsShowTips = false; + this.btnOk.Location = new System.Drawing.Point(307, 9); + this.btnOk.Margin = new System.Windows.Forms.Padding(3, 6, 3, 6); + this.btnOk.Name = "btnOk"; + this.btnOk.RectColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(77)))), ((int)(((byte)(59))))); + this.btnOk.RectWidth = 1; + this.btnOk.Size = new System.Drawing.Size(129, 36); + this.btnOk.TabIndex = 1; + this.btnOk.TabStop = false; + this.btnOk.TipsText = ""; + this.btnOk.BtnClick += new System.EventHandler(this.btnOk_BtnClick); + // + // panMian + // + this.panMian.Controls.Add(this.panTime); + this.panMian.Controls.Add(this.panRight); + this.panMian.Controls.Add(this.panLeft); + this.panMian.Dock = System.Windows.Forms.DockStyle.Fill; + this.panMian.Location = new System.Drawing.Point(9, 55); + this.panMian.Name = "panMian"; + this.panMian.Size = new System.Drawing.Size(497, 244); + this.panMian.TabIndex = 4; + // + // panTime + // + this.panTime.BackColor = System.Drawing.Color.White; + this.panTime.Column = 0; + this.panTime.Dock = System.Windows.Forms.DockStyle.Fill; + this.panTime.FirstEvent = false; + this.panTime.Location = new System.Drawing.Point(48, 0); + this.panTime.Name = "panTime"; + this.panTime.Row = 0; + this.panTime.SelectBtn = null; + this.panTime.Size = new System.Drawing.Size(401, 244); + this.panTime.Source = null; + this.panTime.TabIndex = 0; + // + // panRight + // + this.panRight.BackgroundImage = global::HZH_Controls.Properties.Resources.dateRight; + this.panRight.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center; + this.panRight.Dock = System.Windows.Forms.DockStyle.Right; + this.panRight.Location = new System.Drawing.Point(449, 0); + this.panRight.Name = "panRight"; + this.panRight.Size = new System.Drawing.Size(48, 244); + this.panRight.TabIndex = 2; + this.panRight.Visible = false; + this.panRight.MouseDown += new System.Windows.Forms.MouseEventHandler(this.panRight_MouseDown); + // + // panLeft + // + this.panLeft.BackgroundImage = global::HZH_Controls.Properties.Resources.datetLeft; + this.panLeft.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center; + this.panLeft.Dock = System.Windows.Forms.DockStyle.Left; + this.panLeft.Location = new System.Drawing.Point(0, 0); + this.panLeft.Name = "panLeft"; + this.panLeft.Size = new System.Drawing.Size(48, 244); + this.panLeft.TabIndex = 1; + this.panLeft.Visible = false; + this.panLeft.MouseDown += new System.Windows.Forms.MouseEventHandler(this.panLeft_MouseDown); + // + // ucSplitLine_H2 + // + this.ucSplitLine_H2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(238)))), ((int)(((byte)(238)))), ((int)(((byte)(238))))); + this.ucSplitLine_H2.Dock = System.Windows.Forms.DockStyle.Bottom; + this.ucSplitLine_H2.Location = new System.Drawing.Point(9, 299); + this.ucSplitLine_H2.Name = "ucSplitLine_H2"; + this.ucSplitLine_H2.Size = new System.Drawing.Size(497, 1); + this.ucSplitLine_H2.TabIndex = 3; + this.ucSplitLine_H2.TabStop = false; + // + // ucSplitLine_H1 + // + this.ucSplitLine_H1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(238)))), ((int)(((byte)(238)))), ((int)(((byte)(238))))); + this.ucSplitLine_H1.Dock = System.Windows.Forms.DockStyle.Top; + this.ucSplitLine_H1.Location = new System.Drawing.Point(9, 54); + this.ucSplitLine_H1.Name = "ucSplitLine_H1"; + this.ucSplitLine_H1.Size = new System.Drawing.Size(497, 1); + this.ucSplitLine_H1.TabIndex = 1; + this.ucSplitLine_H1.TabStop = false; + // + // panel3 + // + this.panel3.BackColor = System.Drawing.Color.White; + this.panel3.Controls.Add(this.panMian); + this.panel3.Controls.Add(this.ucSplitLine_H2); + this.panel3.Controls.Add(this.panel2); + this.panel3.Controls.Add(this.ucSplitLine_H1); + this.panel3.Controls.Add(this.panel1); + this.panel3.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel3.Location = new System.Drawing.Point(1, 1); + this.panel3.Name = "panel3"; + this.panel3.Padding = new System.Windows.Forms.Padding(9); + this.panel3.Size = new System.Drawing.Size(515, 363); + this.panel3.TabIndex = 5; + // + // UCDateTimeSelectPan + // + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; + this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(247)))), ((int)(((byte)(247)))), ((int)(((byte)(247))))); + this.Controls.Add(this.panel3); + this.Name = "UCDateTimeSelectPan"; + this.Padding = new System.Windows.Forms.Padding(1); + this.Size = new System.Drawing.Size(517, 365); + this.Load += new System.EventHandler(this.UCDateTimePickerExt_Load); + this.panel1.ResumeLayout(false); + this.panel2.ResumeLayout(false); + this.panMian.ResumeLayout(false); + this.panel3.ResumeLayout(false); + this.ResumeLayout(false); + + } + + #endregion + + /// + /// The panel1 + /// + private System.Windows.Forms.Panel panel1; + /// + /// The uc split line h1 + /// + private UCSplitLine_H ucSplitLine_H1; + /// + /// The panel2 + /// + private System.Windows.Forms.Panel panel2; + /// + /// The uc split line h2 + /// + private UCSplitLine_H ucSplitLine_H2; + /// + /// The pan mian + /// + private System.Windows.Forms.Panel panMian; + /// + /// The BTN minute + /// + private UCBtnExt btnMinute; + /// + /// The BTN day + /// + private UCBtnExt btnDay; + /// + /// The BTN hour + /// + private UCBtnExt btnHour; + /// + /// The BTN month + /// + private UCBtnExt btnMonth; + /// + /// The BTN year + /// + private UCBtnExt btnYear; + /// + /// The pan time + /// + private UCTimePanel panTime; + /// + /// The BTN cancel + /// + private UCBtnExt btnCancel; + /// + /// The BTN ok + /// + private UCBtnExt btnOk; + /// + /// The pan right + /// + private System.Windows.Forms.Panel panRight; + /// + /// The pan left + /// + private System.Windows.Forms.Panel panLeft; + /// + /// The SP4 + /// + private System.Windows.Forms.Panel sp4; + /// + /// The SP3 + /// + private System.Windows.Forms.Panel sp3; + /// + /// The SP2 + /// + private System.Windows.Forms.Panel sp2; + /// + /// The SP1 + /// + private System.Windows.Forms.Panel sp1; + /// + /// The panel3 + /// + private System.Windows.Forms.Panel panel3; + + } +} diff --git a/UsingControl/HZHControls/Controls/DateTime/UCDateTimeSelectPan.cs b/UsingControl/HZHControls/Controls/DateTime/UCDateTimeSelectPan.cs new file mode 100644 index 0000000..8e3efdd --- /dev/null +++ b/UsingControl/HZHControls/Controls/DateTime/UCDateTimeSelectPan.cs @@ -0,0 +1,398 @@ +// *********************************************************************** +// Assembly : HZH_Controls +// Created : 08-08-2019 +// +// *********************************************************************** +// +// Copyright by Huang Zhenghui(黄正辉) All, QQ group:568015492 QQ:623128629 Email:623128629@qq.com +// +// +// Blog: https://www.cnblogs.com/bfyx +// GitHub:https://github.com/kwwwvagaa/NetWinformControl +// gitee:https://gitee.com/kwwwvagaa/net_winform_custom_control.git +// +// If you use this code, please keep this note. +// *********************************************************************** +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Windows.Forms; + + +namespace HZH_Controls.Controls +{ + /// + /// Class UCDateTimeSelectPan. + /// Implements the + /// + /// + [ToolboxItem(false)] + public partial class UCDateTimeSelectPan : UserControl + { + /// + /// Occurs when [selected time event]. + /// + [Description("确定事件"), Category("自定义")] + public event EventHandler SelectedTimeEvent; + /// + /// Occurs when [cancel time event]. + /// + [Description("取消事件"), Category("自定义")] + public event EventHandler CancelTimeEvent; + /// + /// The automatic select next + /// + private bool autoSelectNext = true; + /// + /// Gets or sets a value indicating whether [automatic select next]. + /// + /// true if [automatic select next]; otherwise, false. + [Description("自动选中下一级"), Category("自定义")] + public bool AutoSelectNext + { + get { return autoSelectNext; } + set { autoSelectNext = value; } + } + + /// + /// The m dt + /// + DateTime m_dt = DateTime.Now; + + /// + /// Gets or sets the current time. + /// + /// The current time. + public DateTime CurrentTime + { + get { return m_dt; } + set + { + m_dt = value; + SetTimeToControl(); + } + } + /// + /// The m this BTN + /// + UCBtnExt m_thisBtn = null; + + /// + /// The m type + /// + DateTimePickerType m_type = DateTimePickerType.DateTime; + /// + /// Gets or sets the type of the time. + /// + /// The type of the time. + [Description("时间类型"), Category("自定义")] + public DateTimePickerType TimeType + { + get { return m_type; } + set { m_type = value; } + } + /// + /// Initializes a new instance of the class. + /// + public UCDateTimeSelectPan() + { + InitializeComponent(); + panTime.SelectSourceEvent += panTime_SelectSourceEvent; + this.TabStop = false; + } + /// + /// Initializes a new instance of the class. + /// + /// The dt. + public UCDateTimeSelectPan(DateTime dt) + { + m_dt = dt; + InitializeComponent(); + panTime.SelectSourceEvent += panTime_SelectSourceEvent; + this.TabStop = false; + } + + /// + /// Handles the SelectSourceEvent event of the panTime control. + /// + /// The source of the event. + /// The instance containing the event data. + void panTime_SelectSourceEvent(object sender, EventArgs e) + { + string strKey = sender.ToString(); + if (m_thisBtn == btnYear) + { + m_dt = (strKey + "-" + m_dt.Month + "-" + m_dt.Day + " " + m_dt.Hour + ":" + m_dt.Minute).ToDate(); + } + else if (m_thisBtn == btnMonth) + { + m_dt = (m_dt.Year + "-" + strKey + "-" + m_dt.Day + " " + m_dt.Hour + ":" + m_dt.Minute).ToDate(); + } + else if (m_thisBtn == btnDay) + { + m_dt = (m_dt.Year + "-" + m_dt.Month + "-" + strKey + " " + m_dt.Hour + ":" + m_dt.Minute).ToDate(); + } + else if (m_thisBtn == btnHour) + { + m_dt = (m_dt.Year + "-" + m_dt.Month + "-" + m_dt.Day + " " + strKey + ":" + m_dt.Minute).ToDate(); + } + else if (m_thisBtn == btnMinute) + { + m_dt = (m_dt.Year + "-" + m_dt.Month + "-" + m_dt.Day + " " + m_dt.Hour + ":" + strKey).ToDate(); + } + SetTimeToControl(); + if (this.Visible) + { + if (autoSelectNext) + { + if (m_thisBtn == btnYear) + { + SetSelectType(btnMonth); + } + else if (m_thisBtn == btnMonth) + { + SetSelectType(btnDay); + } + else if (m_thisBtn == btnDay) + { + if (m_type == DateTimePickerType.DateTime || m_type == DateTimePickerType.Time) + SetSelectType(btnHour); + } + else if (m_thisBtn == btnHour) + { + SetSelectType(btnMinute); + } + } + } + } + + /// + /// Handles the Load event of the UCDateTimePickerExt control. + /// + /// The source of the event. + /// The instance containing the event data. + private void UCDateTimePickerExt_Load(object sender, EventArgs e) + { + SetTimeToControl(); + + if (m_type == DateTimePickerType.Date) + { + btnHour.Visible = false; + btnMinute.Visible = false; + } + else if (m_type == DateTimePickerType.Time) + { + btnYear.Visible = false; + btnMonth.Visible = false; + btnDay.Visible = false; + sp1.Visible = false; + sp2.Visible = false; + sp3.Visible = false; + } + if ((int)m_type <= 2) + { + SetSelectType(btnYear); + } + else + { + SetSelectType(btnHour); + } + } + + /// + /// Sets the time to control. + /// + private void SetTimeToControl() + { + btnYear.Tag = m_dt.Year; + btnYear.BtnText = m_dt.Year + "年"; + btnMonth.Tag = m_dt.Month; + btnMonth.BtnText = m_dt.Month.ToString().PadLeft(2, '0') + "月"; + btnDay.Tag = m_dt.Day; + btnDay.BtnText = m_dt.Day.ToString().PadLeft(2, '0') + "日"; + btnHour.Tag = m_dt.Hour; + btnHour.BtnText = m_dt.Hour.ToString().PadLeft(2, '0') + "时"; + btnMinute.Tag = m_dt.Minute; + btnMinute.BtnText = m_dt.Minute.ToString().PadLeft(2, '0') + "分"; + } + + /// + /// Sets the type of the select. + /// + /// The BTN. + private void SetSelectType(UCBtnExt btn) + { + try + { + ControlHelper.FreezeControl(this, true); + if (m_thisBtn != null) + { + m_thisBtn.FillColor = Color.White; + m_thisBtn.BtnForeColor = Color.FromArgb(255, 77, 59); + } + m_thisBtn = btn; + if (m_thisBtn != null) + { + m_thisBtn.FillColor = Color.FromArgb(255, 77, 59); + m_thisBtn.BtnForeColor = Color.White; + + List> lstSource = new List>(); + panTime.SuspendLayout(); + + if (btn == btnYear) + { + panLeft.Visible = true; + panRight.Visible = true; + } + else + { + panLeft.Visible = false; + panRight.Visible = false; + } + + if (btn == btnYear) + { + panTime.Row = 5; + panTime.Column = 6; + int intYear = m_dt.Year - m_dt.Year % 30; + for (int i = 0; i < 30; i++) + { + lstSource.Add(new KeyValuePair((intYear + i).ToString(), (intYear + i).ToString())); + } + } + else if (btn == btnMonth) + { + panTime.Row = 3; + panTime.Column = 4; + for (int i = 1; i <= 12; i++) + { + lstSource.Add(new KeyValuePair(i.ToString(), i.ToString().PadLeft(2, '0') + "月\r\n" + (("2019-" + i + "-01").ToDate().ToString("MMM", System.Globalization.CultureInfo.CreateSpecificCulture("en-GB"))))); + } + } + else if (btn == btnDay) + { + panTime.Column = 7; + int intDayCount = DateTime.DaysInMonth(m_dt.Year, m_dt.Month); + int intIndex = (int)(m_dt.DayOfWeek); + panTime.Row = (intDayCount + intIndex) / 7 + ((intDayCount + intIndex) % 7 != 0 ? 1 : 0); + for (int i = 0; i < intIndex; i++) + { + lstSource.Add(new KeyValuePair("", "")); + } + for (int i = 1; i <= intDayCount; i++) + { + lstSource.Add(new KeyValuePair(i.ToString(), i.ToString().PadLeft(2, '0'))); + } + } + else if (btn == btnHour) + { + panTime.Row = 4; + panTime.Column = 6; + for (int i = 0; i <= 24; i++) + { + lstSource.Add(new KeyValuePair(i.ToString(), i.ToString() + "时")); + } + } + else if (btn == btnMinute) + { + panTime.Row = 5; + panTime.Column = 12; + for (int i = 0; i <= 60; i++) + { + lstSource.Add(new KeyValuePair(i.ToString(), i.ToString().PadLeft(2, '0'))); + } + } + panTime.Source = lstSource; + panTime.SetSelect(btn.Tag.ToStringExt()); + panTime.ResumeLayout(true); + + // panTime.Enabled = true; + } + } + finally + { + ControlHelper.FreezeControl(this, false); + } + } + + /// + /// Handles the BtnClick event of the btnTime control. + /// + /// The source of the event. + /// The instance containing the event data. + private void btnTime_BtnClick(object sender, EventArgs e) + { + SetSelectType((UCBtnExt)sender); + } + + /// + /// Handles the MouseDown event of the panLeft control. + /// + /// The source of the event. + /// The instance containing the event data. + private void panLeft_MouseDown(object sender, MouseEventArgs e) + { + List> lstSource = new List>(); + int intYear = this.panTime.Source[0].Key.ToInt() - this.panTime.Source[0].Key.ToInt() % 30 - 30; + panTime.SuspendLayout(); + panTime.Row = 5; + panTime.Column = 6; + for (int i = 0; i < 30; i++) + { + lstSource.Add(new KeyValuePair((intYear + i).ToString(), (intYear + i).ToString())); + } + panTime.Source = lstSource; + panTime.SetSelect(btnYear.Tag.ToStringExt()); + panTime.ResumeLayout(true); + } + + /// + /// Handles the MouseDown event of the panRight control. + /// + /// The source of the event. + /// The instance containing the event data. + private void panRight_MouseDown(object sender, MouseEventArgs e) + { + List> lstSource = new List>(); + int intYear = this.panTime.Source[0].Key.ToInt() - this.panTime.Source[0].Key.ToInt() % 30 + 30; + panTime.SuspendLayout(); + panTime.Row = 5; + panTime.Column = 6; + for (int i = 0; i < 30; i++) + { + lstSource.Add(new KeyValuePair((intYear + i).ToString(), (intYear + i).ToString())); + } + panTime.Source = lstSource; + panTime.SetSelect(btnYear.Tag.ToStringExt()); + panTime.ResumeLayout(true); + } + + /// + /// Handles the BtnClick event of the btnOk control. + /// + /// The source of the event. + /// The instance containing the event data. + private void btnOk_BtnClick(object sender, EventArgs e) + { + if (SelectedTimeEvent != null) + SelectedTimeEvent(m_dt, null); + } + + /// + /// Handles the BtnClick event of the btnCancel control. + /// + /// The source of the event. + /// The instance containing the event data. + private void btnCancel_BtnClick(object sender, EventArgs e) + { + if (CancelTimeEvent != null) + { + CancelTimeEvent(null, null); + } + } + } +} diff --git a/UsingControl/HZHControls/Controls/DateTime/UCDateTimeSelectPan.resx b/UsingControl/HZHControls/Controls/DateTime/UCDateTimeSelectPan.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/UsingControl/HZHControls/Controls/DateTime/UCDateTimeSelectPan.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/UsingControl/HZHControls/Controls/DateTime/UCTimePanel.Designer.cs b/UsingControl/HZHControls/Controls/DateTime/UCTimePanel.Designer.cs new file mode 100644 index 0000000..962a333 --- /dev/null +++ b/UsingControl/HZHControls/Controls/DateTime/UCTimePanel.Designer.cs @@ -0,0 +1,154 @@ +// *********************************************************************** +// Assembly : HZH_Controls +// Created : 08-08-2019 +// +// *********************************************************************** +// +// Copyright by Huang Zhenghui(黄正辉) All, QQ group:568015492 QQ:623128629 Email:623128629@qq.com +// +// +// Blog: https://www.cnblogs.com/bfyx +// GitHub:https://github.com/kwwwvagaa/NetWinformControl +// gitee:https://gitee.com/kwwwvagaa/net_winform_custom_control.git +// +// If you use this code, please keep this note. +// *********************************************************************** +namespace HZH_Controls.Controls +{ + /// + /// Class UCTimePanel. + /// Implements the + /// + /// + partial class UCTimePanel + { + /// + /// 必需的设计器变量。 + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 清理所有正在使用的资源。 + /// + /// 如果应释放托管资源,为 true;否则为 false。 + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region 组件设计器生成的代码 + + /// + /// 设计器支持所需的方法 - 不要 + /// 使用代码编辑器修改此方法的内容。 + /// + private void InitializeComponent() + { + this.panMain = new System.Windows.Forms.TableLayoutPanel(); + this.ucSplitLine_V1 = new HZH_Controls.Controls.UCSplitLine_V(); + this.ucSplitLine_V2 = new HZH_Controls.Controls.UCSplitLine_V(); + this.ucSplitLine_H1 = new HZH_Controls.Controls.UCSplitLine_H(); + this.ucSplitLine_H2 = new HZH_Controls.Controls.UCSplitLine_H(); + this.SuspendLayout(); + // + // panMain + // + this.panMain.ColumnCount = 1; + this.panMain.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.panMain.Dock = System.Windows.Forms.DockStyle.Fill; + this.panMain.Location = new System.Drawing.Point(1, 1); + this.panMain.Name = "panMain"; + this.panMain.RowCount = 1; + this.panMain.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.panMain.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F)); + this.panMain.Size = new System.Drawing.Size(99, 228); + this.panMain.TabIndex = 0; + // + // ucSplitLine_V1 + // + this.ucSplitLine_V1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(238)))), ((int)(((byte)(238)))), ((int)(((byte)(238))))); + this.ucSplitLine_V1.Dock = System.Windows.Forms.DockStyle.Left; + this.ucSplitLine_V1.Location = new System.Drawing.Point(0, 0); + this.ucSplitLine_V1.Name = "ucSplitLine_V1"; + this.ucSplitLine_V1.Size = new System.Drawing.Size(1, 230); + this.ucSplitLine_V1.TabIndex = 0; + this.ucSplitLine_V1.TabStop = false; + this.ucSplitLine_V1.Visible = false; + // + // ucSplitLine_V2 + // + this.ucSplitLine_V2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(238)))), ((int)(((byte)(238)))), ((int)(((byte)(238))))); + this.ucSplitLine_V2.Dock = System.Windows.Forms.DockStyle.Right; + this.ucSplitLine_V2.Location = new System.Drawing.Point(100, 0); + this.ucSplitLine_V2.Name = "ucSplitLine_V2"; + this.ucSplitLine_V2.Size = new System.Drawing.Size(1, 230); + this.ucSplitLine_V2.TabIndex = 1; + this.ucSplitLine_V2.TabStop = false; + this.ucSplitLine_V2.Visible = false; + // + // ucSplitLine_H1 + // + this.ucSplitLine_H1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(238)))), ((int)(((byte)(238)))), ((int)(((byte)(238))))); + this.ucSplitLine_H1.Dock = System.Windows.Forms.DockStyle.Top; + this.ucSplitLine_H1.Location = new System.Drawing.Point(1, 0); + this.ucSplitLine_H1.Name = "ucSplitLine_H1"; + this.ucSplitLine_H1.Size = new System.Drawing.Size(99, 1); + this.ucSplitLine_H1.TabIndex = 0; + this.ucSplitLine_H1.TabStop = false; + this.ucSplitLine_H1.Visible = false; + // + // ucSplitLine_H2 + // + this.ucSplitLine_H2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(238)))), ((int)(((byte)(238)))), ((int)(((byte)(238))))); + this.ucSplitLine_H2.Dock = System.Windows.Forms.DockStyle.Bottom; + this.ucSplitLine_H2.Location = new System.Drawing.Point(1, 229); + this.ucSplitLine_H2.Name = "ucSplitLine_H2"; + this.ucSplitLine_H2.Size = new System.Drawing.Size(99, 1); + this.ucSplitLine_H2.TabIndex = 2; + this.ucSplitLine_H2.TabStop = false; + this.ucSplitLine_H2.Visible = false; + // + // UCTimePanel + // + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; + this.BackColor = System.Drawing.Color.White; + this.Controls.Add(this.panMain); + this.Controls.Add(this.ucSplitLine_H2); + this.Controls.Add(this.ucSplitLine_H1); + this.Controls.Add(this.ucSplitLine_V2); + this.Controls.Add(this.ucSplitLine_V1); + this.Name = "UCTimePanel"; + this.Size = new System.Drawing.Size(101, 230); + this.Load += new System.EventHandler(this.UCTimePanel_Load); + this.ResumeLayout(false); + + } + + #endregion + + /// + /// The pan main + /// + private System.Windows.Forms.TableLayoutPanel panMain; + /// + /// The uc split line v1 + /// + private UCSplitLine_V ucSplitLine_V1; + /// + /// The uc split line v2 + /// + private UCSplitLine_V ucSplitLine_V2; + /// + /// The uc split line h1 + /// + private UCSplitLine_H ucSplitLine_H1; + /// + /// The uc split line h2 + /// + private UCSplitLine_H ucSplitLine_H2; + } +} diff --git a/UsingControl/HZHControls/Controls/DateTime/UCTimePanel.cs b/UsingControl/HZHControls/Controls/DateTime/UCTimePanel.cs new file mode 100644 index 0000000..08ec5ac --- /dev/null +++ b/UsingControl/HZHControls/Controls/DateTime/UCTimePanel.cs @@ -0,0 +1,317 @@ +// *********************************************************************** +// Assembly : HZH_Controls +// Created : 08-08-2019 +// +// *********************************************************************** +// +// Copyright by Huang Zhenghui(黄正辉) All, QQ group:568015492 QQ:623128629 Email:623128629@qq.com +// +// +// Blog: https://www.cnblogs.com/bfyx +// GitHub:https://github.com/kwwwvagaa/NetWinformControl +// gitee:https://gitee.com/kwwwvagaa/net_winform_custom_control.git +// +// If you use this code, please keep this note. +// *********************************************************************** +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Windows.Forms; + + +namespace HZH_Controls.Controls +{ + /// + /// Class UCTimePanel. + /// Implements the + /// + /// + [ToolboxItem(false)] + public partial class UCTimePanel : UserControl + { + /// + /// Occurs when [select source event]. + /// + public event EventHandler SelectSourceEvent; + /// + /// The source + /// + private List> source = null; + /// + /// Gets or sets a value indicating whether [first event]. + /// + /// true if [first event]; otherwise, false. + public bool FirstEvent { get; set; } + + /// + /// Gets or sets the source. + /// + /// The source. + public List> Source + { + get { return source; } + set + { + source = value; + SetSource(value); + } + } + + /// + /// The is show border + /// + private bool _IsShowBorder = false; + + /// + /// Gets or sets a value indicating whether this instance is show border. + /// + /// true if this instance is show border; otherwise, false. + public bool IsShowBorder + { + get { return _IsShowBorder; } + set + { + _IsShowBorder = value; + ucSplitLine_H1.Visible = value; + ucSplitLine_H2.Visible = value; + ucSplitLine_V1.Visible = value; + ucSplitLine_V2.Visible = value; + } + } + + /// + /// The select BTN + /// + UCBtnExt selectBtn; + /// + /// 选中按钮 + /// + /// The select BTN. + public UCBtnExt SelectBtn + { + get { return selectBtn; } + set + { + if (selectBtn != null && !selectBtn.IsDisposed) + { + selectBtn.FillColor = System.Drawing.Color.White; + selectBtn.RectColor = System.Drawing.Color.White; + selectBtn.BtnForeColor = System.Drawing.Color.FromArgb(66, 66, 66); + } + bool blnEvent = FirstEvent ? true : (selectBtn != null); + selectBtn = value; + if (value != null) + { + selectBtn.FillColor = System.Drawing.Color.FromArgb(255, 77, 59); + selectBtn.RectColor = System.Drawing.Color.FromArgb(255, 77, 59); + selectBtn.BtnForeColor = System.Drawing.Color.White; + if (blnEvent && SelectSourceEvent != null) + SelectSourceEvent(selectBtn.Tag.ToStringExt(), null); + } + } + } + /// + /// Initializes a new instance of the class. + /// + public UCTimePanel() + { + InitializeComponent(); + this.SizeChanged += UCTimePanel_SizeChanged; + } + + /// + /// Handles the SizeChanged event of the UCTimePanel control. + /// + /// The source of the event. + /// The instance containing the event data. + void UCTimePanel_SizeChanged(object sender, EventArgs e) + { + + } + + /// + /// The row + /// + private int row = 0; + + /// + /// Gets or sets the row. + /// + /// The row. + public int Row + { + get { return row; } + set + { + row = value; + ReloadPanel(); + } + } + + + /// + /// The column + /// + private int column = 0; + + /// + /// Gets or sets the column. + /// + /// The column. + public int Column + { + get { return column; } + set + { + column = value; + ReloadPanel(); + } + } + + /// + /// Handles the Load event of the UCTimePanel control. + /// + /// The source of the event. + /// The instance containing the event data. + private void UCTimePanel_Load(object sender, EventArgs e) + { + + } + + #region 设置面板数据源 + /// + /// 功能描述:设置面板数据源 + /// 作  者:HZH + /// 创建日期:2019-06-25 15:02:15 + /// 任务编号:POS + /// + /// lstSource + public void SetSource(List> lstSource) + { + try + { + ControlHelper.FreezeControl(this, true); + if (row <= 0 || column <= 0) + return; + if (Source != lstSource) + Source = lstSource; + int index = 0; + SelectBtn = null; + foreach (UCBtnExt btn in this.panMain.Controls) + { + if (lstSource != null && index < lstSource.Count) + { + btn.BtnText = lstSource[index].Value; + btn.Tag = lstSource[index].Key; + index++; + } + else + { + btn.BtnText = ""; + btn.Tag = null; + } + } + } + finally + { + ControlHelper.FreezeControl(this, false); + } + } + #endregion + /// + /// 设置选中项 + /// + /// The string key. + public void SetSelect(string strKey) + { + foreach (UCBtnExt item in this.panMain.Controls) + { + if (item.Tag != null && item.Tag.ToStringExt() == strKey) + { + SelectBtn = item; + return; + } + } + SelectBtn = new UCBtnExt(); + } + + #region 重置面板 + /// + /// 功能描述:重置面板 + /// 作  者:HZH + /// 创建日期:2019-06-25 15:02:05 + /// 任务编号:POS + /// + public void ReloadPanel() + { + if (row <= 0 || column <= 0) + return; + SelectBtn = null; + this.panMain.Controls.Clear(); + this.panMain.ColumnCount = column; + this.panMain.ColumnStyles.Clear(); + for (int i = 0; i < column; i++) + { + this.panMain.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); + } + + this.panMain.RowCount = row; + this.panMain.RowStyles.Clear(); + for (int i = 0; i < row; i++) + { + this.panMain.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F)); + } + + for (int i = 0; i < row; i++) + { + for (int j = 0; j < column; j++) + { + UCBtnExt btn = new UCBtnExt(); + btn.BackColor = System.Drawing.Color.Transparent; + btn.BtnBackColor = System.Drawing.Color.Transparent; + btn.BtnFont = new System.Drawing.Font("微软雅黑", 13F); + btn.BtnForeColor = System.Drawing.Color.FromArgb(66, 66, 66); + btn.ConerRadius = 5; + btn.Dock = DockStyle.Fill; + btn.FillColor = System.Drawing.Color.White; + btn.Font = new System.Drawing.Font("微软雅黑", 15F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel); + btn.Cursor = Cursor.Current; + btn.IsShowRect = true; + btn.IsRadius = true; + btn.IsShowTips = false; + btn.Name = "btn_" + i + "_" + j; + btn.RectColor = System.Drawing.Color.White; + btn.RectWidth = 1; + btn.Width = this.Width; + btn.TabIndex = 0; + btn.TipsText = ""; + btn.BtnClick += btn_BtnClick; + this.panMain.Controls.Add(btn, j, i); + } + } + + if (Source != null) + { + SetSource(Source); + } + } + #endregion + + /// + /// Handles the BtnClick event of the btn control. + /// + /// The source of the event. + /// The instance containing the event data. + void btn_BtnClick(object sender, EventArgs e) + { + var btn = (UCBtnExt)sender; + if (btn.Tag == null) + return; + SelectBtn = btn; + } + } +} diff --git a/UsingControl/HZHControls/Controls/DateTime/UCTimePanel.resx b/UsingControl/HZHControls/Controls/DateTime/UCTimePanel.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/UsingControl/HZHControls/Controls/DateTime/UCTimePanel.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/UsingControl/HZHControls/Controls/FactoryControls/Arrow/UCArrow.cs b/UsingControl/HZHControls/Controls/FactoryControls/Arrow/UCArrow.cs new file mode 100644 index 0000000..cfa0b00 --- /dev/null +++ b/UsingControl/HZHControls/Controls/FactoryControls/Arrow/UCArrow.cs @@ -0,0 +1,343 @@ +// *********************************************************************** +// Assembly : HZH_Controls +// Created : 2019-09-10 +// +// *********************************************************************** +// +// Copyright by Huang Zhenghui(黄正辉) All, QQ group:568015492 QQ:623128629 Email:623128629@qq.com +// +// +// Blog: https://www.cnblogs.com/bfyx +// GitHub:https://github.com/kwwwvagaa/NetWinformControl +// gitee:https://gitee.com/kwwwvagaa/net_winform_custom_control.git +// +// If you use this code, please keep this note. +// *********************************************************************** +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using System.Drawing; +using System.Drawing.Drawing2D; +using System.ComponentModel; + +namespace HZH_Controls.Controls +{ + /// + /// Class UCArrow. + /// Implements the + /// + /// + public class UCArrow : UserControl + { + /// + /// The arrow color + /// + private Color arrowColor = Color.FromArgb(255, 77, 59); + + /// + /// Gets or sets the color of the arrow. + /// + /// The color of the arrow. + [Description("箭头颜色"), Category("自定义")] + public Color ArrowColor + { + get { return arrowColor; } + set + { + arrowColor = value; + Refresh(); + } + } + + /// + /// The border color + /// + private Color? borderColor = null; + + /// + /// Gets or sets the color of the border. + /// + /// The color of the border. + [Description("箭头边框颜色,为空则无边框"), Category("自定义")] + public Color? BorderColor + { + get { return borderColor; } + set + { + borderColor = value; + Refresh(); + } + } + + /// + /// The direction + /// + private ArrowDirection direction = ArrowDirection.Right; + + /// + /// Gets or sets the direction. + /// + /// The direction. + [Description("箭头方向"), Category("自定义")] + public ArrowDirection Direction + { + get { return direction; } + set + { + direction = value; + ResetPath(); + Refresh(); + } + } + /// + /// 获取或设置控件显示的文字的字体。 + /// + /// The font. + /// + /// + /// + /// + /// + /// + public override Font Font + { + get + { + return base.Font; + } + set + { + base.Font = value; + Refresh(); + } + } + /// + /// 获取或设置控件的前景色。 + /// + /// The color of the fore. + /// + /// + /// + public override Color ForeColor + { + get + { + return base.ForeColor; + } + set + { + base.ForeColor = value; + Refresh(); + } + } + /// + /// The text + /// + private string text; + /// + /// Gets or sets the text. + /// + /// The text. + [Bindable(true)] + [Browsable(true)] + [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)] + [EditorBrowsable(EditorBrowsableState.Always)] + [Localizable(true)] + [Description("箭头文字"), Category("自定义")] + public override string Text + { + get + { + return text; + } + set + { + text = value; + Refresh(); + } + } + /// + /// The m path + /// + GraphicsPath m_path; + /// + /// Initializes a new instance of the class. + /// + public UCArrow() + { + this.SetStyle(ControlStyles.AllPaintingInWmPaint, true); + this.SetStyle(ControlStyles.DoubleBuffer, true); + this.SetStyle(ControlStyles.ResizeRedraw, true); + this.SetStyle(ControlStyles.Selectable, true); + this.SetStyle(ControlStyles.SupportsTransparentBackColor, true); + this.SetStyle(ControlStyles.UserPaint, true); + this.ForeColor = Color.White; + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; + this.SizeChanged += UCArrow_SizeChanged; + this.Size = new Size(100, 50); + } + + /// + /// Handles the SizeChanged event of the UCArrow control. + /// + /// The source of the event. + /// The instance containing the event data. + void UCArrow_SizeChanged(object sender, EventArgs e) + { + ResetPath(); + } + + /// + /// Resets the path. + /// + private void ResetPath() + { + Point[] ps = null; + switch (direction) + { + case ArrowDirection.Left: + ps = new Point[] + { + new Point(0,this.Height/2), + new Point(40,0), + new Point(40,this.Height/4), + new Point(this.Width-1,this.Height/4), + new Point(this.Width-1,this.Height-this.Height/4), + new Point(40,this.Height-this.Height/4), + new Point(40,this.Height), + new Point(0,this.Height/2) + }; + break; + case ArrowDirection.Right: + ps = new Point[] + { + new Point(0,this.Height/4), + new Point(this.Width-40,this.Height/4), + new Point(this.Width-40,0), + new Point(this.Width-1,this.Height/2), + new Point(this.Width-40,this.Height), + new Point(this.Width-40,this.Height-this.Height/4), + new Point(0,this.Height-this.Height/4), + new Point(0,this.Height/4) + }; + break; + case ArrowDirection.Top: + ps = new Point[] + { + new Point(this.Width/2,0), + new Point(this.Width,40), + new Point(this.Width-this.Width/4,40), + new Point(this.Width-this.Width/4,this.Height-1), + new Point(this.Width/4,this.Height-1), + new Point(this.Width/4,40), + new Point(0,40), + new Point(this.Width/2,0), + }; + break; + case ArrowDirection.Bottom: + ps = new Point[] + { + new Point(this.Width-this.Width/4,0), + new Point(this.Width-this.Width/4,this.Height-40), + new Point(this.Width,this.Height-40), + new Point(this.Width/2,this.Height-1), + new Point(0,this.Height-40), + new Point(this.Width/4,this.Height-40), + new Point(this.Width/4,0), + new Point(this.Width-this.Width/4,0), + }; + break; + case ArrowDirection.Left_Right: + ps = new Point[] + { + new Point(0,this.Height/2), + new Point(40,0), + new Point(40,this.Height/4), + new Point(this.Width-40,this.Height/4), + new Point(this.Width-40,0), + new Point(this.Width-1,this.Height/2), + new Point(this.Width-40,this.Height), + new Point(this.Width-40,this.Height-this.Height/4), + new Point(40,this.Height-this.Height/4), + new Point(40,this.Height), + new Point(0,this.Height/2), + }; + break; + case ArrowDirection.Top_Bottom: + ps = new Point[] + { + new Point(this.Width/2,0), + new Point(this.Width,40), + new Point(this.Width-this.Width/4,40), + new Point(this.Width-this.Width/4,this.Height-40), + new Point(this.Width,this.Height-40), + new Point(this.Width/2,this.Height-1), + new Point(0,this.Height-40), + new Point(this.Width/4,this.Height-40), + new Point(this.Width/4,40), + new Point(0,40), + new Point(this.Width/2,0), + }; + break; + } + m_path = new GraphicsPath(); + m_path.AddLines(ps); + m_path.CloseAllFigures(); + } + + /// + /// 引发 事件。 + /// + /// 包含事件数据的 。 + protected override void OnPaint(PaintEventArgs e) + { + base.OnPaint(e); + var g = e.Graphics; + g.SetGDIHigh(); + base.Region = new Region(m_path); + + g.FillPath(new SolidBrush(arrowColor), m_path); + + if (borderColor != null && borderColor != Color.Empty) + g.DrawPath(new Pen(new SolidBrush(borderColor.Value)), m_path); + if (!string.IsNullOrEmpty(text)) + { + var size = g.MeasureString(Text, Font); + g.DrawString(Text, Font, new SolidBrush(ForeColor), new PointF((this.Width - size.Width) / 2, (this.Height - size.Height) / 2)); + } + } + } + + /// + /// Enum ArrowDirection + /// + public enum ArrowDirection + { + /// + /// The left + /// + Left, + /// + /// The right + /// + Right, + /// + /// The top + /// + Top, + /// + /// The bottom + /// + Bottom, + /// + /// The left right + /// + Left_Right, + /// + /// The top bottom + /// + Top_Bottom + } +} diff --git a/UsingControl/HZHControls/Controls/FactoryControls/Blower/UCBlower.cs b/UsingControl/HZHControls/Controls/FactoryControls/Blower/UCBlower.cs new file mode 100644 index 0000000..53c4713 --- /dev/null +++ b/UsingControl/HZHControls/Controls/FactoryControls/Blower/UCBlower.cs @@ -0,0 +1,298 @@ +// *********************************************************************** +// Assembly : HZH_Controls +// Created : 2019-09-09 +// +// *********************************************************************** +// +// Copyright by Huang Zhenghui(黄正辉) All, QQ group:568015492 QQ:623128629 Email:623128629@qq.com +// +// +// Blog: https://www.cnblogs.com/bfyx +// GitHub:https://github.com/kwwwvagaa/NetWinformControl +// gitee:https://gitee.com/kwwwvagaa/net_winform_custom_control.git +// +// If you use this code, please keep this note. +// *********************************************************************** +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using System.Drawing; +using System.Drawing.Drawing2D; +using System.ComponentModel; + +namespace HZH_Controls.Controls +{ + /// + /// Class UCBlower. + /// Implements the + /// + /// + public class UCBlower : UserControl + { + /// + /// The entrance direction + /// + private BlowerEntranceDirection entranceDirection = BlowerEntranceDirection.None; + + /// + /// Gets or sets the entrance direction. + /// + /// The entrance direction. + [Description("入口方向"), Category("自定义")] + public BlowerEntranceDirection EntranceDirection + { + get { return entranceDirection; } + set + { + entranceDirection = value; + Refresh(); + } + } + + /// + /// The exit direction + /// + private BlowerExitDirection exitDirection = BlowerExitDirection.Right; + + /// + /// Gets or sets the exit direction. + /// + /// The exit direction. + [Description("出口方向"), Category("自定义")] + public BlowerExitDirection ExitDirection + { + get { return exitDirection; } + set + { + exitDirection = value; + Refresh(); + } + } + + /// + /// The blower color + /// + private Color blowerColor = Color.FromArgb(255, 77, 59); + + /// + /// Gets or sets the color of the blower. + /// + /// The color of the blower. + [Description("风机颜色"), Category("自定义")] + public Color BlowerColor + { + get { return blowerColor; } + set + { + blowerColor = value; + Refresh(); + } + } + + /// + /// The fan color + /// + private Color fanColor = Color.FromArgb(3, 169, 243); + + /// + /// Gets or sets the color of the fan. + /// + /// The color of the fan. + [Description("风叶颜色"), Category("自定义")] + public Color FanColor + { + get { return fanColor; } + set + { + fanColor = value; + Refresh(); + } + } + + /// + /// The m rect working + /// + Rectangle m_rectWorking; + + /// + /// Initializes a new instance of the class. + /// + public UCBlower() + { + this.SetStyle(ControlStyles.AllPaintingInWmPaint, true); + this.SetStyle(ControlStyles.DoubleBuffer, true); + this.SetStyle(ControlStyles.ResizeRedraw, true); + this.SetStyle(ControlStyles.Selectable, true); + this.SetStyle(ControlStyles.SupportsTransparentBackColor, true); + this.SetStyle(ControlStyles.UserPaint, true); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; + this.SizeChanged += UCBlower_SizeChanged; + this.Size = new Size(120, 120); + + } + + /// + /// Handles the SizeChanged event of the UCBlower control. + /// + /// The source of the event. + /// The instance containing the event data. + void UCBlower_SizeChanged(object sender, EventArgs e) + { + int intMin = Math.Min(this.Width, this.Height); + m_rectWorking = new Rectangle((this.Width - (intMin / 3 * 2)) / 2, (this.Height - (intMin / 3 * 2)) / 2, (intMin / 3 * 2), (intMin / 3 * 2)); + } + + /// + /// 引发 事件。 + /// + /// 包含事件数据的 。 + protected override void OnPaint(PaintEventArgs e) + { + base.OnPaint(e); + var g = e.Graphics; + g.SetGDIHigh(); + GraphicsPath pathLineIn = new GraphicsPath(); + GraphicsPath pathLineOut = new GraphicsPath(); + int intLinePenWidth = 0; + + switch (exitDirection) + { + case BlowerExitDirection.Left: + g.FillRectangle(new SolidBrush(blowerColor), new Rectangle(0, m_rectWorking.Top, this.Width / 2, m_rectWorking.Height / 2 - 5)); + intLinePenWidth = m_rectWorking.Height / 2 - 5; + pathLineOut.AddLine(new Point(-10, m_rectWorking.Top + (m_rectWorking.Height / 2 - 5) / 2), new Point(m_rectWorking.Left + m_rectWorking.Width / 2, m_rectWorking.Top + (m_rectWorking.Height / 2 - 5) / 2)); + g.DrawLine(new Pen(new SolidBrush(blowerColor), 3), new Point(1, m_rectWorking.Top - 2), new Point(1, m_rectWorking.Top + (m_rectWorking.Height / 2 - 5) + 2)); + break; + case BlowerExitDirection.Right: + g.FillRectangle(new SolidBrush(blowerColor), new Rectangle(this.Width / 2, m_rectWorking.Top, this.Width / 2, m_rectWorking.Height / 2 - 5)); + intLinePenWidth = m_rectWorking.Height / 2 - 5; + pathLineOut.AddLine(new Point(this.Width + 10, m_rectWorking.Top + (m_rectWorking.Height / 2 - 5) / 2), new Point(m_rectWorking.Left + m_rectWorking.Width / 2, m_rectWorking.Top + (m_rectWorking.Height / 2 - 5) / 2)); + g.DrawLine(new Pen(new SolidBrush(blowerColor), 3), new Point(this.Width - 2, m_rectWorking.Top - 2), new Point(this.Width - 2, m_rectWorking.Top + (m_rectWorking.Height / 2 - 5) + 2)); + break; + case BlowerExitDirection.Up: + g.FillRectangle(new SolidBrush(blowerColor), new Rectangle(m_rectWorking.Right - (m_rectWorking.Width / 2 - 5), 0, m_rectWorking.Width / 2 - 5, this.Height / 2)); + intLinePenWidth = m_rectWorking.Width / 2 - 5; + pathLineOut.AddLine(new Point(m_rectWorking.Right - (m_rectWorking.Width / 2 - 5) / 2, -10), new Point(m_rectWorking.Right - (m_rectWorking.Width / 2 - 5) / 2, m_rectWorking.Top + m_rectWorking.Height / 2)); + g.DrawLine(new Pen(new SolidBrush(blowerColor), 3), new Point(m_rectWorking.Right + 2, 1), new Point(m_rectWorking.Right - (m_rectWorking.Width / 2 - 5) - 2, 1)); + break; + } + + switch (entranceDirection) + { + case BlowerEntranceDirection.Left: + g.FillRectangle(new SolidBrush(blowerColor), new Rectangle(0, m_rectWorking.Bottom - m_rectWorking.Height / 2 + 5, this.Width / 2, m_rectWorking.Height / 2 - 5)); + pathLineIn.AddLine(new Point(-10, m_rectWorking.Bottom - m_rectWorking.Height / 2 + 5 + (m_rectWorking.Height / 2 - 5) / 2), new Point(m_rectWorking.Left + m_rectWorking.Width / 2, m_rectWorking.Bottom - m_rectWorking.Height / 2 + 5 + (m_rectWorking.Height / 2 - 5) / 2)); + g.DrawLine(new Pen(new SolidBrush(blowerColor), 3), new Point(1, m_rectWorking.Bottom - m_rectWorking.Height / 2 + 5 - 2), new Point(1, m_rectWorking.Bottom - m_rectWorking.Height / 2 + 5 + (m_rectWorking.Height / 2 - 5) + 2)); + break; + case BlowerEntranceDirection.Right: + g.FillRectangle(new SolidBrush(blowerColor), new Rectangle(this.Width / 2, m_rectWorking.Bottom - m_rectWorking.Height / 2 + 5, this.Width / 2, m_rectWorking.Height / 2 - 5)); + pathLineIn.AddLine(new Point(this.Width + 10, m_rectWorking.Bottom - m_rectWorking.Height / 2 + 5 + (m_rectWorking.Height / 2 - 5) / 2), new Point(m_rectWorking.Left + m_rectWorking.Width / 2, m_rectWorking.Bottom - m_rectWorking.Height / 2 + 5 + (m_rectWorking.Height / 2 - 5) / 2)); + g.DrawLine(new Pen(new SolidBrush(blowerColor), 3), new Point(this.Width - 2, m_rectWorking.Bottom - m_rectWorking.Height / 2 + 5 - 2), new Point(this.Width - 2, m_rectWorking.Bottom - m_rectWorking.Height / 2 + 5 + (m_rectWorking.Height / 2 - 5) + 2)); + break; + case BlowerEntranceDirection.Up: + g.FillRectangle(new SolidBrush(blowerColor), new Rectangle(m_rectWorking.Left, 0, m_rectWorking.Width / 2 - 5, this.Height / 2)); + pathLineIn.AddLine(new Point(m_rectWorking.Left + (m_rectWorking.Width / 2 - 5) / 2, -10), new Point(m_rectWorking.Left + (m_rectWorking.Width / 2 - 5) / 2, m_rectWorking.Top + m_rectWorking.Height / 2)); + g.DrawLine(new Pen(new SolidBrush(blowerColor), 3), new Point(m_rectWorking.Left - 2, 1), new Point(m_rectWorking.Left + (m_rectWorking.Width / 2 - 5) + 2, 1)); + break; + } + + //渐变色 + int _intPenWidth = intLinePenWidth; + int intCount = _intPenWidth / 2 / 4; + for (int i = 0; i < intCount; i++) + { + int _penWidth = _intPenWidth / 2 - 4 * i; + if (_penWidth <= 0) + _penWidth = 1; + if (entranceDirection != BlowerEntranceDirection.None) + g.DrawPath(new Pen(new SolidBrush(Color.FromArgb(40, Color.White.R, Color.White.G, Color.White.B)), _penWidth), pathLineIn); + g.DrawPath(new Pen(new SolidBrush(Color.FromArgb(40, Color.White.R, Color.White.G, Color.White.B)), _penWidth), pathLineOut); + if (_penWidth == 1) + break; + } + + //底座 + GraphicsPath gpDZ = new GraphicsPath(); + gpDZ.AddLines(new Point[] + { + new Point( m_rectWorking.Left+m_rectWorking.Width/2,m_rectWorking.Top+m_rectWorking.Height/2), + new Point(m_rectWorking.Left+2,this.Height), + new Point(m_rectWorking.Right-2,this.Height) + }); + gpDZ.CloseAllFigures(); + g.FillPath(new SolidBrush(blowerColor), gpDZ); + g.FillPath(new SolidBrush(Color.FromArgb(50, Color.White)), gpDZ); + g.DrawLine(new Pen(new SolidBrush(blowerColor), 3), new Point(m_rectWorking.Left, this.Height - 2), new Point(m_rectWorking.Right, this.Height - 2)); + + //中心 + g.FillEllipse(new SolidBrush(blowerColor), m_rectWorking); + g.FillEllipse(new SolidBrush(Color.FromArgb(20, Color.White)), m_rectWorking); + + + //扇叶 + Rectangle _rect = new Rectangle(m_rectWorking.Left + (m_rectWorking.Width - (m_rectWorking.Width / 3 * 2)) / 2, m_rectWorking.Top + (m_rectWorking.Height - (m_rectWorking.Width / 3 * 2)) / 2, (m_rectWorking.Width / 3 * 2), (m_rectWorking.Width / 3 * 2)); + + int _splitCount = 8; + float fltSplitValue = 360F / (float)_splitCount; + for (int i = 0; i <= _splitCount; i++) + { + float fltAngle = (fltSplitValue * i - 180) % 360; + float fltY1 = (float)(_rect.Top + _rect.Width / 2 - ((_rect.Width / 2) * Math.Sin(Math.PI * (fltAngle / 180.00F)))); + float fltX1 = (float)(_rect.Left + (_rect.Width / 2 - ((_rect.Width / 2) * Math.Cos(Math.PI * (fltAngle / 180.00F))))); + float fltY2 = 0; + float fltX2 = 0; + + fltY2 = (float)(_rect.Top + _rect.Width / 2 - ((_rect.Width / 4) * Math.Sin(Math.PI * (fltAngle / 180.00F)))); + fltX2 = (float)(_rect.Left + (_rect.Width / 2 - ((_rect.Width / 4) * Math.Cos(Math.PI * (fltAngle / 180.00F))))); + + g.DrawLine(new Pen(new SolidBrush(fanColor), 2), new PointF(fltX1, fltY1), new PointF(fltX2, fltY2)); + } + + g.FillEllipse(new SolidBrush(fanColor), new Rectangle(_rect.Left + _rect.Width / 2 - _rect.Width / 4 + 2, _rect.Top + _rect.Width / 2 - _rect.Width / 4 + 2, _rect.Width / 2 - 4, _rect.Width / 2 - 4)); + g.FillEllipse(new SolidBrush(Color.FromArgb(50, Color.White)), new Rectangle(_rect.Left - 5, _rect.Top - 5, _rect.Width + 10, _rect.Height + 10)); + } + } + /// + /// Enum BlowerEntranceDirection + /// + public enum BlowerEntranceDirection + { + /// + /// The none + /// + None, + /// + /// The left + /// + Left, + /// + /// The right + /// + Right, + /// + /// Up + /// + Up + } + + /// + /// Enum BlowerExitDirection + /// + public enum BlowerExitDirection + { + /// + /// The left + /// + Left, + /// + /// The right + /// + Right, + /// + /// Up + /// + Up + } +} diff --git a/UsingControl/HZHControls/Controls/FactoryControls/Bottle/UCBottle.cs b/UsingControl/HZHControls/Controls/FactoryControls/Bottle/UCBottle.cs new file mode 100644 index 0000000..c616df3 --- /dev/null +++ b/UsingControl/HZHControls/Controls/FactoryControls/Bottle/UCBottle.cs @@ -0,0 +1,368 @@ +// *********************************************************************** +// Assembly : HZH_Controls +// Created : 2019-09-05 +// +// *********************************************************************** +// +// Copyright by Huang Zhenghui(黄正辉) All, QQ group:568015492 QQ:623128629 Email:623128629@qq.com +// +// +// Blog: https://www.cnblogs.com/bfyx +// GitHub:https://github.com/kwwwvagaa/NetWinformControl +// gitee:https://gitee.com/kwwwvagaa/net_winform_custom_control.git +// +// If you use this code, please keep this note. +// *********************************************************************** +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using System.Drawing; +using System.Drawing.Drawing2D; +using System.ComponentModel; + +namespace HZH_Controls.Controls +{ + /// + /// Class UCBottle. + /// Implements the + /// + /// + public class UCBottle : UserControl + { + //瓶身区域 + /// + /// The m working rect + /// + Rectangle m_workingRect; + + /// + /// The title + /// + string title = "瓶子1"; + + /// + /// Gets or sets the title. + /// + /// The title. + [Description("标题"), Category("自定义")] + public string Title + { + get { return title; } + set + { + title = value; + ResetWorkingRect(); + Refresh(); + } + } + + /// + /// The bottle color + /// + private Color bottleColor = Color.FromArgb(255, 77, 59); + + /// + /// Gets or sets the color of the bottle. + /// + /// The color of the bottle. + [Description("瓶子颜色"), Category("自定义")] + public Color BottleColor + { + get { return bottleColor; } + set + { + bottleColor = value; + Refresh(); + } + } + + /// + /// The bottle mouth color + /// + private Color bottleMouthColor = Color.FromArgb(105, 105, 105); + + /// + /// Gets or sets the color of the bottle mouth. + /// + /// The color of the bottle mouth. + [Description("瓶口颜色"), Category("自定义")] + public Color BottleMouthColor + { + get { return bottleMouthColor; } + set { bottleMouthColor = value; } + } + + /// + /// The liquid color + /// + private Color liquidColor = Color.FromArgb(3, 169, 243); + + /// + /// Gets or sets the color of the liquid. + /// + /// The color of the liquid. + [Description("液体颜色"), Category("自定义")] + public Color LiquidColor + { + get { return liquidColor; } + set + { + liquidColor = value; + Refresh(); + } + } + + + /// + /// 获取或设置控件显示的文字的字体。 + /// + /// The font. + /// + /// + /// + /// + /// + /// + [Description("文字字体"), Category("自定义")] + public override Font Font + { + get + { + return base.Font; + } + set + { + base.Font = value; + ResetWorkingRect(); + Refresh(); + } + } + + /// + /// 获取或设置控件的前景色。 + /// + /// The color of the fore. + /// + /// + /// + [Description("文字颜色"), Category("自定义")] + public override System.Drawing.Color ForeColor + { + get + { + return base.ForeColor; + } + set + { + base.ForeColor = value; + Refresh(); + } + } + + /// + /// The maximum value + /// + private decimal maxValue = 100; + + /// + /// Gets or sets the maximum value. + /// + /// The maximum value. + [Description("最大值"), Category("自定义")] + public decimal MaxValue + { + get { return maxValue; } + set + { + if (value < m_value) + return; + maxValue = value; + Refresh(); + } + } + + /// + /// The m value + /// + private decimal m_value = 50; + + /// + /// Gets or sets the value. + /// + /// The value. + [Description("值"), Category("自定义")] + public decimal Value + { + get { return m_value; } + set + { + if (value <= 0 || value > maxValue) + return; + m_value = value; + Refresh(); + } + } + + /// + /// The m no + /// + private string m_NO; + /// + /// Gets or sets the NO. + /// + /// The no. + [Description("编号"), Category("自定义")] + public string NO + { + get { return m_NO; } + set + { + m_NO = value; + Refresh(); + } + } + + /// + /// Initializes a new instance of the class. + /// + public UCBottle() + { + this.SetStyle(ControlStyles.AllPaintingInWmPaint, true); + this.SetStyle(ControlStyles.DoubleBuffer, true); + this.SetStyle(ControlStyles.ResizeRedraw, true); + this.SetStyle(ControlStyles.Selectable, true); + this.SetStyle(ControlStyles.SupportsTransparentBackColor, true); + this.SetStyle(ControlStyles.UserPaint, true); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; + this.SizeChanged += UCBottle_SizeChanged; + this.Size = new Size(100, 150); + } + + /// + /// Handles the SizeChanged event of the UCBottle control. + /// + /// The source of the event. + /// The instance containing the event data. + void UCBottle_SizeChanged(object sender, EventArgs e) + { + ResetWorkingRect(); + } + + /// + /// Resets the working rect. + /// + private void ResetWorkingRect() + { + var g = this.CreateGraphics(); + var size = g.MeasureString(title, Font); + m_workingRect = new Rectangle(0, (int)size.Height + 10, this.Width, this.Height - ((int)size.Height + 10) - 15); + } + + /// + /// 引发 事件。 + /// + /// 包含事件数据的 。 + protected override void OnPaint(PaintEventArgs e) + { + base.OnPaint(e); + var g = e.Graphics; + g.SetGDIHigh(); + //写文字 + var size = g.MeasureString(title, Font); + g.DrawString(title, Font, new SolidBrush(ForeColor), new PointF((this.Width - size.Width) / 2, 2)); + + //画空瓶子 + GraphicsPath pathPS = new GraphicsPath(); + Point[] psPS = new Point[] + { + new Point(m_workingRect.Left, m_workingRect.Top), + new Point(m_workingRect.Right - 1, m_workingRect.Top), + new Point(m_workingRect.Right - 1, m_workingRect.Bottom - 15), + new Point(m_workingRect.Right - 1 - m_workingRect.Width / 4, m_workingRect.Bottom), + new Point(m_workingRect.Left + m_workingRect.Width / 4, m_workingRect.Bottom), + new Point(m_workingRect.Left, m_workingRect.Bottom - 15), + }; + pathPS.AddLines(psPS); + pathPS.CloseAllFigures(); + g.FillPath(new SolidBrush(bottleColor), pathPS); + //画液体 + decimal decYTHeight = (m_value / maxValue) * m_workingRect.Height; + GraphicsPath pathYT = new GraphicsPath(); + Rectangle rectYT = Rectangle.Empty; + if (decYTHeight < 15) + { + PointF[] psYT = new PointF[] + { + new PointF((float)(m_workingRect.Left+(15-decYTHeight))+3,(float)(m_workingRect.Bottom-decYTHeight)), + new PointF((float)(m_workingRect.Right-(15-decYTHeight))-3,(float)(m_workingRect.Bottom-decYTHeight)), + new PointF(m_workingRect.Right-1-m_workingRect.Width/4, m_workingRect.Bottom), + new PointF(m_workingRect.Left+m_workingRect.Width/4, m_workingRect.Bottom), + }; + pathYT.AddLines(psYT); + pathYT.CloseAllFigures(); + rectYT = new Rectangle((m_workingRect.Left + (15 - (int)decYTHeight)) + 3, m_workingRect.Bottom - (int)decYTHeight - 5, m_workingRect.Width - (int)(15 - decYTHeight) * 2 - 8, 10); + } + else + { + PointF[] psYT = new PointF[] + { + new PointF(m_workingRect.Left,(float)(m_workingRect.Bottom-decYTHeight)), + new PointF(m_workingRect.Right-1,(float)(m_workingRect.Bottom-decYTHeight)), + new PointF(m_workingRect.Right-1,m_workingRect.Bottom-15), + new PointF(m_workingRect.Right-1-m_workingRect.Width/4, m_workingRect.Bottom), + new PointF(m_workingRect.Left+m_workingRect.Width/4, m_workingRect.Bottom), + new PointF(m_workingRect.Left,m_workingRect.Bottom-15), + }; + pathYT.AddLines(psYT); + pathYT.CloseAllFigures(); + rectYT = new Rectangle(m_workingRect.Left, m_workingRect.Bottom - (int)decYTHeight - 5, m_workingRect.Width, 10); + } + + g.FillPath(new SolidBrush(liquidColor), pathYT); + g.FillPath(new SolidBrush(Color.FromArgb(50, bottleMouthColor)), pathYT); + //画液体面 + g.FillEllipse(new SolidBrush(liquidColor), rectYT); + g.FillEllipse(new SolidBrush(Color.FromArgb(50, Color.White)), rectYT); + + //画高亮 + int intCount = m_workingRect.Width / 2 / 4; + int intSplit = (255 - 100) / intCount; + for (int i = 0; i < intCount; i++) + { + int _penWidth = m_workingRect.Width / 2 - 4 * i; + if (_penWidth <= 0) + _penWidth = 1; + g.DrawLine(new Pen(new SolidBrush(Color.FromArgb(10, Color.White)), _penWidth), new Point(m_workingRect.Width / 2, m_workingRect.Top), new Point(m_workingRect.Width / 2, m_workingRect.Bottom - 15)); + if (_penWidth == 1) + break; + } + + //画瓶底 + g.FillEllipse(new SolidBrush(bottleColor), new RectangleF(m_workingRect.Left, m_workingRect.Top - 5, m_workingRect.Width - 2, 10)); + g.FillEllipse(new SolidBrush(Color.FromArgb(50, Color.White)), new RectangleF(m_workingRect.Left, m_workingRect.Top - 5, m_workingRect.Width - 2, 10)); + //画瓶口 + g.FillRectangle(new SolidBrush(bottleMouthColor), new Rectangle(m_workingRect.Left + m_workingRect.Width / 4, m_workingRect.Bottom, m_workingRect.Width / 2, 15)); + //画瓶颈阴影 + GraphicsPath pathPJ = new GraphicsPath(); + Point[] psPJ = new Point[] + { + new Point(m_workingRect.Left, m_workingRect.Bottom-15), + new Point(m_workingRect.Right-1, m_workingRect.Bottom-15), + new Point(m_workingRect.Right-1-m_workingRect.Width/4, m_workingRect.Bottom), + new Point(m_workingRect.Left+m_workingRect.Width/4, m_workingRect.Bottom) + }; + pathPJ.AddLines(psPJ); + pathPJ.CloseAllFigures(); + g.FillPath(new SolidBrush(Color.FromArgb(50, bottleMouthColor)), pathPJ); + + //写编号 + if (!string.IsNullOrEmpty(m_NO)) + { + var nosize = g.MeasureString(m_NO, Font); + g.DrawString(m_NO, Font, new SolidBrush(ForeColor), new PointF((this.Width - nosize.Width) / 2, m_workingRect.Top + 10)); + } + } + } +} diff --git a/UsingControl/HZHControls/Controls/FactoryControls/Conduit/UCConduit.cs b/UsingControl/HZHControls/Controls/FactoryControls/Conduit/UCConduit.cs new file mode 100644 index 0000000..50b241e --- /dev/null +++ b/UsingControl/HZHControls/Controls/FactoryControls/Conduit/UCConduit.cs @@ -0,0 +1,803 @@ +// *********************************************************************** +// Assembly : HZH_Controls +// Created : 2019-09-04 +// +// *********************************************************************** +// +// Copyright by Huang Zhenghui(黄正辉) All, QQ group:568015492 QQ:623128629 Email:623128629@qq.com +// +// +// Blog: https://www.cnblogs.com/bfyx +// GitHub:https://github.com/kwwwvagaa/NetWinformControl +// gitee:https://gitee.com/kwwwvagaa/net_winform_custom_control.git +// +// If you use this code, please keep this note. +// *********************************************************************** +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using System.Drawing; +using System.Drawing.Drawing2D; +using System.ComponentModel; + +namespace HZH_Controls.Controls +{ + /// + /// Class UCConduit. + /// Implements the + /// + /// + public class UCConduit : UserControl + { + /// + /// The conduit style + /// + private ConduitStyle conduitStyle = ConduitStyle.Horizontal_None_None; + + /// + /// Gets or sets the conduit style. + /// + /// The conduit style. + [Description("样式"), Category("自定义")] + public ConduitStyle ConduitStyle + { + get { return conduitStyle; } + set + { + string strOld = conduitStyle.ToString().Substring(0, 1); + string strNew = value.ToString().Substring(0, 1); + conduitStyle = value; + if (strOld != strNew) + { + this.Size = new Size(this.Size.Height, this.Size.Width); + } + Refresh(); + } + } + + /// + /// The conduit color + /// + private Color conduitColor = Color.FromArgb(255, 77, 59); + [Description("颜色"), Category("自定义")] + /// + /// Gets or sets the color of the conduit. + /// + /// The color of the conduit. + public Color ConduitColor + { + get { return conduitColor; } + set + { + conduitColor = value; + Refresh(); + } + } + + /// + /// The liquid color + /// + private Color liquidColor = Color.FromArgb(3, 169, 243); + + /// + /// Gets or sets the color of the liquid. + /// + /// The color of the liquid. + [Description("液体颜色"), Category("自定义")] + public Color LiquidColor + { + get { return liquidColor; } + set + { + liquidColor = value; + if (liquidDirection != LiquidDirection.None) + Refresh(); + } + } + + /// + /// The liquid direction + /// + private LiquidDirection liquidDirection = LiquidDirection.Forward; + + /// + /// Gets or sets the liquid direction. + /// + /// The liquid direction. + [Description("液体流动方向"), Category("自定义")] + public LiquidDirection LiquidDirection + { + get { return liquidDirection; } + set + { + liquidDirection = value; + if (value == LiquidDirection.None) + m_timer.Enabled = false; + else + m_timer.Enabled = true; + + Refresh(); + } + } + + /// + /// The liquid speed + /// + private int liquidSpeed = 100; + + /// + /// 液体流速,越小,速度越快Gets or sets the liquid speed. + /// + /// The liquid speed. + [Description("液体流速,越小,速度越快"), Category("自定义")] + public int LiquidSpeed + { + get { return liquidSpeed; } + set + { + if (value <= 0) + return; + liquidSpeed = value; + m_timer.Interval = value; + } + } + + /// + /// The conduit width + /// + int conduitWidth = 50; + + /// + /// Gets or sets the width of the conduit. + /// + /// The width of the conduit. + [Description("管道宽度,当ConduitStyle的值是Horizontal_Tilt_Up,Horizontal_Tilt_Down,Vertical_Tilt_Left,Vertical_Tilt_Right时有效,其他时候将根据管道大小使用自动宽度"), Category("自定义")] + public int ConduitWidth + { + get { return conduitWidth; } + set + { + conduitWidth = value; + Refresh(); + } + } + + /// + /// The int pen width + /// + int intPenWidth = 0; + + /// + /// The int line left + /// + int intLineLeft = 0; + /// + /// The m timer + /// + Timer m_timer; + /// + /// Initializes a new instance of the class. + /// + public UCConduit() + { + this.SetStyle(ControlStyles.AllPaintingInWmPaint, true); + this.SetStyle(ControlStyles.DoubleBuffer, true); + this.SetStyle(ControlStyles.ResizeRedraw, true); + this.SetStyle(ControlStyles.Selectable, true); + this.SetStyle(ControlStyles.SupportsTransparentBackColor, true); + this.SetStyle(ControlStyles.UserPaint, true); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; + this.SizeChanged += UCConduit_SizeChanged; + this.Size = new Size(200, 50); + m_timer = new Timer(); + m_timer.Interval = 100; + m_timer.Tick += timer_Tick; + m_timer.Enabled = true; + } + + /// + /// Handles the Tick event of the timer control. + /// + /// The source of the event. + /// The instance containing the event data. + void timer_Tick(object sender, EventArgs e) + { + intLineLeft += 2; + if (intLineLeft > 12) + intLineLeft = 0; + Refresh(); + } + + + /// + /// Handles the SizeChanged event of the UCConduit control. + /// + /// The source of the event. + /// The instance containing the event data. + void UCConduit_SizeChanged(object sender, EventArgs e) + { + intPenWidth = conduitStyle.ToString().StartsWith("H") ? this.Height : this.Width; + } + + /// + /// 引发 事件。 + /// + /// 包含事件数据的 。 + protected override void OnPaint(PaintEventArgs e) + { + base.OnPaint(e); + Graphics g = e.Graphics; + + List lstArcs = new List(); + + GraphicsPath path = new GraphicsPath(); + GraphicsPath linePath = new GraphicsPath(); + List tileLine = new List(); + switch (conduitStyle) + { + #region H English:H + case ConduitStyle.Horizontal_None_None: + path.AddLines(new PointF[] + { + new PointF(0, 0), + new PointF(this.ClientRectangle.Right, 0), + new PointF(this.ClientRectangle.Right, this.Height), + new PointF(0, this.Height) + }); + path.CloseAllFigures(); + linePath.AddLine(0, this.Height / 2, this.Width, this.Height / 2); + break; + case ConduitStyle.Horizontal_Up_None: + path.AddLines(new PointF[] + { + new PointF(0, 0), + new PointF(this.ClientRectangle.Right, 0), + new PointF(this.ClientRectangle.Right, this.Height), + new PointF(0+intPenWidth, this.Height) + }); + path.AddArc(new Rectangle(0, intPenWidth * -1, intPenWidth * 2, intPenWidth * 2), 90, 90); + path.CloseAllFigures(); + + linePath.AddArc(new Rectangle(intPenWidth / 2 + 1, -1 * intPenWidth / 2 - 1, intPenWidth, intPenWidth), 181, -91); + linePath.AddLine(intPenWidth, this.Height / 2, this.Width, this.Height / 2); + + lstArcs.Add(new ArcEntity() { rect = new Rectangle(0, intPenWidth * -1, intPenWidth * 2, intPenWidth * 2), startAngle = 90, sweepAngle = 90 }); + break; + case ConduitStyle.Horizontal_Down_None: + path.AddLines(new PointF[] + { + new PointF(intPenWidth, 0), + new PointF(this.ClientRectangle.Right, 0), + new PointF(this.ClientRectangle.Right, this.Height), + new PointF(0, this.Height) + }); + path.AddArc(new Rectangle(0, -1, intPenWidth * 2, intPenWidth * 2), 180, 90); + path.CloseAllFigures(); + + linePath.AddArc(new Rectangle(intPenWidth / 2 + 1, this.Height / 2, intPenWidth, intPenWidth), 179, 91); + linePath.AddLine(intPenWidth + 1, this.Height / 2, this.Width, this.Height / 2); + + lstArcs.Add(new ArcEntity() { rect = new Rectangle(0, -1, intPenWidth * 2, intPenWidth * 2), startAngle = 180, sweepAngle = 90 }); + break; + case ConduitStyle.Horizontal_None_Up: + path.AddLines(new PointF[] + { + new PointF(this.ClientRectangle.Right-intPenWidth, this.Height), + new PointF(0, this.Height), + new PointF(0, 0), + new PointF(this.ClientRectangle.Right-intPenWidth, 0) + }); + path.AddArc(new Rectangle(this.ClientRectangle.Right - intPenWidth * 2, intPenWidth * -1, intPenWidth * 2, intPenWidth * 2), 0, 90); + path.CloseAllFigures(); + + linePath.AddLine(0, this.Height / 2, this.Width - intPenWidth, this.Height / 2); + linePath.AddArc(new Rectangle(this.ClientRectangle.Right - intPenWidth - intPenWidth / 2 - 1, -1 * intPenWidth / 2 - 1, intPenWidth, intPenWidth), 91, -91); + + lstArcs.Add(new ArcEntity() { rect = new Rectangle(this.ClientRectangle.Right - intPenWidth * 2, intPenWidth * -1, intPenWidth * 2, intPenWidth * 2), startAngle = 0, sweepAngle = 90 }); + break; + case ConduitStyle.Horizontal_None_Down: + path.AddLines(new PointF[] + { + new PointF(this.ClientRectangle.Right, this.Height), + new PointF(0, this.Height), + new PointF(0, 0), + new PointF(this.ClientRectangle.Right-intPenWidth, 0) + }); + path.AddArc(new Rectangle(this.ClientRectangle.Right - intPenWidth * 2, -1, intPenWidth * 2, intPenWidth * 2), 270, 90); + path.CloseAllFigures(); + + linePath.AddLine(0, this.Height / 2, this.Width - intPenWidth - 1, this.Height / 2); + linePath.AddArc(new Rectangle(this.ClientRectangle.Right - intPenWidth - intPenWidth / 2 - 1, intPenWidth / 2, intPenWidth, intPenWidth), 269, 91); + + lstArcs.Add(new ArcEntity() { rect = new Rectangle(this.ClientRectangle.Right - intPenWidth * 2, -1, intPenWidth * 2, intPenWidth * 2), startAngle = 270, sweepAngle = 90 }); + break; + case ConduitStyle.Horizontal_Down_Up: + path.AddLine(new Point(intPenWidth, 0), new Point(this.Width, 0)); + path.AddArc(new Rectangle(this.ClientRectangle.Right - intPenWidth * 2, intPenWidth * -1, intPenWidth * 2, intPenWidth * 2), 0, 90); + path.AddLine(new Point(this.Width - intPenWidth, this.Height), new Point(0, this.Height)); + path.AddArc(new Rectangle(0, -1, intPenWidth * 2, intPenWidth * 2), 180, 90); + path.CloseAllFigures(); + + linePath.AddArc(new Rectangle(intPenWidth / 2 + 1, this.Height / 2, intPenWidth, intPenWidth), 179, 91); + //linePath.AddLine(intPenWidth, this.Height / 2, this.Width - intPenWidth, this.Height / 2); + linePath.AddArc(new Rectangle(this.ClientRectangle.Right - intPenWidth - intPenWidth / 2 - 1, -1 * intPenWidth / 2 - 1, intPenWidth, intPenWidth), 91, -91); + + lstArcs.Add(new ArcEntity() { rect = new Rectangle(0, -1, intPenWidth * 2, intPenWidth * 2), startAngle = 180, sweepAngle = 90 }); + lstArcs.Add(new ArcEntity() { rect = new Rectangle(this.ClientRectangle.Right - intPenWidth * 2, intPenWidth * -1, intPenWidth * 2, intPenWidth * 2), startAngle = 0, sweepAngle = 90 }); + break; + case ConduitStyle.Horizontal_Up_Down: + path.AddLine(new Point(0, 0), new Point(this.Width - intPenWidth, 0)); + path.AddArc(new Rectangle(this.ClientRectangle.Right - intPenWidth * 2, -1, intPenWidth * 2, intPenWidth * 2), 270, 90); + path.AddLine(new Point(this.Width, this.Height), new Point(intPenWidth, this.Height)); + path.AddArc(new Rectangle(0, intPenWidth * -1, intPenWidth * 2, intPenWidth * 2), 90, 90); + path.CloseAllFigures(); + + linePath.AddArc(new Rectangle(intPenWidth / 2 + 1, -1 * intPenWidth / 2 - 1, intPenWidth, intPenWidth), 181, -91); + linePath.AddLine(intPenWidth, this.Height / 2, this.Width - intPenWidth - 1, this.Height / 2); + linePath.AddArc(new Rectangle(this.ClientRectangle.Right - intPenWidth - intPenWidth / 2 - 1, intPenWidth / 2, intPenWidth, intPenWidth), 269, 91); + + lstArcs.Add(new ArcEntity() { rect = new Rectangle(0, intPenWidth * -1, intPenWidth * 2, intPenWidth * 2), startAngle = 90, sweepAngle = 90 }); + lstArcs.Add(new ArcEntity() { rect = new Rectangle(this.ClientRectangle.Right - intPenWidth * 2, -1, intPenWidth * 2, intPenWidth * 2), startAngle = 270, sweepAngle = 90 }); + break; + case ConduitStyle.Horizontal_Up_Up: + path.AddLine(new Point(0, 0), new Point(this.Width, 0)); + path.AddArc(new Rectangle(this.ClientRectangle.Right - intPenWidth * 2, intPenWidth * -1, intPenWidth * 2, intPenWidth * 2), 0, 90); + path.AddLine(new Point(this.Width - intPenWidth, this.Height), new Point(intPenWidth, this.Height)); + path.AddArc(new Rectangle(0, intPenWidth * -1, intPenWidth * 2, intPenWidth * 2), 90, 90); + path.CloseAllFigures(); + + linePath.AddArc(new Rectangle(intPenWidth / 2 + 1, -1 * intPenWidth / 2 - 1, intPenWidth, intPenWidth), 181, -91); + //linePath.AddLine(intPenWidth, this.Height / 2, this.Width - intPenWidth, this.Height / 2); + linePath.AddArc(new Rectangle(this.ClientRectangle.Right - intPenWidth - intPenWidth / 2 - 1, -1 * intPenWidth / 2 - 1, intPenWidth, intPenWidth), 91, -91); + + lstArcs.Add(new ArcEntity() { rect = new Rectangle(0, intPenWidth * -1, intPenWidth * 2, intPenWidth * 2), startAngle = 90, sweepAngle = 90 }); + lstArcs.Add(new ArcEntity() { rect = new Rectangle(this.ClientRectangle.Right - intPenWidth * 2, intPenWidth * -1, intPenWidth * 2, intPenWidth * 2), startAngle = 0, sweepAngle = 90 }); + break; + case ConduitStyle.Horizontal_Down_Down: + path.AddLine(new Point(intPenWidth, 0), new Point(this.Width - intPenWidth, 0)); + path.AddArc(new Rectangle(this.ClientRectangle.Right - intPenWidth * 2, -1, intPenWidth * 2, intPenWidth * 2), 270, 90); + path.AddLine(new Point(this.Width, this.Height), new Point(0, this.Height)); + path.AddArc(new Rectangle(0, -1, intPenWidth * 2, intPenWidth * 2), 180, 90); + path.CloseAllFigures(); + + linePath.AddArc(new Rectangle(intPenWidth / 2 + 1, this.Height / 2, intPenWidth, intPenWidth), 179, 91); + linePath.AddLine(intPenWidth + 1, this.Height / 2, this.Width - intPenWidth - 1, this.Height / 2); + linePath.AddArc(new Rectangle(this.ClientRectangle.Right - intPenWidth - intPenWidth / 2 - 1, intPenWidth / 2, intPenWidth, intPenWidth), 269, 91); + + lstArcs.Add(new ArcEntity() { rect = new Rectangle(0, -1, intPenWidth * 2, intPenWidth * 2), startAngle = 180, sweepAngle = 90 }); + lstArcs.Add(new ArcEntity() { rect = new Rectangle(this.ClientRectangle.Right - intPenWidth * 2, -1, intPenWidth * 2, intPenWidth * 2), startAngle = 270, sweepAngle = 90 }); + break; + + case ConduitStyle.Horizontal_Tilt_Up: + + double angleUp = Math.Atan((this.ClientRectangle.Height - conduitWidth) / (double)this.ClientRectangle.Width); + angleUp = angleUp / Math.PI * 180f; + path.AddArc(new Rectangle(this.ClientRectangle.Left - conduitWidth, this.ClientRectangle.Bottom - conduitWidth * 2, conduitWidth * 2, conduitWidth * 2), 90, -1 * (float)angleUp); + path.AddLine(new Point(this.ClientRectangle.Right, this.ClientRectangle.Top + conduitWidth), new Point(this.ClientRectangle.Right, this.ClientRectangle.Top)); + path.AddArc(new Rectangle(this.ClientRectangle.Right - conduitWidth, this.ClientRectangle.Top, conduitWidth * 2, conduitWidth * 2), 270, -1 * (float)angleUp); + path.AddLine(new Point(this.ClientRectangle.Left, this.ClientRectangle.Bottom - conduitWidth), new Point(this.ClientRectangle.Left, this.ClientRectangle.Bottom)); + path.CloseAllFigures(); + + + linePath.AddArc(new Rectangle(this.ClientRectangle.Right - conduitWidth / 2, this.ClientRectangle.Top + conduitWidth / 2, conduitWidth, conduitWidth), 270, -1 * (float)angleUp); + linePath.AddArc(new Rectangle(this.ClientRectangle.Left - conduitWidth / 2, this.ClientRectangle.Bottom - 1 - conduitWidth - conduitWidth / 2, conduitWidth, conduitWidth), 95 - (float)angleUp, (float)angleUp + 5); + + lstArcs.Add(new ArcEntity() { rect = new Rectangle(this.ClientRectangle.Left - conduitWidth, this.ClientRectangle.Bottom - conduitWidth * 2, conduitWidth * 2, conduitWidth * 2), startAngle = 90, sweepAngle = -1 * (float)angleUp }); + lstArcs.Add(new ArcEntity() { rect = new Rectangle(this.ClientRectangle.Right - conduitWidth, this.ClientRectangle.Top, conduitWidth * 2, conduitWidth * 2), startAngle = 270, sweepAngle = -1 * (float)angleUp }); + + tileLine.Add(new Point[] + { + new Point((int)(this.ClientRectangle.Right+1 - Math.Sin(Math.PI * (angleUp / 180.00F)) * conduitWidth),(int)( this.ClientRectangle.Top + conduitWidth - Math.Cos(Math.PI * (angleUp / 180.00F)) * conduitWidth)), + new Point(this.ClientRectangle.Left,this.ClientRectangle.Bottom-conduitWidth-1) + }); + tileLine.Add(new Point[] + { + new Point((int)(this.ClientRectangle.Left+1 + Math.Sin(Math.PI * (angleUp / 180.00F)) * conduitWidth),(int)( this.ClientRectangle.Bottom - conduitWidth + Math.Cos(Math.PI * (angleUp / 180.00F)) * conduitWidth)), + new Point(this.ClientRectangle.Right,this.ClientRectangle.Top+conduitWidth) + }); + + break; + case ConduitStyle.Horizontal_Tilt_Down: + double angleDown = Math.Atan((this.ClientRectangle.Height - conduitWidth) / (double)this.ClientRectangle.Width); + angleDown = angleDown / Math.PI * 180f; + path.AddArc(new Rectangle(this.ClientRectangle.Left - conduitWidth, this.ClientRectangle.Top, conduitWidth * 2, conduitWidth * 2), 270, (float)angleDown); + path.AddLine(new Point(this.ClientRectangle.Right, this.ClientRectangle.Bottom - conduitWidth), new Point(this.ClientRectangle.Right, this.ClientRectangle.Bottom)); + path.AddArc(new Rectangle(this.ClientRectangle.Right - conduitWidth, this.ClientRectangle.Bottom - conduitWidth * 2, conduitWidth * 2, conduitWidth * 2), 90, (float)angleDown); + path.AddLine(new Point(this.ClientRectangle.Left, this.ClientRectangle.Top + conduitWidth), new Point(this.ClientRectangle.Left, this.ClientRectangle.Top)); + path.CloseAllFigures(); + + + linePath.AddArc(new Rectangle(this.ClientRectangle.Left - conduitWidth / 2, this.ClientRectangle.Top + conduitWidth / 2, conduitWidth, conduitWidth), 265, (float)angleDown + 5); + linePath.AddArc(new Rectangle(this.ClientRectangle.Right - conduitWidth / 2, this.ClientRectangle.Bottom - conduitWidth - conduitWidth / 2 - 1, conduitWidth, conduitWidth), 90 + (float)angleDown, -1 * (float)angleDown - 5); + + lstArcs.Add(new ArcEntity() { rect = new Rectangle(this.ClientRectangle.Left - conduitWidth, this.ClientRectangle.Top, conduitWidth * 2, conduitWidth * 2), startAngle = 270, sweepAngle = (float)angleDown }); + lstArcs.Add(new ArcEntity() { rect = new Rectangle(this.ClientRectangle.Right - conduitWidth, this.ClientRectangle.Bottom - conduitWidth * 2, conduitWidth * 2, conduitWidth * 2), startAngle = 90, sweepAngle = (float)angleDown }); + + tileLine.Add(new Point[] + { + new Point((int)(this.ClientRectangle.Left + Math.Sin(Math.PI * (angleDown / 180.00F)) * conduitWidth),(int)( this.ClientRectangle.Top + conduitWidth - Math.Cos(Math.PI * (angleDown / 180.00F)) * conduitWidth)), + new Point(this.ClientRectangle.Right-1,this.ClientRectangle.Bottom-conduitWidth-1) + }); + tileLine.Add(new Point[] + { + new Point((int)(this.ClientRectangle.Right - Math.Sin(Math.PI * (angleDown / 180.00F)) * conduitWidth),(int)( this.ClientRectangle.Bottom - conduitWidth + Math.Cos(Math.PI * (angleDown / 180.00F)) * conduitWidth)), + new Point(this.ClientRectangle.Left,this.ClientRectangle.Top+conduitWidth) + }); + break; + #endregion + + #region V English:V + case ConduitStyle.Vertical_None_None: + path.AddLines(new PointF[] + { + new PointF(0, 0), + new PointF(this.ClientRectangle.Right, 0), + new PointF(this.ClientRectangle.Right, this.Height), + new PointF(0, this.Height) + }); + path.CloseAllFigures(); + linePath.AddLine(this.Width / 2, 0, this.Width / 2, this.Height); + break; + case ConduitStyle.Vertical_Left_None: + path.AddLines(new PointF[] + { + new PointF(this.ClientRectangle.Right, intPenWidth), + new PointF(this.ClientRectangle.Right, this.Height), + new PointF(0, this.Height), + new PointF(0, 0) + }); + path.AddArc(new Rectangle(-1 * intPenWidth, 0, intPenWidth * 2, intPenWidth * 2), 270, 90); + path.CloseAllFigures(); + + linePath.AddArc(new Rectangle(-1 * intPenWidth / 2 - 1, intPenWidth / 2 + 1, intPenWidth, intPenWidth), 269, 91); + linePath.AddLine(intPenWidth / 2, intPenWidth, intPenWidth / 2, this.Height); + + lstArcs.Add(new ArcEntity() { rect = new Rectangle(-1 * intPenWidth, 0, intPenWidth * 2, intPenWidth * 2), startAngle = 270, sweepAngle = 90 }); + break; + case ConduitStyle.Vertical_Right_None: + path.AddLines(new PointF[] + { + new PointF(this.ClientRectangle.Right, 0), + new PointF(this.ClientRectangle.Right, this.Height), + new PointF(0, this.Height), + new PointF(0, intPenWidth) + }); + path.AddArc(new Rectangle(-1, 0, intPenWidth * 2, intPenWidth * 2), 180, 90); + path.CloseAllFigures(); + + linePath.AddArc(new Rectangle(intPenWidth / 2, intPenWidth / 2 + 1, intPenWidth, intPenWidth), 271, -91); + linePath.AddLine(intPenWidth / 2, intPenWidth + 1, intPenWidth / 2, this.Height); + + lstArcs.Add(new ArcEntity() { rect = new Rectangle(-1, 0, intPenWidth * 2, intPenWidth * 2), startAngle = 180, sweepAngle = 90 }); + break; + case ConduitStyle.Vertical_None_Left: + path.AddLines(new PointF[] + { + new PointF(0, this.Height), + new PointF(0, 0), + new PointF(this.ClientRectangle.Right, 0), + new PointF(this.ClientRectangle.Right, this.Height-intPenWidth), + }); + path.AddArc(new Rectangle(-1 * intPenWidth, this.Height - intPenWidth * 2, intPenWidth * 2, intPenWidth * 2), 0, 90); + path.CloseAllFigures(); + + linePath.AddLine(this.Width / 2, 0, this.Width / 2, this.Height - intPenWidth); + linePath.AddArc(new Rectangle(-1 * intPenWidth / 2 - 1, this.Height - intPenWidth - intPenWidth / 2 - 1, intPenWidth, intPenWidth), -1, 91); + + lstArcs.Add(new ArcEntity() { rect = new Rectangle(-1 * intPenWidth, this.Height - intPenWidth * 2, intPenWidth * 2, intPenWidth * 2), startAngle = 0, sweepAngle = 90 }); + break; + case ConduitStyle.Vertical_None_Right: + path.AddLines(new PointF[] + { + new PointF(0, this.Height-intPenWidth), + new PointF(0, 0), + new PointF(this.ClientRectangle.Right, 0), + new PointF(this.ClientRectangle.Right, this.Height), + }); + path.AddArc(new Rectangle(-1, this.Height - intPenWidth * 2, intPenWidth * 2, intPenWidth * 2), 90, 90); + path.CloseAllFigures(); + + linePath.AddLine(this.Width / 2, 0, this.Width / 2, this.Height - intPenWidth - 1); + linePath.AddArc(new Rectangle(intPenWidth / 2, this.Height - intPenWidth - intPenWidth / 2 - 1, intPenWidth, intPenWidth), 181, -91); + + lstArcs.Add(new ArcEntity() { rect = new Rectangle(-1, this.Height - intPenWidth * 2, intPenWidth * 2, intPenWidth * 2), startAngle = 90, sweepAngle = 90 }); + break; + case ConduitStyle.Vertical_Left_Right: + path.AddLine(this.Width, intPenWidth, this.Width, this.Height); + path.AddArc(new Rectangle(-1, this.Height - intPenWidth * 2, intPenWidth * 2, intPenWidth * 2), 90, 90); + path.AddLine(0, this.Height - intPenWidth, 0, 0); + path.AddArc(new Rectangle(-1 * intPenWidth, 0, intPenWidth * 2, intPenWidth * 2), 270, 90); + path.CloseAllFigures(); + + linePath.AddArc(new Rectangle(-1 * intPenWidth / 2 - 1, intPenWidth / 2 + 1, intPenWidth, intPenWidth), 269, 91); + //linePath.AddLine(intPenWidth / 2, intPenWidth, intPenWidth / 2, this.Height - intPenWidth); + linePath.AddArc(new Rectangle(intPenWidth / 2, this.Height - intPenWidth - intPenWidth / 2 - 1, intPenWidth, intPenWidth), 181, -91); + + lstArcs.Add(new ArcEntity() { rect = new Rectangle(-1 * intPenWidth, 0, intPenWidth * 2, intPenWidth * 2), startAngle = 270, sweepAngle = 90 }); + lstArcs.Add(new ArcEntity() { rect = new Rectangle(-1, this.Height - intPenWidth * 2, intPenWidth * 2, intPenWidth * 2), startAngle = 90, sweepAngle = 90 }); + break; + case ConduitStyle.Vertical_Right_Left: + path.AddLine(this.Width, 0, this.Width, this.Height - intPenWidth); + path.AddArc(new Rectangle(-1 * intPenWidth, this.Height - intPenWidth * 2, intPenWidth * 2, intPenWidth * 2), 0, 90); + path.AddLine(0, this.Height, 0, intPenWidth); + path.AddArc(new Rectangle(-1, 0, intPenWidth * 2, intPenWidth * 2), 180, 90); + path.CloseAllFigures(); + + linePath.AddArc(new Rectangle(intPenWidth / 2, intPenWidth / 2 + 1, intPenWidth, intPenWidth), 271, -91); + //linePath.AddLine(intPenWidth / 2, intPenWidth, intPenWidth / 2, this.Height - intPenWidth); + linePath.AddArc(new Rectangle(-1 * intPenWidth / 2 - 1, this.Height - intPenWidth - intPenWidth / 2 - 1, intPenWidth, intPenWidth), -1, 91); + + lstArcs.Add(new ArcEntity() { rect = new Rectangle(-1, 0, intPenWidth * 2, intPenWidth * 2), startAngle = 180, sweepAngle = 90 }); + lstArcs.Add(new ArcEntity() { rect = new Rectangle(-1 * intPenWidth, this.Height - intPenWidth * 2, intPenWidth * 2, intPenWidth * 2), startAngle = 0, sweepAngle = 90 }); + break; + case ConduitStyle.Vertical_Left_Left: + path.AddLine(this.Width, intPenWidth, this.Width, this.Height - intPenWidth); + path.AddArc(new Rectangle(-1 * intPenWidth, this.Height - intPenWidth * 2, intPenWidth * 2, intPenWidth * 2), 0, 90); + path.AddLine(0, this.Height, 0, 0); + path.AddArc(new Rectangle(-1 * intPenWidth, 0, intPenWidth * 2, intPenWidth * 2), 270, 90); + path.CloseAllFigures(); + + linePath.AddArc(new Rectangle(-1 * intPenWidth / 2 - 1, intPenWidth / 2 + 1, intPenWidth, intPenWidth), 269, 91); + //linePath.AddLine(intPenWidth / 2, intPenWidth, intPenWidth / 2, this.Height - intPenWidth); + linePath.AddArc(new Rectangle(-1 * intPenWidth / 2 - 1, this.Height - intPenWidth - intPenWidth / 2 - 1, intPenWidth, intPenWidth), -1, 91); + + lstArcs.Add(new ArcEntity() { rect = new Rectangle(-1 * intPenWidth, 0, intPenWidth * 2, intPenWidth * 2), startAngle = 270, sweepAngle = 90 }); + lstArcs.Add(new ArcEntity() { rect = new Rectangle(-1 * intPenWidth, this.Height - intPenWidth * 2, intPenWidth * 2, intPenWidth * 2), startAngle = 0, sweepAngle = 90 }); + break; + case ConduitStyle.Vertical_Right_Right: + path.AddLine(this.Width, 0, this.Width, this.Height); + path.AddArc(new Rectangle(-1, this.Height - intPenWidth * 2, intPenWidth * 2, intPenWidth * 2), 90, 90); + path.AddLine(0, this.Height - intPenWidth, 0, intPenWidth); + path.AddArc(new Rectangle(-1, 0, intPenWidth * 2, intPenWidth * 2), 180, 90); + path.CloseAllFigures(); + + linePath.AddArc(new Rectangle(intPenWidth / 2, intPenWidth / 2 + 1, intPenWidth, intPenWidth), 271, -91); + //linePath.AddLine(intPenWidth / 2, intPenWidth, intPenWidth / 2, this.Height - intPenWidth); + linePath.AddArc(new Rectangle(intPenWidth / 2, this.Height - intPenWidth - intPenWidth / 2 - 1, intPenWidth, intPenWidth), 180, -91); + + lstArcs.Add(new ArcEntity() { rect = new Rectangle(-1, 0, intPenWidth * 2, intPenWidth * 2), startAngle = 180, sweepAngle = 90 }); + lstArcs.Add(new ArcEntity() { rect = new Rectangle(-1, this.Height - intPenWidth * 2, intPenWidth * 2, intPenWidth * 2), startAngle = 90, sweepAngle = 90 }); + break; + case ConduitStyle.Vertical_Tilt_Left: + double angleLeft = Math.Atan((this.ClientRectangle.Width - conduitWidth) / (double)this.ClientRectangle.Height); + angleLeft = angleLeft / Math.PI * 180f; + path.AddArc(new Rectangle(this.ClientRectangle.Left - 1, ClientRectangle.Top - conduitWidth, conduitWidth * 2, conduitWidth * 2), 180, -1 * (float)angleLeft); + path.AddLine(new Point(this.ClientRectangle.Right - conduitWidth, this.ClientRectangle.Bottom), new Point(this.ClientRectangle.Right, this.ClientRectangle.Bottom)); + path.AddArc(new Rectangle(this.ClientRectangle.Right - conduitWidth * 2, this.ClientRectangle.Bottom - conduitWidth, conduitWidth * 2, conduitWidth * 2), 0, -1 * (float)angleLeft); + path.AddLine(new Point(this.ClientRectangle.Left + conduitWidth, this.ClientRectangle.Top), new Point(this.ClientRectangle.Left, this.ClientRectangle.Top)); + path.CloseAllFigures(); + + + linePath.AddArc(new Rectangle(this.ClientRectangle.Left + conduitWidth / 2, this.ClientRectangle.Top - conduitWidth / 2, conduitWidth, conduitWidth), 185, -1 * (float)angleLeft - 5); + linePath.AddArc(new Rectangle(this.ClientRectangle.Right - conduitWidth - conduitWidth / 2, this.ClientRectangle.Bottom - conduitWidth / 2, conduitWidth, conduitWidth), -1 * (float)angleLeft, (float)angleLeft); + + lstArcs.Add(new ArcEntity() { rect = new Rectangle(this.ClientRectangle.Left - 1, ClientRectangle.Top - conduitWidth, conduitWidth * 2, conduitWidth * 2), startAngle = 180, sweepAngle = -1 * (float)angleLeft }); + lstArcs.Add(new ArcEntity() { rect = new Rectangle(this.ClientRectangle.Right - conduitWidth * 2, this.ClientRectangle.Bottom - conduitWidth, conduitWidth * 2, conduitWidth * 2), startAngle = 0, sweepAngle = -1 * (float)angleLeft }); + + tileLine.Add(new Point[] + { + new Point((int)(this.ClientRectangle.Left + conduitWidth),this.ClientRectangle.Top), + new Point((int)(this.ClientRectangle.Right-conduitWidth+Math.Cos(Math.PI * (angleLeft / 180.00F)) * conduitWidth),(int)(this.ClientRectangle.Bottom-Math.Sin(Math.PI * (angleLeft / 180.00F)) * conduitWidth)) + }); + tileLine.Add(new Point[] + { + new Point((int)(this.ClientRectangle.Left-1+conduitWidth-Math.Cos(Math.PI * (angleLeft / 180.00F)) * conduitWidth),(int)(this.ClientRectangle.Top+Math.Sin(Math.PI * (angleLeft / 180.00F)) * conduitWidth)), + new Point(this.ClientRectangle.Right-conduitWidth,this.ClientRectangle.Bottom) + }); + break; + case ConduitStyle.Vertical_Tilt_Right: + double angleRight = Math.Atan((this.ClientRectangle.Width - conduitWidth) / (double)this.ClientRectangle.Height); + angleRight = angleRight / Math.PI * 180f; + path.AddArc(new Rectangle(this.ClientRectangle.Right - conduitWidth * 2, ClientRectangle.Top - conduitWidth, conduitWidth * 2, conduitWidth * 2), 0, (float)angleRight); + path.AddLine(new Point(this.ClientRectangle.Left + conduitWidth, this.ClientRectangle.Bottom), new Point(this.ClientRectangle.Left, this.ClientRectangle.Bottom)); + path.AddArc(new Rectangle(this.ClientRectangle.Left - 1, this.ClientRectangle.Bottom - conduitWidth, conduitWidth * 2, conduitWidth * 2), 180, (float)angleRight); + path.AddLine(new Point(this.ClientRectangle.Right - conduitWidth, this.ClientRectangle.Top), new Point(this.ClientRectangle.Right, this.ClientRectangle.Top)); + path.CloseAllFigures(); + + + linePath.AddArc(new Rectangle(this.ClientRectangle.Right - conduitWidth - conduitWidth / 2, this.ClientRectangle.Top - conduitWidth / 2, conduitWidth, conduitWidth), -5, (float)angleRight + 5); + linePath.AddArc(new Rectangle(this.ClientRectangle.Left + conduitWidth / 2, this.ClientRectangle.Bottom - conduitWidth / 2, conduitWidth, conduitWidth), 180 + (float)angleRight, -1 * (float)angleRight); + + lstArcs.Add(new ArcEntity() { rect = new Rectangle(this.ClientRectangle.Right - conduitWidth * 2, ClientRectangle.Top - conduitWidth, conduitWidth * 2, conduitWidth * 2), startAngle = 0, sweepAngle = (float)angleRight }); + lstArcs.Add(new ArcEntity() { rect = new Rectangle(this.ClientRectangle.Left - 1, this.ClientRectangle.Bottom - conduitWidth, conduitWidth * 2, conduitWidth * 2), startAngle = 180, sweepAngle = (float)angleRight }); + + tileLine.Add(new Point[] + { + new Point((int)(this.ClientRectangle.Right - conduitWidth),this.ClientRectangle.Top), + new Point((int)(this.ClientRectangle.Left + conduitWidth - Math.Cos(Math.PI * (angleRight / 180.00F)) * conduitWidth),(int)(this.ClientRectangle.Bottom-Math.Sin(Math.PI * (angleRight / 180.00F)) * conduitWidth)) + }); + tileLine.Add(new Point[] + { + new Point((int)(this.ClientRectangle.Right - conduitWidth+Math.Cos(Math.PI * (angleRight / 180.00F)) * conduitWidth),(int)(this.ClientRectangle.Top+Math.Sin(Math.PI * (angleRight / 180.00F)) * conduitWidth)), + new Point(this.ClientRectangle.Left + conduitWidth,this.ClientRectangle.Bottom) + }); + break; + #endregion + } + base.Region = new Region(path); + g.FillPath(new SolidBrush(conduitColor), path); + + //渐变色 + int _intPenWidth = intPenWidth; + if (conduitStyle.ToString().Contains("Tilt")) + { + _intPenWidth = conduitWidth; + } + int intCount = _intPenWidth / 2 / 4; + for (int i = 0; i < intCount; i++) + { + int _penWidth = _intPenWidth / 2 - 4 * i; + if (_penWidth <= 0) + _penWidth = 1; + g.DrawPath(new Pen(new SolidBrush(Color.FromArgb(40, Color.White.R, Color.White.G, Color.White.B)), _penWidth), linePath); + if (_penWidth == 1) + break; + } + + g.SetGDIHigh(); + //使用抗锯齿画圆角 + foreach (var item in lstArcs) + { + g.DrawArc(new Pen(new SolidBrush(this.BackColor)), item.rect, item.startAngle, item.sweepAngle); + } + + if (tileLine.Count > 0) + { + foreach (var item in tileLine) + { + g.DrawLine(new Pen(new SolidBrush(this.BackColor)), item[0], item[1]); + } + } + + //液体流动 + if (LiquidDirection != LiquidDirection.None) + { + Pen p = new Pen(new SolidBrush(liquidColor), 4); + p.DashPattern = new float[] { 6, 6 }; + p.DashOffset = intLineLeft * (LiquidDirection == LiquidDirection.Forward ? -1 : 1); + g.DrawPath(p, linePath); + } + } + + + /// + /// Class ArcEntity. + /// + class ArcEntity + { + /// + /// Gets or sets the rect. + /// + /// The rect. + public Rectangle rect { get; set; } + /// + /// Gets or sets the start angle. + /// + /// The start angle. + public float startAngle { get; set; } + /// + /// Gets or sets the sweep angle. + /// + /// The sweep angle. + public float sweepAngle { get; set; } + } + + } + + /// + /// Enum LiquidDirection + /// + public enum LiquidDirection + { + /// + /// The none + /// + None, + /// + /// The forward + /// + Forward, + /// + /// The backward + /// + Backward + } + + /// + /// 管道样式Enum ConduitStyle + /// + public enum ConduitStyle + { + /// + /// 直线 The horizontal none none + /// + Horizontal_None_None, + /// + /// 左上The horizontal up none + /// + Horizontal_Up_None, + /// + /// 左下The horizontal down none + /// + Horizontal_Down_None, + /// + /// 右上The horizontal none up + /// + Horizontal_None_Up, + /// + /// 右下The horizontal none down + /// + Horizontal_None_Down, + /// + /// 左下右上The horizontal down up + /// + Horizontal_Down_Up, + /// + /// 左上右下The horizontal up down + /// + Horizontal_Up_Down, + /// + /// 左上,右上The horizontal up up + /// + Horizontal_Up_Up, + /// + /// 左下右下The horizontal down down + /// + Horizontal_Down_Down, + /// + /// 向上倾斜The horizontal tilt up + /// + Horizontal_Tilt_Up, + /// + /// 向下倾斜The horizontal tilt down + /// + Horizontal_Tilt_Down, + + /// + /// 竖线The vertical none none + /// + Vertical_None_None, + /// + /// 上左The vertical left none + /// + Vertical_Left_None, + /// + /// 上右The vertical right none + /// + Vertical_Right_None, + /// + /// 下左The vertical none left + /// + Vertical_None_Left, + /// + /// 下右The vertical none right + /// + Vertical_None_Right, + /// + /// 上左下右The vertical left right + /// + Vertical_Left_Right, + /// + /// 上右下左The vertical right left + /// + Vertical_Right_Left, + /// + /// 上左下左The vertical left left + /// + Vertical_Left_Left, + /// + /// 上右下右The vertical right left + /// + Vertical_Right_Right, + /// + /// 向左倾斜The vertical tilt + /// + Vertical_Tilt_Left, + /// + /// 向右倾斜The vertical tilt right + /// + Vertical_Tilt_Right + } +} diff --git a/UsingControl/HZHControls/Controls/FactoryControls/Conveyor/UCConveyor.cs b/UsingControl/HZHControls/Controls/FactoryControls/Conveyor/UCConveyor.cs new file mode 100644 index 0000000..c31442b --- /dev/null +++ b/UsingControl/HZHControls/Controls/FactoryControls/Conveyor/UCConveyor.cs @@ -0,0 +1,295 @@ +// *********************************************************************** +// Assembly : HZH_Controls +// Created : 2019-09-05 +// +// *********************************************************************** +// +// Copyright by Huang Zhenghui(黄正辉) All, QQ group:568015492 QQ:623128629 Email:623128629@qq.com +// +// +// Blog: https://www.cnblogs.com/bfyx +// GitHub:https://github.com/kwwwvagaa/NetWinformControl +// gitee:https://gitee.com/kwwwvagaa/net_winform_custom_control.git +// +// If you use this code, please keep this note. +// *********************************************************************** +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using System.Drawing; +using System.Drawing.Drawing2D; +using System.ComponentModel; + +namespace HZH_Controls.Controls +{ + /// + /// Class UCConveyor. + /// Implements the + /// + /// + public class UCConveyor : UserControl + { + /// + /// The conveyor color + /// + private Color conveyorColor = Color.FromArgb(255, 77, 59); + + /// + /// Gets or sets the color of the conveyor. + /// + /// The color of the conveyor. + [Description("传送带颜色"), Category("自定义")] + public Color ConveyorColor + { + get { return conveyorColor; } + set + { + conveyorColor = value; + Refresh(); + } + } + + /// + /// The inclination + /// + private double inclination = 0; + + /// + /// Gets or sets the inclination. + /// + /// The inclination. + [Description("传送带角度(-90<=value<=90)"), Category("自定义")] + public double Inclination + { + get { return inclination; } + set + { + if (value > 90 || value < -90) + return; + inclination = value; + ResetWorkingRect(); + Refresh(); + } + } + + /// + /// The conveyor height + /// + private int conveyorHeight = 50; + + /// + /// Gets or sets the height of the conveyor. + /// + /// The height of the conveyor. + [Description("传送带高度"), Category("自定义")] + public int ConveyorHeight + { + get { return conveyorHeight; } + set + { + conveyorHeight = value; + ResetWorkingRect(); + Refresh(); + } + } + + /// + /// The conveyor direction + /// + private ConveyorDirection conveyorDirection = ConveyorDirection.Forward; + + /// + /// Gets or sets the conveyor direction. + /// + /// The conveyor direction. + [Description("传送带运行方向"), Category("自定义")] + public ConveyorDirection ConveyorDirection + { + get { return conveyorDirection; } + set + { + conveyorDirection = value; + if (value == HZH_Controls.Controls.ConveyorDirection.None) + { + m_timer.Enabled = false; + Refresh(); + } + else + { + m_timer.Enabled = true; + } + } + } + + /// + /// The liquid speed + /// + private int conveyorSpeed = 100; + + /// + /// 传送带运行速度,越小,速度越快Gets or sets the ConveyorSpeed. + /// + /// The liquid speed. + [Description("传送带运行速度,越小,速度越快"), Category("自定义")] + public int ConveyorSpeed + { + get { return conveyorSpeed; } + set + { + if (value <= 0) + return; + conveyorSpeed = value; + m_timer.Interval = value; + } + } + + /// + /// The m working rect + /// + Rectangle m_workingRect; + /// + /// The int line left + /// + int intLineLeft = 0; + /// + /// The m timer + /// + Timer m_timer; + /// + /// Initializes a new instance of the class. + /// + public UCConveyor() + { + this.SetStyle(ControlStyles.AllPaintingInWmPaint, true); + this.SetStyle(ControlStyles.DoubleBuffer, true); + this.SetStyle(ControlStyles.ResizeRedraw, true); + this.SetStyle(ControlStyles.Selectable, true); + this.SetStyle(ControlStyles.SupportsTransparentBackColor, true); + this.SetStyle(ControlStyles.UserPaint, true); + this.SizeChanged += UCConveyor_SizeChanged; + this.Size = new Size(300, 50); + m_timer = new Timer(); + m_timer.Interval = 100; + m_timer.Tick += timer_Tick; + m_timer.Enabled = true; + } + + /// + /// Handles the Tick event of the timer control. + /// + /// The source of the event. + /// The instance containing the event data. + void timer_Tick(object sender, EventArgs e) + { + intLineLeft += 2; + if (intLineLeft > 12) + intLineLeft = 0; + Refresh(); + } + + /// + /// Handles the SizeChanged event of the UCConveyor control. + /// + /// The source of the event. + /// The instance containing the event data. + void UCConveyor_SizeChanged(object sender, EventArgs e) + { + ResetWorkingRect(); + } + + /// + /// Resets the working rect. + /// + private void ResetWorkingRect() + { + if (inclination == 90 || inclination == -90) + { + m_workingRect = new Rectangle((this.Width - conveyorHeight) / 2, 1, conveyorHeight, this.Height - 2); + } + else if (inclination == 0) + { + m_workingRect = new Rectangle(1, (this.Height - conveyorHeight) / 2 + 1, this.Width - 2, conveyorHeight); + } + else + { + //根据角度计算需要的高度 + int intHeight = (int)(Math.Tan(Math.PI * (Math.Abs(inclination) / 180.00000)) * (this.Width)); + if (intHeight >= this.Height) + intHeight = this.Height; + + int intWidth = (int)(intHeight / (Math.Tan(Math.PI * (Math.Abs(inclination) / 180.00000)))); + intHeight += conveyorHeight; + if (intHeight >= this.Height) + intHeight = this.Height; + m_workingRect = new Rectangle((this.Width - intWidth) / 2 + 1, (this.Height - intHeight) / 2 + 1, intWidth - 2, intHeight - 2); + } + } + + /// + /// 引发 事件。 + /// + /// 包含事件数据的 。 + protected override void OnPaint(PaintEventArgs e) + { + base.OnPaint(e); + var g = e.Graphics; + g.SetGDIHigh(); + //g.FillRectangle(new SolidBrush(Color.FromArgb(100, conveyorColor)), m_workingRect); + + //轴 + //左端 + var rectLeft = new Rectangle(m_workingRect.Left + 5, (inclination >= 0 ? (m_workingRect.Bottom - conveyorHeight) : m_workingRect.Top) + 5, conveyorHeight - 10, conveyorHeight - 10); + g.FillEllipse(new SolidBrush(conveyorColor), rectLeft); + g.FillEllipse(new SolidBrush(Color.White), new Rectangle(rectLeft.Left + (rectLeft.Width - 6) / 2, rectLeft.Top + (rectLeft.Height - 6) / 2, 6, 6)); + //右端 + var rectRight = new Rectangle(m_workingRect.Right - conveyorHeight + 5, (inclination >= 0 ? (m_workingRect.Top) : (m_workingRect.Bottom - conveyorHeight)) + 5, conveyorHeight - 10, conveyorHeight - 10); + g.FillEllipse(new SolidBrush(conveyorColor), rectRight); + g.FillEllipse(new SolidBrush(Color.White), new Rectangle(rectRight.Left + (rectRight.Width - 6) / 2, rectRight.Top + (rectRight.Height - 6) / 2, 6, 6)); + + //传送带 + //左端 + GraphicsPath path = new GraphicsPath(); + GraphicsPath pathRegion = new GraphicsPath(); + path.AddArc(new Rectangle(m_workingRect.Left + 3, (inclination >= 0 ? (m_workingRect.Bottom - conveyorHeight) : m_workingRect.Top) + 3, conveyorHeight - 6, conveyorHeight - 6), 90F - (float)inclination, 180F); + pathRegion.AddArc(new Rectangle(m_workingRect.Left, (inclination >= 0 ? (m_workingRect.Bottom - conveyorHeight) : m_workingRect.Top), conveyorHeight, conveyorHeight), 90F - (float)inclination, 180F); + //右端 + path.AddArc(new Rectangle(m_workingRect.Right - conveyorHeight + 3, (inclination >= 0 ? (m_workingRect.Top) : (m_workingRect.Bottom - conveyorHeight)) + 3, conveyorHeight - 6, conveyorHeight - 6), 270 - (float)inclination, 180F); + pathRegion.AddArc(new Rectangle(m_workingRect.Right - conveyorHeight, (inclination >= 0 ? (m_workingRect.Top) : (m_workingRect.Bottom - conveyorHeight)), conveyorHeight, conveyorHeight), 270 - (float)inclination, 180F); + path.CloseAllFigures(); + + base.Region = new System.Drawing.Region(pathRegion); + + g.DrawPath(new Pen(new SolidBrush(conveyorColor), 3), path); + + //液体流动 + if (ConveyorDirection != ConveyorDirection.None) + { + Pen p = new Pen(new SolidBrush(Color.FromArgb(150, this.BackColor)), 4); + p.DashPattern = new float[] { 6, 6 }; + p.DashOffset = intLineLeft * (ConveyorDirection == ConveyorDirection.Forward ? -1 : 1); + g.DrawPath(p, path); + } + } + } + + /// + /// Enum ConveyorDirection + /// + public enum ConveyorDirection + { + /// + /// The none + /// + None, + /// + /// The forward + /// + Forward, + /// + /// The backward + /// + Backward + } +} diff --git a/UsingControl/HZHControls/Controls/FactoryControls/Lamp/UCAlarmLamp.cs b/UsingControl/HZHControls/Controls/FactoryControls/Lamp/UCAlarmLamp.cs new file mode 100644 index 0000000..edb843a --- /dev/null +++ b/UsingControl/HZHControls/Controls/FactoryControls/Lamp/UCAlarmLamp.cs @@ -0,0 +1,177 @@ +// *********************************************************************** +// Assembly : HZH_Controls +// Created : 2019-09-10 +// +// *********************************************************************** +// +// Copyright by Huang Zhenghui(黄正辉) All, QQ group:568015492 QQ:623128629 Email:623128629@qq.com +// +// +// Blog: https://www.cnblogs.com/bfyx +// GitHub:https://github.com/kwwwvagaa/NetWinformControl +// gitee:https://gitee.com/kwwwvagaa/net_winform_custom_control.git +// +// If you use this code, please keep this note. +// *********************************************************************** +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using System.Drawing; +using System.Drawing.Drawing2D; +using System.ComponentModel; + +namespace HZH_Controls.Controls +{ + /// + /// Class UCAlarmLamp. + /// Implements the + /// + /// + public class UCAlarmLamp : UserControl + { + /// + /// The lamp color + /// + private Color[] lampColor = new Color[] { Color.FromArgb(255, 77, 59) }; + + /// + /// Gets or sets the color of the lamp. + /// + /// The color of the lamp. + [Description("灯颜色,当需要闪烁时,至少需要2个及以上颜色,不需要闪烁则至少需要1个颜色"), Category("自定义")] + public Color[] LampColor + { + get { return lampColor; } + set + { + if (value == null || value.Length <= 0) + return; + lampColor = value; + Refresh(); + } + } + + /// + /// The lampstand + /// + private Color lampstand = Color.FromArgb(105, 105, 105); + + /// + /// Gets or sets the lampstand. + /// + /// The lampstand. + [Description("灯座颜色"), Category("自定义")] + public Color Lampstand + { + get { return lampstand; } + set { lampstand = value; } + } + + /// + /// The twinkle speed + /// + private int twinkleSpeed = 0; + + /// + /// Gets or sets the twinkle speed. + /// + /// The twinkle speed. + [Description("闪烁间隔时间(毫秒),当为0时不闪烁"), Category("自定义")] + public int TwinkleSpeed + { + get { return twinkleSpeed; } + set + { + if (value < 0) + return; + twinkleSpeed = value; + if (value == 0 || lampColor.Length <= 1) + { + timer.Enabled = false; + } + else + { + intColorIndex = 0; + timer.Interval = value; + timer.Enabled = true; + } + Refresh(); + } + } + /// + /// The timer + /// + Timer timer; + /// + /// The int color index + /// + int intColorIndex = 0; + /// + /// The m rect working + /// + Rectangle m_rectWorking; + /// + /// Initializes a new instance of the class. + /// + public UCAlarmLamp() + { + this.SetStyle(ControlStyles.AllPaintingInWmPaint, true); + this.SetStyle(ControlStyles.DoubleBuffer, true); + this.SetStyle(ControlStyles.ResizeRedraw, true); + this.SetStyle(ControlStyles.Selectable, true); + this.SetStyle(ControlStyles.SupportsTransparentBackColor, true); + this.SetStyle(ControlStyles.UserPaint, true); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; + this.SizeChanged += UCAlarmLamp_SizeChanged; + this.Size = new Size(50, 50); + timer = new Timer(); + timer.Interval = 200; + timer.Tick += timer_Tick; + } + + /// + /// Handles the SizeChanged event of the UCAlarmLamp control. + /// + /// The source of the event. + /// The instance containing the event data. + void UCAlarmLamp_SizeChanged(object sender, EventArgs e) + { + m_rectWorking = new Rectangle(10, 0, this.Width - 20, this.Height); + } + /// + /// Handles the Tick event of the timer control. + /// + /// The source of the event. + /// The instance containing the event data. + void timer_Tick(object sender, EventArgs e) + { + intColorIndex++; + if (intColorIndex >= lampColor.Length) + intColorIndex = 0; + Refresh(); + } + /// + /// 引发 事件。 + /// + /// 包含事件数据的 。 + protected override void OnPaint(PaintEventArgs e) + { + base.OnPaint(e); + var g = e.Graphics; + g.SetGDIHigh(); + + Color c1 = lampColor[intColorIndex]; + GraphicsPath path = new GraphicsPath(); + path.AddLine(new Point(m_rectWorking.Left, m_rectWorking.Bottom), new Point(m_rectWorking.Left, m_rectWorking.Top + m_rectWorking.Width)); + path.AddArc(new Rectangle(m_rectWorking.Left, m_rectWorking.Top, m_rectWorking.Width, m_rectWorking.Width), 180f, 180f); + path.AddLine(new Point(m_rectWorking.Right, m_rectWorking.Top + m_rectWorking.Width), new Point(m_rectWorking.Right, m_rectWorking.Bottom)); + path.CloseAllFigures(); + g.FillPath(new SolidBrush(c1), path); + + g.FillRectangle(new SolidBrush(lampstand), new Rectangle(5, m_rectWorking.Bottom - 19, this.Width - 10, 10)); + g.FillRectangle(new SolidBrush(lampstand), new Rectangle(0, m_rectWorking.Bottom - 10, this.Width, 10)); + } + } +} diff --git a/UsingControl/HZHControls/Controls/FactoryControls/Lamp/UCSignalLamp.cs b/UsingControl/HZHControls/Controls/FactoryControls/Lamp/UCSignalLamp.cs new file mode 100644 index 0000000..0fd19fe --- /dev/null +++ b/UsingControl/HZHControls/Controls/FactoryControls/Lamp/UCSignalLamp.cs @@ -0,0 +1,213 @@ +// *********************************************************************** +// Assembly : HZH_Controls +// Created : 2019-09-09 +// +// *********************************************************************** +// +// Copyright by Huang Zhenghui(黄正辉) All, QQ group:568015492 QQ:623128629 Email:623128629@qq.com +// +// +// Blog: https://www.cnblogs.com/bfyx +// GitHub:https://github.com/kwwwvagaa/NetWinformControl +// gitee:https://gitee.com/kwwwvagaa/net_winform_custom_control.git +// +// If you use this code, please keep this note. +// *********************************************************************** +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using System.Drawing; +using System.Drawing.Drawing2D; +using System.ComponentModel; + +namespace HZH_Controls.Controls +{ + /// + /// Class UCSignalLamp. + /// Implements the + /// + /// + public class UCSignalLamp : UserControl + { + /// + /// The is show border + /// + private bool isShowBorder = false; + + /// + /// Gets or sets a value indicating whether this instance is show border. + /// + /// true if this instance is show border; otherwise, false. + [Description("是否显示边框"), Category("自定义")] + public bool IsShowBorder + { + get { return isShowBorder; } + set + { + isShowBorder = value; + Refresh(); + } + } + + /// + /// The lamp color + /// + private Color[] lampColor = new Color[] { Color.FromArgb(255, 77, 59) }; + + /// + /// Gets or sets the color of the lamp. + /// + /// The color of the lamp. + [Description("灯颜色,当需要闪烁时,至少需要2个及以上颜色,不需要闪烁则至少需要1个颜色"), Category("自定义")] + public Color[] LampColor + { + get { return lampColor; } + set + { + if (value == null || value.Length <= 0) + return; + lampColor = value; + Refresh(); + } + } + + /// + /// The is highlight + /// + private bool isHighlight = true; + + /// + /// Gets or sets a value indicating whether this instance is highlight. + /// + /// true if this instance is highlight; otherwise, false. + [Description("是否高亮显示"), Category("自定义")] + public bool IsHighlight + { + get { return isHighlight; } + set + { + isHighlight = value; + Refresh(); + } + } + + /// + /// The twinkle speed + /// + private int twinkleSpeed = 0; + + /// + /// Gets or sets the twinkle speed. + /// + /// The twinkle speed. + [Description("闪烁间隔时间(毫秒),当为0时不闪烁"), Category("自定义")] + public int TwinkleSpeed + { + get { return twinkleSpeed; } + set + { + if (value < 0) + return; + twinkleSpeed = value; + if (value == 0 || lampColor.Length <= 1) + { + timer.Enabled = false; + } + else + { + intColorIndex = 0; + timer.Interval = value; + timer.Enabled = true; + } + Refresh(); + } + } + /// + /// The timer + /// + Timer timer; + /// + /// The int color index + /// + int intColorIndex = 0; + /// + /// Initializes a new instance of the class. + /// + public UCSignalLamp() + { + this.SetStyle(ControlStyles.AllPaintingInWmPaint, true); + this.SetStyle(ControlStyles.DoubleBuffer, true); + this.SetStyle(ControlStyles.ResizeRedraw, true); + this.SetStyle(ControlStyles.Selectable, true); + this.SetStyle(ControlStyles.SupportsTransparentBackColor, true); + this.SetStyle(ControlStyles.UserPaint, true); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; + this.Size = new Size(50, 50); + this.SizeChanged += UCSignalLamp_SizeChanged; + timer = new Timer(); + timer.Interval = 200; + timer.Tick += timer_Tick; + } + + /// + /// Handles the Tick event of the timer control. + /// + /// The source of the event. + /// The instance containing the event data. + void timer_Tick(object sender, EventArgs e) + { + intColorIndex++; + if (intColorIndex >= lampColor.Length) + intColorIndex = 0; + Refresh(); + } + /// + /// Handles the SizeChanged event of the UCSignalLamp control. + /// + /// The source of the event. + /// The instance containing the event data. + void UCSignalLamp_SizeChanged(object sender, EventArgs e) + { + var maxSize = Math.Min(this.Width, this.Height); + if (this.Width != maxSize) + this.Width = maxSize; + if (this.Height != maxSize) + this.Height = maxSize; + } + + /// + /// 引发 事件。 + /// + /// 包含事件数据的 。 + protected override void OnPaint(PaintEventArgs e) + { + base.OnPaint(e); + var g = e.Graphics; + g.SetGDIHigh(); + + Color c1 = lampColor[intColorIndex]; + g.FillEllipse(new SolidBrush(c1), new Rectangle(this.ClientRectangle.Location, this.ClientRectangle.Size - new Size(1, 1))); + + if (isHighlight) + { + GraphicsPath gp = new GraphicsPath(); + + Rectangle rec = new Rectangle(5, 5, this.Width - 10 - 1, this.Height - 10 - 1); + gp.AddEllipse(rec); + + Color[] surroundColor = new Color[] { c1 }; + PathGradientBrush pb = new PathGradientBrush(gp); + pb.CenterColor = Color.White; + pb.SurroundColors = surroundColor; + g.FillPath(pb, gp); + } + + if (isShowBorder) + { + g.DrawEllipse(new Pen(new SolidBrush(this.BackColor), 2), new Rectangle(4, 4, this.Width - 1 - 8, this.Height - 1 - 8)); + } + } + } +} diff --git a/UsingControl/HZHControls/Controls/FactoryControls/Meter/UCMeter.cs b/UsingControl/HZHControls/Controls/FactoryControls/Meter/UCMeter.cs new file mode 100644 index 0000000..19ec81f --- /dev/null +++ b/UsingControl/HZHControls/Controls/FactoryControls/Meter/UCMeter.cs @@ -0,0 +1,434 @@ +// *********************************************************************** +// Assembly : HZH_Controls +// Created : 2019-09-03 +// +// *********************************************************************** +// +// Copyright by Huang Zhenghui(黄正辉) All, QQ group:568015492 QQ:623128629 Email:623128629@qq.com +// +// +// Blog: https://www.cnblogs.com/bfyx +// GitHub:https://github.com/kwwwvagaa/NetWinformControl +// gitee:https://gitee.com/kwwwvagaa/net_winform_custom_control.git +// +// If you use this code, please keep this note. +// *********************************************************************** +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using System.Drawing; +using System.Drawing.Drawing2D; +using System.ComponentModel; + +namespace HZH_Controls.Controls +{ + /// + /// Class UCMeter. + /// Implements the + /// + /// + public class UCMeter : UserControl + { + private int splitCount = 10; + /// + /// Gets or sets the split count. + /// + /// The split count. + [Description("分隔刻度数量,>1"), Category("自定义")] + public int SplitCount + { + get { return splitCount; } + set + { + if (value < 1) + return; + splitCount = value; + Refresh(); + } + } + + private int meterDegrees = 150; + /// + /// Gets or sets the meter degrees. + /// + /// The meter degrees. + [Description("表盘跨度角度,0-360"), Category("自定义")] + public int MeterDegrees + { + get { return meterDegrees; } + set + { + if (value > 360 || value <= 0) + return; + meterDegrees = value; + Refresh(); + } + } + + private decimal minValue = 0; + /// + /// Gets or sets the minimum value. + /// + /// The minimum value. + [Description("最小值,= maxValue) + return; + minValue = value; + Refresh(); + } + } + + private decimal maxValue = 100; + /// + /// Gets or sets the maximum value. + /// + /// The maximum value. + [Description("最大值,>MinValue"), Category("自定义")] + public decimal MaxValue + { + get { return maxValue; } + set + { + if (value <= minValue) + return; + maxValue = value; + Refresh(); + } + } + /// + /// 获取或设置控件显示的文字的字体。 + /// + /// The font. + /// + /// + /// + /// + /// + /// + [Description("刻度字体"), Category("自定义")] + public override Font Font + { + get + { + return base.Font; + } + set + { + base.Font = value; + Refresh(); + } + } + + private decimal m_value = 0; + /// + /// Gets or sets the value. + /// + /// The value. + [Description("值,>=MinValue并且<=MaxValue"), Category("自定义")] + public decimal Value + { + get { return m_value; } + set + { + if (value < minValue || value > maxValue) + return; + m_value = value; + Refresh(); + } + } + + private MeterTextLocation textLocation = MeterTextLocation.None; + /// + /// Gets or sets the text location. + /// + /// The text location. + [Description("值和固定文字显示位置"), Category("自定义")] + public MeterTextLocation TextLocation + { + get { return textLocation; } + set + { + textLocation = value; + Refresh(); + } + } + + private string fixedText; + /// + /// Gets or sets the fixed text. + /// + /// The fixed text. + [Description("固定文字"), Category("自定义")] + public string FixedText + { + get { return fixedText; } + set + { + fixedText = value; + Refresh(); + } + } + + private Font textFont = DefaultFont; + /// + /// Gets or sets the text font. + /// + /// The text font. + [Description("值和固定文字字体"), Category("自定义")] + public Font TextFont + { + get { return textFont; } + set + { + textFont = value; + Refresh(); + } + } + + private Color externalRoundColor = Color.FromArgb(255, 77, 59); + /// + /// Gets or sets the color of the external round. + /// + /// The color of the external round. + [Description("外圆颜色"), Category("自定义")] + public Color ExternalRoundColor + { + get { return externalRoundColor; } + set + { + externalRoundColor = value; + Refresh(); + } + } + + private Color insideRoundColor = Color.FromArgb(255, 77, 59); + /// + /// Gets or sets the color of the inside round. + /// + /// The color of the inside round. + [Description("内圆颜色"), Category("自定义")] + public Color InsideRoundColor + { + get { return insideRoundColor; } + set + { + insideRoundColor = value; + Refresh(); + } + } + + private Color boundaryLineColor = Color.FromArgb(255, 77, 59); + /// + /// Gets or sets the color of the boundary line. + /// + /// The color of the boundary line. + [Description("边界线颜色"), Category("自定义")] + public Color BoundaryLineColor + { + get { return boundaryLineColor; } + set + { + boundaryLineColor = value; + Refresh(); + } + } + + private Color scaleColor = Color.FromArgb(255, 77, 59); + /// + /// Gets or sets the color of the scale. + /// + /// The color of the scale. + [Description("刻度颜色"), Category("自定义")] + public Color ScaleColor + { + get { return scaleColor; } + set + { + scaleColor = value; + Refresh(); + } + } + + private Color scaleValueColor = Color.FromArgb(255, 77, 59); + /// + /// Gets or sets the color of the scale value. + /// + /// The color of the scale value. + [Description("刻度值文字颜色"), Category("自定义")] + public Color ScaleValueColor + { + get { return scaleValueColor; } + set + { + scaleValueColor = value; + Refresh(); + } + } + + private Color pointerColor = Color.FromArgb(255, 77, 59); + /// + /// Gets or sets the color of the pointer. + /// + /// The color of the pointer. + [Description("指针颜色"), Category("自定义")] + public Color PointerColor + { + get { return pointerColor; } + set + { + pointerColor = value; + Refresh(); + } + } + + private Color textColor = Color.FromArgb(255, 77, 59); + /// + /// Gets or sets the color of the text. + /// + /// The color of the text. + [Description("值和固定文字颜色"), Category("自定义")] + public Color TextColor + { + get { return textColor; } + set + { + textColor = value; + Refresh(); + } + } + + Rectangle m_rectWorking; + public UCMeter() + { + this.SetStyle(ControlStyles.AllPaintingInWmPaint, true); + this.SetStyle(ControlStyles.DoubleBuffer, true); + this.SetStyle(ControlStyles.ResizeRedraw, true); + this.SetStyle(ControlStyles.Selectable, true); + this.SetStyle(ControlStyles.SupportsTransparentBackColor, true); + this.SetStyle(ControlStyles.UserPaint, true); + this.SizeChanged += UCMeter1_SizeChanged; + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; + this.Size = new Size(350, 200); + } + + void UCMeter1_SizeChanged(object sender, EventArgs e) + { + m_rectWorking = new Rectangle(10, 10, this.Width - 20, this.Height - 20); + } + + + protected override void OnPaint(PaintEventArgs e) + { + base.OnPaint(e); + var g = e.Graphics; + g.SetGDIHigh(); + + //外圆 + float fltStartAngle = -90 - (meterDegrees) / 2 + 360; + var r1 = new Rectangle(m_rectWorking.Location, new Size(m_rectWorking.Width, m_rectWorking.Width)); + g.DrawArc(new Pen(new SolidBrush(externalRoundColor), 1), r1, fltStartAngle, meterDegrees); + //内圆 + var r2 = new Rectangle(m_rectWorking.Left + (m_rectWorking.Width - m_rectWorking.Width / 4) / 2, m_rectWorking.Top + (m_rectWorking.Width - m_rectWorking.Width / 4) / 2, m_rectWorking.Width / 4, m_rectWorking.Width / 4); + g.DrawArc(new Pen(new SolidBrush(insideRoundColor), 1), r2, fltStartAngle, meterDegrees); + + //边界线 + if (meterDegrees != 360) + { + float fltAngle = fltStartAngle - 180; + + float intY = (float)(m_rectWorking.Top + m_rectWorking.Width / 2 - ((m_rectWorking.Width / 2 - m_rectWorking.Width / 8) * Math.Sin(Math.PI * (fltAngle / 180.00F)))); + float intX = (float)(m_rectWorking.Left + (m_rectWorking.Width / 2 - ((m_rectWorking.Width / 2 - m_rectWorking.Width / 8) * Math.Cos(Math.PI * (fltAngle / 180.00F))))); + + float fltY1 = (float)(m_rectWorking.Top + m_rectWorking.Width / 2 - (m_rectWorking.Width / 8 * Math.Sin(Math.PI * (fltAngle / 180.00F)))); + float fltX1 = (float)(m_rectWorking.Left + (m_rectWorking.Width / 2 - (m_rectWorking.Width / 8 * Math.Cos(Math.PI * (fltAngle / 180.00F))))); + + g.DrawLine(new Pen(new SolidBrush(boundaryLineColor), 1), new PointF(intX, intY), new PointF(fltX1, fltY1)); + g.DrawLine(new Pen(new SolidBrush(boundaryLineColor), 1), new PointF(m_rectWorking.Right - (fltX1 - m_rectWorking.Left), fltY1), new PointF(m_rectWorking.Right - (intX - m_rectWorking.Left), intY)); + } + + //分割线 + int _splitCount = splitCount * 2; + float fltSplitValue = (float)meterDegrees / (float)_splitCount; + for (int i = 0; i <= _splitCount; i++) + { + float fltAngle = (fltStartAngle + fltSplitValue * i - 180) % 360; + float fltY1 = (float)(m_rectWorking.Top + m_rectWorking.Width / 2 - ((m_rectWorking.Width / 2) * Math.Sin(Math.PI * (fltAngle / 180.00F)))); + float fltX1 = (float)(m_rectWorking.Left + (m_rectWorking.Width / 2 - ((m_rectWorking.Width / 2) * Math.Cos(Math.PI * (fltAngle / 180.00F))))); + float fltY2 = 0; + float fltX2 = 0; + if (i % 2 == 0) + { + fltY2 = (float)(m_rectWorking.Top + m_rectWorking.Width / 2 - ((m_rectWorking.Width / 2 - 10) * Math.Sin(Math.PI * (fltAngle / 180.00F)))); + fltX2 = (float)(m_rectWorking.Left + (m_rectWorking.Width / 2 - ((m_rectWorking.Width / 2 - 10) * Math.Cos(Math.PI * (fltAngle / 180.00F))))); + if (!(meterDegrees == 360 && i == _splitCount)) + { + decimal decValue = minValue + (maxValue - minValue) / _splitCount * i; + var txtSize = g.MeasureString(decValue.ToString("0.##"), this.Font); + float fltFY1 = (float)(m_rectWorking.Top - txtSize.Height / 2 + m_rectWorking.Width / 2 - ((m_rectWorking.Width / 2 - 20) * Math.Sin(Math.PI * (fltAngle / 180.00F)))); + float fltFX1 = (float)(m_rectWorking.Left - txtSize.Width / 2 + (m_rectWorking.Width / 2 - ((m_rectWorking.Width / 2 - 20) * Math.Cos(Math.PI * (fltAngle / 180.00F))))); + g.DrawString(decValue.ToString("0.##"), Font, new SolidBrush(scaleValueColor), fltFX1, fltFY1); + } + } + else + { + fltY2 = (float)(m_rectWorking.Top + m_rectWorking.Width / 2 - ((m_rectWorking.Width / 2 - 5) * Math.Sin(Math.PI * (fltAngle / 180.00F)))); + fltX2 = (float)(m_rectWorking.Left + (m_rectWorking.Width / 2 - ((m_rectWorking.Width / 2 - 5) * Math.Cos(Math.PI * (fltAngle / 180.00F))))); + } + g.DrawLine(new Pen(new SolidBrush(scaleColor), i % 2 == 0 ? 2 : 1), new PointF(fltX1, fltY1), new PointF(fltX2, fltY2)); + } + + //值文字和固定文字 + if (textLocation != MeterTextLocation.None) + { + string str = m_value.ToString("0.##"); + var txtSize = g.MeasureString(str, textFont); + float fltY = m_rectWorking.Top + m_rectWorking.Width / 4 - txtSize.Height / 2; + float fltX = m_rectWorking.Left + m_rectWorking.Width / 2 - txtSize.Width / 2; + g.DrawString(str, textFont, new SolidBrush(textColor), new PointF(fltX, fltY)); + + if (!string.IsNullOrEmpty(fixedText)) + { + str = fixedText; + txtSize = g.MeasureString(str, textFont); + fltY = m_rectWorking.Top + m_rectWorking.Width / 4 + txtSize.Height / 2; + fltX = m_rectWorking.Left + m_rectWorking.Width / 2 - txtSize.Width / 2; + g.DrawString(str, textFont, new SolidBrush(textColor), new PointF(fltX, fltY)); + } + } + + //画指针 + g.FillEllipse(new SolidBrush(Color.FromArgb(100, pointerColor.R, pointerColor.G, pointerColor.B)), new Rectangle(m_rectWorking.Left + m_rectWorking.Width / 2 - 10, m_rectWorking.Top + m_rectWorking.Width / 2 - 10, 20, 20)); + g.FillEllipse(new SolidBrush(pointerColor), new Rectangle(m_rectWorking.Left + m_rectWorking.Width / 2 - 5, m_rectWorking.Top + m_rectWorking.Width / 2 - 5, 10, 10)); + float fltValueAngle = (fltStartAngle + ((float)(m_value - minValue) / (float)(maxValue - minValue)) * (float)meterDegrees - 180) % 360; + float intValueY1 = (float)(m_rectWorking.Top + m_rectWorking.Width / 2 - ((m_rectWorking.Width / 2 - 30) * Math.Sin(Math.PI * (fltValueAngle / 180.00F)))); + float intValueX1 = (float)(m_rectWorking.Left + (m_rectWorking.Width / 2 - ((m_rectWorking.Width / 2 - 30) * Math.Cos(Math.PI * (fltValueAngle / 180.00F))))); + g.DrawLine(new Pen(new SolidBrush(pointerColor), 3), intValueX1, intValueY1, m_rectWorking.Left + m_rectWorking.Width / 2, m_rectWorking.Top + m_rectWorking.Width / 2); + } + } + + /// + /// Enum MeterTextLocation + /// + public enum MeterTextLocation + { + /// + /// The none + /// + None, + /// + /// The top + /// + Top, + /// + /// The bottom + /// + Bottom + } +} diff --git a/UsingControl/HZHControls/Controls/FactoryControls/MindMapping/MindMappingItemEntity.cs b/UsingControl/HZHControls/Controls/FactoryControls/MindMapping/MindMappingItemEntity.cs new file mode 100644 index 0000000..e7f7558 --- /dev/null +++ b/UsingControl/HZHControls/Controls/FactoryControls/MindMapping/MindMappingItemEntity.cs @@ -0,0 +1,237 @@ +// *********************************************************************** +// Assembly : HZH_Controls +// Created : 2019-09-11 +// +// *********************************************************************** +// +// Copyright by Huang Zhenghui(黄正辉) All, QQ group:568015492 QQ:623128629 Email:623128629@qq.com +// +// +// Blog: https://www.cnblogs.com/bfyx +// GitHub:https://github.com/kwwwvagaa/NetWinformControl +// gitee:https://gitee.com/kwwwvagaa/net_winform_custom_control.git +// +// If you use this code, please keep this note. +// *********************************************************************** +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Drawing; + +namespace HZH_Controls.Controls +{ + /// + /// Class MindMappingItemEntity. + /// + public class MindMappingItemEntity + { + /// + /// Gets or sets the identifier. + /// + /// The identifier. + public string ID { get; set; } + /// + /// The text + /// + private string _text; + /// + /// Gets or sets the text. + /// + /// The text. + public string Text + { + get { return _text; } + set + { + _text = value; + ResetSize(); + } + } + /// + /// Gets or sets the data source. + /// + /// The data source. + public object DataSource { get; set; } + /// + /// The childrens + /// + private MindMappingItemEntity[] _Childrens; + /// + /// Gets or sets the childrens. + /// + /// The childrens. + public MindMappingItemEntity[] Childrens + { + get { return _Childrens; } + set + { + _Childrens = value; + if (value != null && value.Length > 0) + { + value.ToList().ForEach(p => { if (p != null) { p.ParentItem = this; } }); + } + } + } + /// + /// The back color + /// + private Color? backColor; + + /// + /// Gets or sets the color of the back. + /// + /// The color of the back. + public Color? BackColor + { + get { return backColor; } + set { backColor = value; } + } + + /// + /// The font + /// + private Font font = new Font("微软雅黑", 10); + + /// + /// Gets or sets the font. + /// + /// The font. + public Font Font + { + get { return font; } + set + { + font = value; + ResetSize(); + } + } + + /// + /// The fore color + /// + private Color foreColor = Color.Black; + + /// + /// Gets or sets the color of the fore. + /// + /// The color of the fore. + public Color ForeColor + { + get { return foreColor; } + set { foreColor = value; } + } + /// + /// The is expansion + /// + private bool _IsExpansion = false; + /// + /// Gets or sets a value indicating whether the instance is expanded. + /// + /// true if this instance is expansion; otherwise, false. + public bool IsExpansion + { + get + { + return _IsExpansion; + } + set + { + if (value == _IsExpansion) + return; + _IsExpansion = value; + if (!value && _Childrens != null && _Childrens.Length > 0) + { + _Childrens.ToList().ForEach(p => { if (p != null) { p.IsExpansion = false; } }); + } + + } + } + + /// + /// Gets the parent item. + /// + /// The parent item. + public MindMappingItemEntity ParentItem { get; private set; } + /// + /// Gets all childrens maximum show count. + /// + /// All childrens maximum show count. + public int AllChildrensMaxShowHeight { get { return GetAllChildrensMaxShowHeight(); } } + /// + /// Gets the maximum level. + /// + /// The maximum level. + public int AllChildrensMaxShowWidth { get { return GetAllChildrensMaxShowWidth(); } } + + /// + /// Gets all childrens maximum show count. + /// + /// System.Int32. + private int GetAllChildrensMaxShowHeight() + { + if (!_IsExpansion || _Childrens == null || _Childrens.Length <= 0) + return ItemHeight + 10; + else + { + return _Childrens.Sum(p => p == null ? 0 : p.AllChildrensMaxShowHeight); + } + } + /// + /// Gets the maximum level. + /// + /// System.Int32. + private int GetAllChildrensMaxShowWidth() + { + if (!_IsExpansion || _Childrens == null || _Childrens.Length <= 0) + return ItemWidth + 50; + else + { + return ItemWidth + 50 + _Childrens.Max(p => p == null ? 0 : p.AllChildrensMaxShowWidth); + } + } + /// + /// Gets or sets the working rectangle. + /// + /// The working rectangle. + internal RectangleF WorkingRectangle { get; set; } + /// + /// Gets or sets the draw rectangle. + /// + /// The draw rectangle. + internal RectangleF DrawRectangle { get; set; } + /// + /// Gets or sets the expansion rectangle. + /// + /// The expansion rectangle. + internal RectangleF ExpansionRectangle { get; set; } + /// + /// Gets the height of the item. + /// + /// The height of the item. + int ItemHeight { get; set; } + /// + /// Gets the width of the item. + /// + /// The width of the item. + int ItemWidth { get; set; } + /// + /// Resets the size. + /// + private void ResetSize() + { + string _t = _text; + if (string.IsNullOrEmpty(_t)) + { + _t = "aaaa"; + } + Bitmap bit = new Bitmap(1, 1); + var g = Graphics.FromImage(bit); + var size = g.MeasureString(_t, font); + g.Dispose(); + bit.Dispose(); + ItemHeight = (int)size.Height; + ItemWidth = (int)size.Width; + } + } +} diff --git a/UsingControl/HZHControls/Controls/FactoryControls/MindMapping/UCMindMapping.cs b/UsingControl/HZHControls/Controls/FactoryControls/MindMapping/UCMindMapping.cs new file mode 100644 index 0000000..c63537a --- /dev/null +++ b/UsingControl/HZHControls/Controls/FactoryControls/MindMapping/UCMindMapping.cs @@ -0,0 +1,423 @@ +// *********************************************************************** +// Assembly : HZH_Controls +// Created : 2019-09-11 +// +// *********************************************************************** +// +// Copyright by Huang Zhenghui(黄正辉) All, QQ group:568015492 QQ:623128629 Email:623128629@qq.com +// +// +// Blog: https://www.cnblogs.com/bfyx +// GitHub:https://github.com/kwwwvagaa/NetWinformControl +// gitee:https://gitee.com/kwwwvagaa/net_winform_custom_control.git +// +// If you use this code, please keep this note. +// *********************************************************************** +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using System.Drawing; +using System.Drawing.Drawing2D; +using System.ComponentModel; + +namespace HZH_Controls.Controls +{ + /// + /// Class UCMindMapping. + /// Implements the + /// + /// + internal class UCMindMapping : UserControl + { + /// + /// The item context menu strip + /// + private ContextMenuStrip itemContextMenuStrip; + + /// + /// Gets or sets the item context menu strip. + /// + /// The item context menu strip. + [Description("节点关联的右键菜单"), Category("自定义")] + public ContextMenuStrip ItemContextMenuStrip + { + get { return itemContextMenuStrip; } + set { itemContextMenuStrip = value; } + } + /// + /// The item backcolor + /// + private Color itemBackcolor = Color.FromArgb(255, 77, 59); + + /// + /// Gets or sets the item backcolor. + /// + /// The item backcolor. + [Description("节点背景色,优先级小于数据源中设置的背景色"), Category("自定义")] + public Color ItemBackcolor + { + get { return itemBackcolor; } + set + { + itemBackcolor = value; + Refresh(); + } + } + /// + /// The line color + /// + private Color lineColor = Color.Black; + + /// + /// Gets or sets the color of the line. + /// + /// The color of the line. + [Description("线条颜色"), Category("自定义")] + public Color LineColor + { + get { return lineColor; } + set + { + lineColor = value; + Refresh(); + } + } + /// + /// The split width + /// + private int splitWidth = 50; + // private int itemHeight = 20; + /// + /// The padding + /// + private int padding = 20; + + /// + /// The m rect working + /// + Rectangle m_rectWorking = Rectangle.Empty; + /// + /// Occurs when [item clicked]. + /// + public event EventHandler ItemClicked; + /// + /// The data source + /// + private MindMappingItemEntity dataSource; + + /// + /// The select entity + /// + private MindMappingItemEntity selectEntity; + /// + /// Gets the select entity. + /// + /// The select entity. + [Description("选中的数据源"), Category("自定义")] + public MindMappingItemEntity SelectEntity + { + get { return selectEntity; } + private set { selectEntity = value; } + } + /// + /// Gets or sets the data source. + /// + /// The data source. + [Description("数据源"), Category("自定义")] + public MindMappingItemEntity DataSource + { + get { return dataSource; } + set + { + dataSource = value; + + ResetSize(); + } + } + /// + /// Initializes a new instance of the class. + /// + public UCMindMapping() + { + this.SetStyle(ControlStyles.AllPaintingInWmPaint, true); + this.SetStyle(ControlStyles.DoubleBuffer, true); + this.SetStyle(ControlStyles.ResizeRedraw, true); + this.SetStyle(ControlStyles.Selectable, true); + this.SetStyle(ControlStyles.SupportsTransparentBackColor, true); + this.SetStyle(ControlStyles.UserPaint, true); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; + this.Click += UCMindMapping_Click; + this.DoubleClick += UCMindMapping_DoubleClick; + this.Load += UCMindMapping_Load; + this.MouseClick += UCMindMapping_MouseClick; + } + + + + /// + /// Handles the Load event of the UCMindMapping control. + /// + /// The source of the event. + /// The instance containing the event data. + void UCMindMapping_Load(object sender, EventArgs e) + { + if (this.Parent != null) + { + //父控件大小改变时重置大小和位置 + this.Parent.SizeChanged += (a, b) => + { + ResetSize(); + }; + } + } + + /// + /// 双击处理,主要用于检测节点双击展开折叠 + /// + /// The source of the event. + /// The instance containing the event data. + void UCMindMapping_DoubleClick(object sender, EventArgs e) + { + var mouseLocation = this.PointToClient(Control.MousePosition); + + bool bln = CheckDrawRectClick(dataSource, mouseLocation); + if (bln) + { + ResetSize(); + this.Parent.Refresh(); + } + } + + /// + /// 单击处理,主要用于单击节点事件和,展开关闭圆圈处理 + /// + /// The source of the event. + /// The instance containing the event data. + void UCMindMapping_Click(object sender, EventArgs e) + { + var mouseLocation = this.PointToClient(Control.MousePosition); + + bool bln = CheckExpansionClick(dataSource, mouseLocation); + if (bln) + { + ResetSize(); + this.Parent.Refresh(); + } + } + + /// + /// Handles the MouseClick event of the UCMindMapping control. + /// + /// The source of the event. + /// The instance containing the event data. + void UCMindMapping_MouseClick(object sender, MouseEventArgs e) + { + if (itemContextMenuStrip != null && e.Button == System.Windows.Forms.MouseButtons.Right) + { + bool bln = CheckDrawRectClick(dataSource, e.Location, false); + if (bln) + { + itemContextMenuStrip.Show(this.PointToScreen(e.Location)); + } + } + } + + /// + /// 双击检查 + /// + /// The item. + /// The mouse location. + /// if set to true [BLN do expansion]. + /// true if XXXX, false otherwise. + private bool CheckDrawRectClick(MindMappingItemEntity item, Point mouseLocation, bool blnDoExpansion = true) + { + if (item == null) + return false; + else + { + if (item.DrawRectangle.Contains(mouseLocation)) + { + if (blnDoExpansion) + item.IsExpansion = !item.IsExpansion; + return true; + } + if (item.Childrens != null && item.Childrens.Length > 0) + { + foreach (var child in item.Childrens) + { + var bln = CheckDrawRectClick(child, mouseLocation, blnDoExpansion); + if (bln) + return bln; + } + } + } + return false; + } + + /// + /// 单击检查 + /// + /// The item. + /// The mouse location. + /// true if XXXX, false otherwise. + private bool CheckExpansionClick(MindMappingItemEntity item, Point mouseLocation) + { + if (item == null) + return false; + else + { + if (item.DrawRectangle.Contains(mouseLocation)) + { + selectEntity = item; + if (ItemClicked != null ) + { + ItemClicked(item, null); + } + } + + if (item.ExpansionRectangle.Contains(mouseLocation)) + { + item.IsExpansion = !item.IsExpansion; + return true; + } + if (item.Childrens != null && item.Childrens.Length > 0) + { + foreach (var child in item.Childrens) + { + var bln = CheckExpansionClick(child, mouseLocation); + if (bln) + return bln; + } + } + } + return false; + } + + /// + /// 引发 事件。 + /// + /// 包含事件数据的 。 + protected override void OnPaint(PaintEventArgs e) + { + try + { + base.OnPaint(e); + if (m_rectWorking == Rectangle.Empty || m_rectWorking == null) + return; + var g = e.Graphics; + g.SetGDIHigh(); + + int intHeight = dataSource.AllChildrensMaxShowHeight; + dataSource.WorkingRectangle = new RectangleF(m_rectWorking.Left, m_rectWorking.Top + (m_rectWorking.Height - intHeight) / 2, m_rectWorking.Width, intHeight); + + DrawItem(dataSource, g); + } + catch (Exception exc) + { + MessageBox.Show(exc.ToString(), "错误"); + } + } + + /// + /// 画节点 + /// + /// The item. + /// The g. + private void DrawItem(MindMappingItemEntity item, Graphics g) + { + //节点 + var size = g.MeasureString(item.Text, item.Font); + item.DrawRectangle = new RectangleF(item.WorkingRectangle.Left + 2, item.WorkingRectangle.Top + (item.WorkingRectangle.Height - size.Height) / 2 + 2, size.Width + 4, size.Height + 4); + GraphicsPath drawPath = item.DrawRectangle.CreateRoundedRectanglePath(5); + if (item.BackColor.HasValue) + g.FillPath(new SolidBrush(item.BackColor.Value), drawPath); + else + g.FillPath(new SolidBrush(itemBackcolor), drawPath); + + g.DrawString(item.Text, item.Font, new SolidBrush(item.ForeColor), item.DrawRectangle.Location.X + 2, item.DrawRectangle.Location.Y + 2); + //子节点 + if (item.Childrens != null && item.IsExpansion) + { + for (int i = 0; i < item.Childrens.Length; i++) + { + var child = item.Childrens[i]; + if (i == 0) + { + child.WorkingRectangle = new RectangleF(item.DrawRectangle.Right + splitWidth, item.WorkingRectangle.Top, item.WorkingRectangle.Width - (item.DrawRectangle.Width + splitWidth), child.AllChildrensMaxShowHeight); + } + else + { + child.WorkingRectangle = new RectangleF(item.DrawRectangle.Right + splitWidth, item.Childrens[i - 1].WorkingRectangle.Bottom, item.WorkingRectangle.Width - (item.DrawRectangle.Width + splitWidth), child.AllChildrensMaxShowHeight); + } + DrawItem(child, g); + } + } + //连线 + if (item.ParentItem != null) + { + g.DrawLines(new Pen(new SolidBrush(lineColor), 1), new PointF[] + { + new PointF(item.ParentItem.DrawRectangle.Right,item.ParentItem.DrawRectangle.Top+item.ParentItem.DrawRectangle.Height/2), + new PointF(item.ParentItem.DrawRectangle.Right+12,item.ParentItem.DrawRectangle.Top+item.ParentItem.DrawRectangle.Height/2), + //new PointF(item.ParentItem.DrawRectangle.Right+12,item.DrawRectangle.Top+item.DrawRectangle.Height/2), + new PointF(item.DrawRectangle.Left-12,item.DrawRectangle.Top+item.DrawRectangle.Height/2), + new PointF(item.DrawRectangle.Left,item.DrawRectangle.Top+item.DrawRectangle.Height/2), + }); + } + //展开折叠按钮 + if (item.Childrens != null && item.Childrens.Length > 0) + { + RectangleF _rect = new RectangleF(item.DrawRectangle.Right + 1, item.DrawRectangle.Top + (item.DrawRectangle.Height - 10) / 2, 10, 10); + item.ExpansionRectangle = _rect; + g.FillEllipse(new SolidBrush(this.BackColor), _rect); + g.DrawEllipse(new Pen(new SolidBrush(Color.Black)), _rect); + g.DrawLine(new Pen(new SolidBrush(lineColor)), _rect.Left + 2, _rect.Y + _rect.Height / 2, _rect.Right - 2, _rect.Y + _rect.Height / 2); + if (!item.IsExpansion) + { + g.DrawLine(new Pen(new SolidBrush(lineColor)), _rect.Left + _rect.Width / 2, _rect.Top + 2, _rect.Left + _rect.Width / 2, _rect.Bottom - 2); + } + } + } + + + /// + /// 重置大小 + /// + private void ResetSize() + { + if (this.Parent == null) + return; + try + { + ControlHelper.FreezeControl(this, true); + if (dataSource == null) + { + m_rectWorking = Rectangle.Empty; + this.Size = this.Parent.Size; + } + else + { + int intWidth = dataSource.AllChildrensMaxShowWidth; + int intHeight = dataSource.AllChildrensMaxShowHeight; + this.Width = intWidth + padding * 2; + this.Height = intHeight + padding * 2; + if (this.Width < this.Parent.Width) + this.Width = this.Parent.Width; + m_rectWorking = new Rectangle(padding, padding, intWidth, intHeight); + if (this.Height > this.Parent.Height) + { + //this.Location = new Point(0, 0); + } + else + this.Location = new Point(0, (this.Parent.Height - this.Height) / 2); + } + } + finally + { + ControlHelper.FreezeControl(this, false); + } + } + } +} diff --git a/UsingControl/HZHControls/Controls/FactoryControls/MindMapping/UCMindMappingPanel.Designer.cs b/UsingControl/HZHControls/Controls/FactoryControls/MindMapping/UCMindMappingPanel.Designer.cs new file mode 100644 index 0000000..aaaf084 --- /dev/null +++ b/UsingControl/HZHControls/Controls/FactoryControls/MindMapping/UCMindMappingPanel.Designer.cs @@ -0,0 +1,80 @@ +// *********************************************************************** +// Assembly : HZH_Controls +// Created : 2019-09-11 +// +// *********************************************************************** +// +// Copyright by Huang Zhenghui(黄正辉) All, QQ group:568015492 QQ:623128629 Email:623128629@qq.com +// +// +// Blog: https://www.cnblogs.com/bfyx +// GitHub:https://github.com/kwwwvagaa/NetWinformControl +// gitee:https://gitee.com/kwwwvagaa/net_winform_custom_control.git +// +// If you use this code, please keep this note. +// *********************************************************************** +namespace HZH_Controls.Controls +{ + /// + /// Class UCMindMappingPanel. + /// Implements the + /// + /// + partial class UCMindMappingPanel + { + /// + /// 必需的设计器变量。 + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 清理所有正在使用的资源。 + /// + /// 如果应释放托管资源,为 true;否则为 false。 + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region 组件设计器生成的代码 + + /// + /// 设计器支持所需的方法 - 不要 + /// 使用代码编辑器修改此方法的内容。 + /// + private void InitializeComponent() + { + this.ucMindMapping1 = new HZH_Controls.Controls.UCMindMapping(); + this.SuspendLayout(); + // + // ucMindMapping1 + // + this.ucMindMapping1.Location = new System.Drawing.Point(0, 0); + this.ucMindMapping1.Name = "ucMindMapping1"; + this.ucMindMapping1.Size = new System.Drawing.Size(200, 200); + this.ucMindMapping1.TabIndex = 0; + // + // UCMindMappingPanel + // + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; + this.AutoScroll = true; + this.BackColor = System.Drawing.Color.White; + this.Controls.Add(this.ucMindMapping1); + this.Name = "UCMindMappingPanel"; + this.Size = new System.Drawing.Size(200, 200); + this.ResumeLayout(false); + + } + + #endregion + + /// + /// The uc mind mapping1 + /// + private UCMindMapping ucMindMapping1; + } +} diff --git a/UsingControl/HZHControls/Controls/FactoryControls/MindMapping/UCMindMappingPanel.cs b/UsingControl/HZHControls/Controls/FactoryControls/MindMapping/UCMindMappingPanel.cs new file mode 100644 index 0000000..d0be1e4 --- /dev/null +++ b/UsingControl/HZHControls/Controls/FactoryControls/MindMapping/UCMindMappingPanel.cs @@ -0,0 +1,160 @@ +// *********************************************************************** +// Assembly : HZH_Controls +// Created : 2019-09-11 +// +// *********************************************************************** +// +// Copyright by Huang Zhenghui(黄正辉) All, QQ group:568015492 QQ:623128629 Email:623128629@qq.com +// +// +// Blog: https://www.cnblogs.com/bfyx +// GitHub:https://github.com/kwwwvagaa/NetWinformControl +// gitee:https://gitee.com/kwwwvagaa/net_winform_custom_control.git +// +// If you use this code, please keep this note. +// *********************************************************************** +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace HZH_Controls.Controls +{ + /// + /// Class UCMindMappingPanel. + /// Implements the + /// + /// + [DefaultEvent("ItemClicked")] + public partial class UCMindMappingPanel : UserControl + { + + /// + /// The item context menu strip + /// + private ContextMenuStrip itemContextMenuStrip; + + /// + /// Gets or sets the item context menu strip. + /// + /// The item context menu strip. + [Description("节点关联的右键菜单"), Category("自定义")] + public ContextMenuStrip ItemContextMenuStrip + { + get { return itemContextMenuStrip; } + set + { + itemContextMenuStrip = value; + this.ucMindMapping1.ItemContextMenuStrip = value; + } + } + + /// + /// The item backcolor + /// + private Color itemBackcolor = Color.FromArgb(255, 77, 59); + + /// + /// Gets or sets the item backcolor. + /// + /// The item backcolor. + [Description("节点背景色,优先级小于数据源中设置的背景色"), Category("自定义")] + public Color ItemBackcolor + { + get { return itemBackcolor; } + set + { + itemBackcolor = value; + this.ucMindMapping1.ItemBackcolor = value; + } + } + /// + /// The data source + /// + private MindMappingItemEntity dataSource; + + /// + /// Gets or sets the data source. + /// + /// The data source. + [Description("数据源"), Category("自定义")] + public MindMappingItemEntity DataSource + { + get { return dataSource; } + set + { + dataSource = value; + this.ucMindMapping1.DataSource = value; + } + } + /// + /// Gets or sets the data source. + /// + /// The data source. + [Description("数据源"), Category("自定义")] + public event EventHandler ItemClicked; + + /// + /// The line color + /// + private Color lineColor = Color.Black; + + /// + /// Gets or sets the color of the line. + /// + /// The color of the line. + [Description("线条颜色"), Category("自定义")] + public Color LineColor + { + get { return lineColor; } + set + { + lineColor = value; + this.ucMindMapping1.LineColor = value; + } + } + + + /// + /// Gets the select entity. + /// + /// The select entity. + [Description("选中的数据源"), Category("自定义")] + public MindMappingItemEntity SelectEntity + { + get { return ucMindMapping1.SelectEntity; } + + } + /// + /// Initializes a new instance of the class. + /// + public UCMindMappingPanel() + { + this.SetStyle(ControlStyles.AllPaintingInWmPaint, true); + this.SetStyle(ControlStyles.DoubleBuffer, true); + this.SetStyle(ControlStyles.ResizeRedraw, true); + this.SetStyle(ControlStyles.Selectable, true); + this.SetStyle(ControlStyles.SupportsTransparentBackColor, true); + this.SetStyle(ControlStyles.UserPaint, true); + InitializeComponent(); + ucMindMapping1.ItemClicked += ucMindMapping1_ItemClicked; + } + + /// + /// Handles the ItemClicked event of the ucMindMapping1 control. + /// + /// The source of the event. + /// The instance containing the event data. + void ucMindMapping1_ItemClicked(object sender, EventArgs e) + { + if (ItemClicked != null) + { + ItemClicked(sender, e); + } + } + } +} diff --git a/UsingControl/HZHControls/Controls/FactoryControls/MindMapping/UCMindMappingPanel.resx b/UsingControl/HZHControls/Controls/FactoryControls/MindMapping/UCMindMappingPanel.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/UsingControl/HZHControls/Controls/FactoryControls/MindMapping/UCMindMappingPanel.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/UsingControl/HZHControls/Controls/FactoryControls/Pond/UCPond.cs b/UsingControl/HZHControls/Controls/FactoryControls/Pond/UCPond.cs new file mode 100644 index 0000000..5a340e4 --- /dev/null +++ b/UsingControl/HZHControls/Controls/FactoryControls/Pond/UCPond.cs @@ -0,0 +1,174 @@ +// *********************************************************************** +// Assembly : HZH_Controls +// Created : 2019-09-06 +// +// *********************************************************************** +// +// Copyright by Huang Zhenghui(黄正辉) All, QQ group:568015492 QQ:623128629 Email:623128629@qq.com +// +// +// Blog: https://www.cnblogs.com/bfyx +// GitHub:https://github.com/kwwwvagaa/NetWinformControl +// gitee:https://gitee.com/kwwwvagaa/net_winform_custom_control.git +// +// If you use this code, please keep this note. +// *********************************************************************** +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using System.Drawing; +using System.Drawing.Drawing2D; +using System.ComponentModel; + +namespace HZH_Controls.Controls +{ + /// + /// Class UCPond. + /// Implements the + /// + /// + public class UCPond : UserControl + { + /// + /// The maximum value + /// + private decimal maxValue = 100; + + /// + /// Gets or sets the maximum value. + /// + /// The maximum value. + [Description("最大值"), Category("自定义")] + public decimal MaxValue + { + get { return maxValue; } + set + { + if (value < m_value) + return; + maxValue = value; + Refresh(); + } + } + + /// + /// The m value + /// + private decimal m_value = 0; + + /// + /// Gets or sets the value. + /// + /// The value. + [Description("值"), Category("自定义")] + public decimal Value + { + get { return m_value; } + set + { + if (value < 0) + return; + if (value > maxValue) + m_value = maxValue; + else + m_value = value; + Refresh(); + } + } + + /// + /// The wall color + /// + private Color wallColor = Color.FromArgb(255, 77, 59); + + /// + /// Gets or sets the color of the wall. + /// + /// The color of the wall. + [Description("池壁颜色"), Category("自定义")] + public Color WallColor + { + get { return wallColor; } + set + { + wallColor = value; + Refresh(); + } + } + + /// + /// The wall width + /// + private int wallWidth = 2; + + /// + /// Gets or sets the width of the wall. + /// + /// The width of the wall. + [Description("池壁宽度"), Category("自定义")] + public int WallWidth + { + get { return wallWidth; } + set + { + if (value <= 0) + return; + wallWidth = value; + Refresh(); + } + } + + /// + /// The liquid color + /// + private Color liquidColor = Color.FromArgb(3, 169, 243); + + /// + /// Gets or sets the color of the liquid. + /// + /// The color of the liquid. + [Description("液体颜色"), Category("自定义")] + public Color LiquidColor + { + get { return liquidColor; } + set { liquidColor = value; } + } + /// + /// Initializes a new instance of the class. + /// + public UCPond() + { + this.SetStyle(ControlStyles.AllPaintingInWmPaint, true); + this.SetStyle(ControlStyles.DoubleBuffer, true); + this.SetStyle(ControlStyles.ResizeRedraw, true); + this.SetStyle(ControlStyles.Selectable, true); + this.SetStyle(ControlStyles.SupportsTransparentBackColor, true); + this.SetStyle(ControlStyles.UserPaint, true); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; + this.Size = new Size(150, 50); + } + /// + /// 引发 事件。 + /// + /// 包含事件数据的 。 + protected override void OnPaint(PaintEventArgs e) + { + base.OnPaint(e); + if (Height <= 0) + return; + var g = e.Graphics; + g.SetGDIHigh(); + int intHeight = (int)(m_value / maxValue * this.Height); + if (intHeight != 0) + { + g.FillRectangle(new SolidBrush(liquidColor), new Rectangle(0, this.Height - intHeight, this.Width, intHeight)); + } + //划边 + g.FillRectangle(new SolidBrush(wallColor), 0, 0, wallWidth, this.Height); + g.FillRectangle(new SolidBrush(wallColor), 0, this.Height - wallWidth, this.Width, wallWidth); + g.FillRectangle(new SolidBrush(wallColor), this.Width - wallWidth-1, 0, wallWidth, this.Height); + } + } +} diff --git a/UsingControl/HZHControls/Controls/FactoryControls/Thermometer/UCThermometer.cs b/UsingControl/HZHControls/Controls/FactoryControls/Thermometer/UCThermometer.cs new file mode 100644 index 0000000..a7032ae --- /dev/null +++ b/UsingControl/HZHControls/Controls/FactoryControls/Thermometer/UCThermometer.cs @@ -0,0 +1,475 @@ +// *********************************************************************** +// Assembly : HZH_Controls +// Created : 2019-09-10 +// +// *********************************************************************** +// +// Copyright by Huang Zhenghui(黄正辉) All, QQ group:568015492 QQ:623128629 Email:623128629@qq.com +// +// +// Blog: https://www.cnblogs.com/bfyx +// GitHub:https://github.com/kwwwvagaa/NetWinformControl +// gitee:https://gitee.com/kwwwvagaa/net_winform_custom_control.git +// +// If you use this code, please keep this note. +// *********************************************************************** +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using System.Drawing; +using System.Drawing.Drawing2D; +using System.ComponentModel; + +namespace HZH_Controls.Controls +{ + /// + /// Class UCThermometer. + /// Implements the + /// + /// + public class UCThermometer : UserControl + { + /// + /// The glass tube color + /// + private Color glassTubeColor = Color.FromArgb(211, 211, 211); + + /// + /// Gets or sets the color of the glass tube. + /// + /// The color of the glass tube. + [Description("玻璃管颜色"), Category("自定义")] + public Color GlassTubeColor + { + get { return glassTubeColor; } + set + { + glassTubeColor = value; + Refresh(); + } + } + + /// + /// The mercury color + /// + private Color mercuryColor = Color.FromArgb(255, 77, 59); + + /// + /// Gets or sets the color of the mercury. + /// + /// The color of the mercury. + [Description("水印颜色"), Category("自定义")] + public Color MercuryColor + { + get { return mercuryColor; } + set + { + mercuryColor = value; + Refresh(); + } + } + + /// + /// The minimum value + /// + private decimal minValue = 0; + /// + /// 左侧刻度最小值 + /// + /// The minimum value. + [Description("左侧刻度最小值"), Category("自定义")] + public decimal MinValue + { + get { return minValue; } + set + { + minValue = value; + Refresh(); + } + } + + /// + /// The maximum value + /// + private decimal maxValue = 100; + /// + /// 左侧刻度最大值 + /// + /// The maximum value. + [Description("左侧刻度最大值"), Category("自定义")] + public decimal MaxValue + { + get { return maxValue; } + set + { + maxValue = value; + Refresh(); + } + } + + /// + /// The m value + /// + private decimal m_value = 10; + /// + /// 左侧刻度值 + /// + /// The value. + [Description("左侧刻度值"), Category("自定义")] + public decimal Value + { + get { return m_value; } + set + { + m_value = value; + Refresh(); + } + } + + /// + /// The split count + /// + private int splitCount = 0; + /// + /// 刻度分隔份数 + /// + /// The split count. + [Description("刻度分隔份数"), Category("自定义")] + public int SplitCount + { + get { return splitCount; } + set + { + if (value <= 0) + return; + splitCount = value; + Refresh(); + } + } + + /// + /// 获取或设置控件显示的文字的字体。 + /// + /// The font. + /// + /// + /// + /// + /// + /// + [Description("获取或设置控件显示的文字的字体"), Category("自定义")] + public override Font Font + { + get + { + return base.Font; + } + set + { + base.Font = value; + Refresh(); + } + } + + /// + /// 获取或设置控件的前景色。 + /// + /// The color of the fore. + /// + /// + /// + [Description("获取或设置控件的文字及刻度颜色"), Category("自定义")] + public override System.Drawing.Color ForeColor + { + get + { + return base.ForeColor; + } + set + { + base.ForeColor = value; + Refresh(); + } + } + + /// + /// The left temperature unit + /// + private TemperatureUnit leftTemperatureUnit = TemperatureUnit.C; + /// + /// 左侧刻度单位,不可为none + /// + /// The left temperature unit. + [Description("左侧刻度单位,不可为none"), Category("自定义")] + public TemperatureUnit LeftTemperatureUnit + { + get { return leftTemperatureUnit; } + set + { + if (value == TemperatureUnit.None) + return; + leftTemperatureUnit = value; + Refresh(); + } + } + + /// + /// The right temperature unit + /// + private TemperatureUnit rightTemperatureUnit = TemperatureUnit.C; + /// + /// 右侧刻度单位,当为none时,不显示 + /// + /// The right temperature unit. + [Description("右侧刻度单位,当为none时,不显示"), Category("自定义")] + public TemperatureUnit RightTemperatureUnit + { + get { return rightTemperatureUnit; } + set + { + rightTemperatureUnit = value; + Refresh(); + } + } + + /// + /// The m rect working + /// + Rectangle m_rectWorking; + /// + /// The m rect left + /// + Rectangle m_rectLeft; + /// + /// The m rect right + /// + Rectangle m_rectRight; + /// + /// Initializes a new instance of the class. + /// + public UCThermometer() + { + this.SetStyle(ControlStyles.AllPaintingInWmPaint, true); + this.SetStyle(ControlStyles.DoubleBuffer, true); + this.SetStyle(ControlStyles.ResizeRedraw, true); + this.SetStyle(ControlStyles.Selectable, true); + this.SetStyle(ControlStyles.SupportsTransparentBackColor, true); + this.SetStyle(ControlStyles.UserPaint, true); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; + this.SizeChanged += UCThermometer_SizeChanged; + this.Size = new Size(70, 200); + } + + /// + /// Handles the SizeChanged event of the UCThermometer control. + /// + /// The source of the event. + /// The instance containing the event data. + void UCThermometer_SizeChanged(object sender, EventArgs e) + { + m_rectWorking = new Rectangle(this.Width / 2 - this.Width / 8, this.Width / 4, this.Width / 4, this.Height - this.Width / 2); + m_rectLeft = new Rectangle(0, m_rectWorking.Top + m_rectWorking.Width / 2, (this.Width - this.Width / 4) / 2 - 2, m_rectWorking.Height - m_rectWorking.Width * 2); + m_rectRight = new Rectangle(this.Width - (this.Width - this.Width / 4) / 2 + 2, m_rectWorking.Top + m_rectWorking.Width / 2, (this.Width - this.Width / 4) / 2 - 2, m_rectWorking.Height - m_rectWorking.Width * 2); + } + + /// + /// 引发 事件。 + /// + /// 包含事件数据的 。 + protected override void OnPaint(PaintEventArgs e) + { + base.OnPaint(e); + var g = e.Graphics; + g.SetGDIHigh(); + + //玻璃管管 + GraphicsPath path = new GraphicsPath(); + path.AddLine(m_rectWorking.Left, m_rectWorking.Bottom, m_rectWorking.Left, m_rectWorking.Top + m_rectWorking.Width / 2); + path.AddArc(new Rectangle(m_rectWorking.Left, m_rectWorking.Top, m_rectWorking.Width, m_rectWorking.Width), 180, 180); + path.AddLine(m_rectWorking.Right, m_rectWorking.Top + m_rectWorking.Width / 2, m_rectWorking.Right, m_rectWorking.Bottom); + path.CloseAllFigures(); + g.FillPath(new SolidBrush(glassTubeColor), path); + + //底部 + var rectDi = new Rectangle(this.Width / 2 - m_rectWorking.Width, m_rectWorking.Bottom - m_rectWorking.Width - 2, m_rectWorking.Width * 2, m_rectWorking.Width * 2); + g.FillEllipse(new SolidBrush(glassTubeColor), rectDi); + g.FillEllipse(new SolidBrush(mercuryColor), new Rectangle(rectDi.Left + 4, rectDi.Top + 4, rectDi.Width - 8, rectDi.Height - 8)); + + //刻度 + decimal decSplit = (maxValue - minValue) / splitCount; + decimal decSplitHeight = m_rectLeft.Height / splitCount; + for (int i = 0; i <= splitCount; i++) + { + g.DrawLine(new Pen(new SolidBrush(ForeColor), 1), new PointF(m_rectLeft.Left + 2, (float)(m_rectLeft.Bottom - decSplitHeight * i)), new PointF(m_rectLeft.Right, (float)(m_rectLeft.Bottom - decSplitHeight * i))); + + var valueLeft = (minValue + decSplit * i).ToString("0.##"); + var sizeLeft = g.MeasureString(valueLeft, Font); + g.DrawString(valueLeft, Font, new SolidBrush(ForeColor), new PointF(m_rectLeft.Left, m_rectLeft.Bottom - (float)decSplitHeight * i - sizeLeft.Height - 1)); + + if (rightTemperatureUnit != TemperatureUnit.None) + { + g.DrawLine(new Pen(new SolidBrush(Color.Black), 1), new PointF(m_rectRight.Left + 2, (float)(m_rectRight.Bottom - decSplitHeight * i)), new PointF(m_rectRight.Right, (float)(m_rectRight.Bottom - decSplitHeight * i))); + var valueRight = GetRightValue(minValue + decSplit * i).ToString("0.##"); + var sizeRight = g.MeasureString(valueRight, Font); + g.DrawString(valueRight, Font, new SolidBrush(ForeColor), new PointF(m_rectRight.Right - sizeRight.Width - 1, m_rectRight.Bottom - (float)decSplitHeight * i - sizeRight.Height - 1)); + } + if (i != splitCount) + { + if (decSplitHeight > 40) + { + var decSp1 = decSplitHeight / 10; + for (int j = 1; j < 10; j++) + { + if (j == 5) + { + g.DrawLine(new Pen(new SolidBrush(ForeColor), 1), new PointF(m_rectLeft.Right - 10, (m_rectLeft.Bottom - (float)decSplitHeight * i - ((float)decSp1 * j))), new PointF(m_rectLeft.Right, (m_rectLeft.Bottom - (float)decSplitHeight * i - ((float)decSp1 * j)))); + if (rightTemperatureUnit != TemperatureUnit.None) + { + g.DrawLine(new Pen(new SolidBrush(ForeColor), 1), new PointF(m_rectRight.Left + 10, (m_rectRight.Bottom - (float)decSplitHeight * i - ((float)decSp1 * j))), new PointF(m_rectRight.Left, (m_rectRight.Bottom - (float)decSplitHeight * i - ((float)decSp1 * j)))); + } + } + else + { + g.DrawLine(new Pen(new SolidBrush(ForeColor), 1), new PointF(m_rectLeft.Right - 5, (m_rectLeft.Bottom - (float)decSplitHeight * i - ((float)decSp1 * j))), new PointF(m_rectLeft.Right, (m_rectLeft.Bottom - (float)decSplitHeight * i - ((float)decSp1 * j)))); + if (rightTemperatureUnit != TemperatureUnit.None) + { + g.DrawLine(new Pen(new SolidBrush(ForeColor), 1), new PointF(m_rectRight.Left + 5, (m_rectRight.Bottom - (float)decSplitHeight * i - ((float)decSp1 * j))), new PointF(m_rectRight.Left, (m_rectRight.Bottom - (float)decSplitHeight * i - ((float)decSp1 * j)))); + } + } + } + } + else if (decSplitHeight > 10) + { + g.DrawLine(new Pen(new SolidBrush(ForeColor), 1), new PointF(m_rectLeft.Right - 5, (m_rectLeft.Bottom - (float)decSplitHeight * i - (float)decSplitHeight / 2)), new PointF(m_rectLeft.Right, (m_rectLeft.Bottom - (float)decSplitHeight * i - (float)decSplitHeight / 2))); + if (rightTemperatureUnit != TemperatureUnit.None) + { + g.DrawLine(new Pen(new SolidBrush(ForeColor), 1), new PointF(m_rectRight.Left + 5, (m_rectRight.Bottom - (float)decSplitHeight * i - (float)decSplitHeight / 2)), new PointF(m_rectRight.Left, (m_rectRight.Bottom - (float)decSplitHeight * i - (float)decSplitHeight / 2))); + } + } + } + } + //单位 + string strLeftUnit = GetUnitChar(leftTemperatureUnit); + g.DrawString(strLeftUnit, Font, new SolidBrush(ForeColor), new PointF(m_rectLeft.Left + 2, 2)); + if (rightTemperatureUnit != TemperatureUnit.None) + { + string strRightUnit = GetUnitChar(rightTemperatureUnit); + var rightSize = g.MeasureString(strRightUnit, Font); + g.DrawString(strRightUnit, Font, new SolidBrush(ForeColor), new PointF(m_rectRight.Right - 2 - rightSize.Width, 2)); + } + //值 + float fltHeightValue = (float)(Value / (maxValue - minValue) * m_rectLeft.Height); + RectangleF rectValue = new RectangleF(m_rectWorking.Left + 4, m_rectLeft.Top + (m_rectLeft.Height - fltHeightValue), m_rectWorking.Width - 8, fltHeightValue + (m_rectWorking.Height - m_rectWorking.Width / 2 - m_rectLeft.Height)); + g.FillRectangle(new SolidBrush(mercuryColor), rectValue); + + + var sizeValue = g.MeasureString(m_value.ToString("0.##"), Font); + g.DrawString(m_value.ToString("0.##"), Font, new SolidBrush(Color.White), new PointF(rectDi.Left + (rectDi.Width - sizeValue.Width) / 2, rectDi.Top + (rectDi.Height - sizeValue.Height) / 2 + 1)); + } + + /// + /// Gets the unit character. + /// + /// The unit. + /// System.String. + private string GetUnitChar(TemperatureUnit unit) + { + string strUnit = "℃"; + switch (unit) + { + case TemperatureUnit.C: + strUnit = "℃"; + break; + case TemperatureUnit.F: + strUnit = "℉"; + break; + case TemperatureUnit.K: + strUnit = "K"; + break; + case TemperatureUnit.R: + strUnit = "°R"; + break; + case TemperatureUnit.Re: + strUnit = "°Re"; + break; + } + return strUnit; + } + + /// + /// Gets the right value. + /// + /// The decimal value. + /// System.Decimal. + private decimal GetRightValue(decimal decValue) + { + //先将左侧的换算为摄氏度 + var dec = decValue; + switch (leftTemperatureUnit) + { + case TemperatureUnit.F: + dec = (decValue - 32) / (9M / 5M); + break; + case TemperatureUnit.K: + dec = decValue - 273; + break; + case TemperatureUnit.R: + dec = decValue / (5M / 9M) - 273.15M; + break; + case TemperatureUnit.Re: + dec = decValue / 1.25M; + break; + default: + break; + } + + switch (rightTemperatureUnit) + { + case TemperatureUnit.C: + return dec; + case TemperatureUnit.F: + return 9M / 5M * dec + 32; + case TemperatureUnit.K: + return dec + 273; + case TemperatureUnit.R: + return (dec + 273.15M) * (5M / 9M); + case TemperatureUnit.Re: + return dec * 1.25M; + } + return decValue; + } + } + + /// + /// Enum TemperatureUnit + /// + public enum TemperatureUnit + { + /// + /// 不显示 + /// + None, + /// + /// 摄氏度 + /// + C, + /// + /// 华氏度 + /// + F, + /// + /// 开氏度 + /// + K, + /// + /// 兰氏度 + /// + R, + /// + /// 列氏度 + /// + Re + } +} diff --git a/UsingControl/HZHControls/Controls/FactoryControls/Valve/UCValve.cs b/UsingControl/HZHControls/Controls/FactoryControls/Valve/UCValve.cs new file mode 100644 index 0000000..aec2221 --- /dev/null +++ b/UsingControl/HZHControls/Controls/FactoryControls/Valve/UCValve.cs @@ -0,0 +1,449 @@ +// *********************************************************************** +// Assembly : HZH_Controls +// Created : 2019-09-06 +// +// *********************************************************************** +// +// Copyright by Huang Zhenghui(黄正辉) All, QQ group:568015492 QQ:623128629 Email:623128629@qq.com +// +// +// Blog: https://www.cnblogs.com/bfyx +// GitHub:https://github.com/kwwwvagaa/NetWinformControl +// gitee:https://gitee.com/kwwwvagaa/net_winform_custom_control.git +// +// If you use this code, please keep this note. +// *********************************************************************** +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using System.Drawing; +using System.Drawing.Drawing2D; +using HZH_Controls.Controls; +using System.ComponentModel; + +namespace HZH_Controls.Controls +{ + /// + /// Class UCValve. + /// Implements the + /// + /// + public class UCValve : UserControl + { + /// + /// Occurs when [open checked]. + /// + [Description("打开状态改变事件"), Category("自定义")] + public event EventHandler OpenChecked; + /// + /// The valve style + /// + private ValveStyle valveStyle = ValveStyle.Horizontal_Top; + + /// + /// Gets or sets the valve style. + /// + /// The valve style. + [Description("阀门样式"), Category("自定义")] + public ValveStyle ValveStyle + { + get { return valveStyle; } + set + { + valveStyle = value; + Refresh(); + } + } + + /// + /// The valve color + /// + private Color valveColor = Color.FromArgb(255, 77, 59); + + /// + /// Gets or sets the color of the valve. + /// + /// The color of the valve. + [Description("阀门颜色"), Category("自定义")] + public Color ValveColor + { + get { return valveColor; } + set + { + valveColor = value; + Refresh(); + } + } + + /// + /// The switch color + /// + private Color switchColor = Color.FromArgb(232, 30, 99); + + /// + /// Gets or sets the color of the switch. + /// + /// The color of the switch. + [Description("开关把手颜色"), Category("自定义")] + public Color SwitchColor + { + get { return switchColor; } + set + { + switchColor = value; + Refresh(); + } + } + + /// + /// The axis color + /// + private Color axisColor = Color.FromArgb(3, 169, 243); + + /// + /// Gets or sets the color of the axis. + /// + /// The color of the axis. + [Description("轴颜色"), Category("自定义")] + public Color AxisColor + { + get { return axisColor; } + set + { + axisColor = value; + Refresh(); + } + } + + /// + /// The asis bottom color + /// + private Color asisBottomColor = Color.FromArgb(3, 169, 243); + + /// + /// Gets or sets the color of the asis bottom. + /// + /// The color of the asis bottom. + [Description("轴底座颜色"), Category("自定义")] + public Color AsisBottomColor + { + get { return asisBottomColor; } + set { asisBottomColor = value; } + } + + /// + /// The opened + /// + private bool opened = true; + + /// + /// Gets or sets a value indicating whether this is opened. + /// + /// true if opened; otherwise, false. + [Description("是否打开"), Category("自定义")] + public bool Opened + { + get { return opened; } + set + { + opened = value; + Refresh(); + if (OpenChecked != null) + { + OpenChecked(this, null); + } + } + } + + /// + /// The liquid direction + /// + private LiquidDirection liquidDirection = LiquidDirection.Forward; + + /// + /// Gets or sets the liquid direction. + /// + /// The liquid direction. + [Description("液体流动方向"), Category("自定义")] + public LiquidDirection LiquidDirection + { + get { return liquidDirection; } + set + { + liquidDirection = value; + if (value == LiquidDirection.None) + m_timer.Enabled = false; + else + m_timer.Enabled = true; + Refresh(); + } + } + + /// + /// The liquid speed + /// + private int liquidSpeed = 100; + + /// + /// 液体流速,越小,速度越快Gets or sets the liquid speed. + /// + /// The liquid speed. + [Description("液体流速,越小,速度越快"), Category("自定义")] + public int LiquidSpeed + { + get { return liquidSpeed; } + set + { + if (value <= 0) + return; + liquidSpeed = value; + m_timer.Interval = value; + } + } + + /// + /// The liquid color + /// + private Color liquidColor = Color.FromArgb(3, 169, 243); + + /// + /// Gets or sets the color of the liquid. + /// + /// The color of the liquid. + [Description("液体颜色"), Category("自定义")] + public Color LiquidColor + { + get { return liquidColor; } + set + { + liquidColor = value; + if (liquidDirection != LiquidDirection.None) + Refresh(); + } + } + /// + /// The m timer + /// + Timer m_timer; + /// + /// The int line left + /// + int intLineLeft = 0; + + /// + /// Initializes a new instance of the class. + /// + public UCValve() + { + this.SetStyle(ControlStyles.AllPaintingInWmPaint, true); + this.SetStyle(ControlStyles.DoubleBuffer, true); + this.SetStyle(ControlStyles.ResizeRedraw, true); + this.SetStyle(ControlStyles.Selectable, true); + this.SetStyle(ControlStyles.SupportsTransparentBackColor, true); + this.SetStyle(ControlStyles.UserPaint, true); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; + this.Size = new Size(120, 100); + m_timer = new Timer(); + m_timer.Interval = 100; + m_timer.Tick += timer_Tick; + m_timer.Enabled = true; + } + + /// + /// Handles the Tick event of the timer control. + /// + /// The source of the event. + /// The instance containing the event data. + void timer_Tick(object sender, EventArgs e) + { + intLineLeft += 2; + if (intLineLeft > 12) + intLineLeft = 0; + Refresh(); + } + + + /// + /// 引发 事件。 + /// + /// 包含事件数据的 。 + protected override void OnPaint(PaintEventArgs e) + { + base.OnPaint(e); + var g = e.Graphics; + Rectangle rectGuan = Rectangle.Empty;//管道 + Rectangle rectJK1 = Rectangle.Empty;//接口1 + Rectangle rectJK2 = Rectangle.Empty;//接口2 + Rectangle rectZ = Rectangle.Empty;//轴 + GraphicsPath linePath = new GraphicsPath();//管道中心线 + GraphicsPath dzPath = new GraphicsPath();//轴底座 + GraphicsPath bsPath = new GraphicsPath();//开关把手 + switch (valveStyle) + { + case ValveStyle.Horizontal_Top: + rectGuan = new Rectangle(0, this.Height / 2, this.Width, this.Height / 2 - this.Height / 8); + rectJK1 = new Rectangle(this.Height / 8, rectGuan.Top - this.Height / 8, rectGuan.Height / 2, rectGuan.Height + this.Height / 4); + rectJK2 = new Rectangle(rectGuan.Right - this.Height / 8 - rectGuan.Height / 2, rectGuan.Top - this.Height / 8, rectGuan.Height / 2, rectGuan.Height + this.Height / 4); + linePath.AddLine(new Point(rectGuan.Left - 10, rectGuan.Top + rectGuan.Height / 2), new Point(rectGuan.Right + 10, rectGuan.Top + rectGuan.Height / 2)); + rectZ = new Rectangle(rectGuan.Left + (rectGuan.Width - rectGuan.Height / 4) / 2, 10, rectGuan.Height / 4, rectGuan.Top - 10); + Point[] psTop = new Point[] + { + new Point(rectGuan.Left+(rectGuan.Width-rectGuan.Height/2)/2,rectGuan.Top- this.Height / 8- 5 ), + new Point(rectGuan.Right-(rectGuan.Width-rectGuan.Height/2)/2,rectGuan.Top- this.Height / 8- 5 ), + new Point(rectGuan.Right-(rectGuan.Width-rectGuan.Height)/2,rectGuan.Top+2 ), + new Point(rectGuan.Left+(rectGuan.Width-rectGuan.Height)/2,rectGuan.Top +2), + }; + dzPath.AddLines(psTop); + dzPath.CloseAllFigures(); + if (opened) + { + bsPath.AddLine(rectGuan.Left + (rectGuan.Width - rectGuan.Height - 10) / 2, 10 + (rectGuan.Height / 3) / 2, rectGuan.Left + (rectGuan.Width - rectGuan.Height - 10) / 2 + rectGuan.Height + 10, 10 + (rectGuan.Height / 3) / 2); + } + else + { + bsPath.AddLine(new Point(rectGuan.Left + rectGuan.Width / 2 - 3, 1), new Point(rectGuan.Left + rectGuan.Width / 2 + 4, rectGuan.Height + 10)); + } + break; + case ValveStyle.Horizontal_Bottom: + rectGuan = new Rectangle(0, this.Height / 8, this.Width, this.Height / 2 - this.Height / 8); + rectJK1 = new Rectangle(this.Height / 8, rectGuan.Top - this.Height / 8, rectGuan.Height / 2, rectGuan.Height + this.Height / 4); + rectJK2 = new Rectangle(rectGuan.Right - this.Height / 8 - rectGuan.Height / 2, rectGuan.Top - this.Height / 8, rectGuan.Height / 2, rectGuan.Height + this.Height / 4); + linePath.AddLine(new Point(rectGuan.Left - 10, rectGuan.Top + rectGuan.Height / 2), new Point(rectGuan.Right + 10, rectGuan.Top + rectGuan.Height / 2)); + rectZ = new Rectangle(rectGuan.Left + (rectGuan.Width - rectGuan.Height / 4) / 2, rectGuan.Bottom + 10, rectGuan.Height / 4, this.Height - 10 - (rectGuan.Bottom + 10)); + Point[] psBottom = new Point[] + { + new Point(rectGuan.Left+(rectGuan.Width-rectGuan.Height/2)/2,rectGuan.Bottom+ this.Height / 8+ 5 ), + new Point(rectGuan.Right-(rectGuan.Width-rectGuan.Height/2)/2,rectGuan.Bottom+ this.Height / 8+ 5 ), + new Point(rectGuan.Right-(rectGuan.Width-rectGuan.Height)/2,rectGuan.Bottom-2 ), + new Point(rectGuan.Left+(rectGuan.Width-rectGuan.Height)/2,rectGuan.Bottom-2), + }; + dzPath.AddLines(psBottom); + dzPath.CloseAllFigures(); + if (opened) + { + bsPath.AddLine(rectGuan.Left + (rectGuan.Width - rectGuan.Height - 10) / 2, this.Height - (10 + (rectGuan.Height / 3) / 2), rectGuan.Left + (rectGuan.Width - rectGuan.Height - 10) / 2 + rectGuan.Height + 10, this.Height - (10 + (rectGuan.Height / 3) / 2)); + } + else + { + bsPath.AddLine(new Point(rectGuan.Left + rectGuan.Width / 2 - 3, this.Height - 1), new Point(rectGuan.Left + rectGuan.Width / 2 + 4, this.Height - (rectGuan.Height + 10))); + } + break; + case ValveStyle.Vertical_Left: + rectGuan = new Rectangle(this.Width / 8, 0, this.Width / 2 - this.Width / 8, this.Height); + rectJK1 = new Rectangle(0, this.Width / 8, rectGuan.Width + this.Width / 4, rectGuan.Width / 2); + rectJK2 = new Rectangle(0, this.Height - this.Width / 8 - rectGuan.Width / 2, rectGuan.Width + this.Width / 4, rectGuan.Width / 2); + linePath.AddLine(new Point(rectGuan.Left + rectGuan.Width / 2, rectGuan.Top - 10), new Point(rectGuan.Left + rectGuan.Width / 2, rectGuan.Bottom + 10)); + rectZ = new Rectangle(rectGuan.Right, rectGuan.Top + (rectGuan.Height - rectGuan.Width / 4) / 2, rectGuan.Right - 10, rectGuan.Width / 4); + Point[] psLeft = new Point[] + { + new Point(rectGuan.Right+ this.Width / 8+ 5 ,rectGuan.Top + (rectGuan.Height - rectGuan.Width / 2) / 2), + new Point(rectGuan.Right+ this.Width / 8+ 5 ,rectGuan.Top + (rectGuan.Height - rectGuan.Width / 2) / 2+rectGuan.Width / 2), + new Point(rectGuan.Right-2, rectGuan.Top +(rectGuan.Height-rectGuan.Width)/2+rectGuan.Width), + new Point(rectGuan.Right-2, rectGuan.Top +(rectGuan.Height-rectGuan.Width)/2), + }; + dzPath.AddLines(psLeft); + dzPath.CloseAllFigures(); + if (opened) + { + bsPath.AddLine(this.Width - (10 + (rectGuan.Width / 3) / 2), rectGuan.Top + (rectGuan.Height - rectGuan.Width - 10) / 2, this.Width - (10 + (rectGuan.Width / 3) / 2), rectGuan.Top + (rectGuan.Height - rectGuan.Width - 10) / 2 + rectGuan.Width + 10); + } + else + { + bsPath.AddLine(new Point(this.Width - 1, rectGuan.Top + rectGuan.Height / 2 - 3), new Point(this.Width - (rectGuan.Width + 10), rectGuan.Top + rectGuan.Height / 2 + 4)); + } + break; + case ValveStyle.Vertical_Right: + rectGuan = new Rectangle(this.Width - this.Width / 8 - (this.Width / 2 - this.Width / 8), 0, this.Width / 2 - this.Width / 8, this.Height); + rectJK1 = new Rectangle(this.Width - (rectGuan.Width + this.Width / 4), this.Width / 8, rectGuan.Width + this.Width / 4, rectGuan.Width / 2); + rectJK2 = new Rectangle(this.Width - (rectGuan.Width + this.Width / 4), this.Height - this.Width / 8 - rectGuan.Width / 2, rectGuan.Width + this.Width / 4, rectGuan.Width / 2); + linePath.AddLine(new Point(rectGuan.Left + rectGuan.Width / 2, rectGuan.Top - 10), new Point(rectGuan.Left + rectGuan.Width / 2, rectGuan.Bottom + 10)); + rectZ = new Rectangle(10, rectGuan.Top + (rectGuan.Height - rectGuan.Width / 4) / 2, rectGuan.Left - 10, rectGuan.Width / 4); + Point[] psRight = new Point[] + { + new Point(rectGuan.Left- (this.Width / 8+ 5) ,rectGuan.Top + (rectGuan.Height - rectGuan.Width / 2) / 2), + new Point(rectGuan.Left-( this.Width / 8+ 5) ,rectGuan.Top + (rectGuan.Height - rectGuan.Width / 2) / 2+rectGuan.Width / 2), + new Point(rectGuan.Left+2, rectGuan.Top +(rectGuan.Height-rectGuan.Width)/2+rectGuan.Width), + new Point(rectGuan.Left+2, rectGuan.Top +(rectGuan.Height-rectGuan.Width)/2), + }; + dzPath.AddLines(psRight); + dzPath.CloseAllFigures(); + + if (opened) + { + bsPath.AddLine((10 + (rectGuan.Width / 3) / 2), rectGuan.Top + (rectGuan.Height - rectGuan.Width - 10) / 2, (10 + (rectGuan.Width / 3) / 2), rectGuan.Top + (rectGuan.Height - rectGuan.Width - 10) / 2 + rectGuan.Width + 10); + } + else + { + bsPath.AddLine(new Point(1, rectGuan.Top + rectGuan.Height / 2 - 3), new Point((rectGuan.Width + 10), rectGuan.Top + rectGuan.Height / 2 + 4)); + } + break; + } + + //管道 + g.FillRectangle(new SolidBrush(valveColor), rectGuan); + //接口 + g.FillRectangle(new SolidBrush(valveColor), rectJK1); + g.FillRectangle(new SolidBrush(Color.FromArgb(40, Color.White)), rectJK1); + g.FillRectangle(new SolidBrush(valveColor), rectJK2); + g.FillRectangle(new SolidBrush(Color.FromArgb(40, Color.White)), rectJK2); + + + //高亮 + int intCount = (valveStyle.ToString().StartsWith("H") ? rectGuan.Height : rectGuan.Width) / 2 / 4; + for (int i = 0; i < intCount; i++) + { + int _penWidth = (valveStyle.ToString().StartsWith("H") ? rectGuan.Height : rectGuan.Width) / 2 - 4 * i; + if (_penWidth <= 0) + _penWidth = 1; + g.DrawPath(new Pen(new SolidBrush(Color.FromArgb(40, Color.White.R, Color.White.G, Color.White.B)), _penWidth), linePath); + if (_penWidth == 1) + break; + } + + g.SetGDIHigh(); + //轴 + g.FillRectangle(new SolidBrush(axisColor), rectZ); + + //阀门底座 + g.FillPath(new SolidBrush(asisBottomColor), dzPath); + g.FillPath(new SolidBrush(Color.FromArgb(50, Color.White)), dzPath); + + //把手 + g.DrawPath(new Pen(new SolidBrush(switchColor), (valveStyle.ToString().StartsWith("H") ? rectGuan.Height : rectGuan.Width) / 3), bsPath); + + //液体流动 + if (opened) + { + Pen p = new Pen(new SolidBrush(liquidColor), 4); + p.DashPattern = new float[] { 6, 6 }; + p.DashOffset = intLineLeft * (LiquidDirection == LiquidDirection.Forward ? -1 : 1); + g.DrawPath(p, linePath); + } + } + } + + /// + /// Enum ValveStyle + /// + public enum ValveStyle + { + /// + /// 横向,开关在上方 + /// + Horizontal_Top, + /// + /// 横向,开关在下方 + /// + Horizontal_Bottom, + /// + /// 纵向,开关在左侧 + /// + Vertical_Left, + /// + /// 纵向,开关在右侧 + /// + Vertical_Right, + } +} diff --git a/UsingControl/HZHControls/Controls/GraphicalOverlay/GraphicalOverlayComponent.cs b/UsingControl/HZHControls/Controls/GraphicalOverlay/GraphicalOverlayComponent.cs new file mode 100644 index 0000000..67c6ce3 --- /dev/null +++ b/UsingControl/HZHControls/Controls/GraphicalOverlay/GraphicalOverlayComponent.cs @@ -0,0 +1,142 @@ +using System; +using System.ComponentModel; +using System.Drawing; +using System.Windows.Forms; + +namespace HZH_Controls.Controls +{ + [DefaultEvent("Paint")] + public partial class GraphicalOverlayComponent : Component + { + public event EventHandler Paint; + + public GraphicalOverlayComponent() + { + InitializeComponent(); + } + + public GraphicalOverlayComponent(IContainer container) + { + container.Add(this); + + InitializeComponent(); + } + private Control owner; + [Browsable(true), Category("自定义属性"), Description("父控件"), Localizable(true)] + public Control Owner + { + get { return owner; } + set + { + // The owner form cannot be set to null. + if (value == null) + return; + + // The owner form can only be set once. + if (owner != null) + return; + + // Save the form for future reference. + owner = value; + + // Handle the form's Resize event. + owner.Resize += new EventHandler(Form_Resize); + + // Handle the Paint event for each of the controls in the form's hierarchy. + ConnectPaintEventHandlers(owner); + } + } + + private void Form_Resize(object sender, EventArgs e) + { + owner.Invalidate(true); + } + + private void ConnectPaintEventHandlers(Control control) + { + + Type type = control.GetType(); + System.Reflection.PropertyInfo pi = type.GetProperty("DoubleBuffered", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic); + pi.SetValue(control, true, null); + + + control.Paint -= new PaintEventHandler(Control_Paint); + control.Paint += new PaintEventHandler(Control_Paint); + + control.ControlAdded -= new ControlEventHandler(Control_ControlAdded); + control.ControlAdded += new ControlEventHandler(Control_ControlAdded); + + // Recurse the hierarchy. + foreach (Control child in control.Controls) + ConnectPaintEventHandlers(child); + } + + private void Control_ControlAdded(object sender, ControlEventArgs e) + { + // Connect the paint event handler for the new control. + ConnectPaintEventHandlers(e.Control); + } + + private void Control_Paint(object sender, PaintEventArgs e) + { + if (e == null) return; + + // As each control on the form is repainted, this handler is called. + + Control control = sender as Control; + Point location; + + // Determine the location of the control's client area relative to the form's client area. + if (control == owner) + // The form's client area is already form-relative. + location = control.Location; + else + { + // The control may be in a hierarchy, so convert to screen coordinates and then back to form coordinates. + location = owner.PointToClient(control.Parent.PointToScreen(control.Location)); + + // If the control has a border shift the location of the control's client area. + location += new Size((control.Width - control.ClientSize.Width) / 2, (control.Height - control.ClientSize.Height) / 2); + } + + // Translate the location so that we can use form-relative coordinates to draw on the control. + if (control != owner) + e.Graphics.TranslateTransform(-location.X, -location.Y); + + // Fire a paint event. + OnPaint(sender, e); + } + + private void OnPaint(object sender, PaintEventArgs e) + { + // Fire a paint event. + // The paint event will be handled in Form1.graphicalOverlay1_Paint(). + + if (Paint != null) + Paint(sender, e); + } + } +} + +namespace System.Windows.Forms +{ + using System.Drawing; + + public static class Extensions + { + public static Rectangle Coordinates(this Control control) + { + // Extend System.Windows.Forms.Control to have a Coordinates property. + // The Coordinates property contains the control's form-relative location. + Rectangle coordinates; + Form form = (Form)control.TopLevelControl; + + if (control == form) + coordinates = form.ClientRectangle; + else + coordinates = form.RectangleToClient(control.Parent.RectangleToScreen(control.Bounds)); + + return coordinates; + } + } +} diff --git a/UsingControl/HZHControls/Controls/GraphicalOverlay/GraphicalOverlayComponent.designer.cs b/UsingControl/HZHControls/Controls/GraphicalOverlay/GraphicalOverlayComponent.designer.cs new file mode 100644 index 0000000..bec8ae7 --- /dev/null +++ b/UsingControl/HZHControls/Controls/GraphicalOverlay/GraphicalOverlayComponent.designer.cs @@ -0,0 +1,36 @@ +namespace HZH_Controls.Controls +{ + partial class GraphicalOverlayComponent + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Component Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + components = new System.ComponentModel.Container(); + } + + #endregion + } +} diff --git a/UsingControl/HZHControls/Controls/KeyBord/UCKeyBorderAll.Designer.cs b/UsingControl/HZHControls/Controls/KeyBord/UCKeyBorderAll.Designer.cs new file mode 100644 index 0000000..100598c --- /dev/null +++ b/UsingControl/HZHControls/Controls/KeyBord/UCKeyBorderAll.Designer.cs @@ -0,0 +1,2467 @@ +// *********************************************************************** +// Assembly : HZH_Controls +// Created : 08-08-2019 +// +// *********************************************************************** +// +// Copyright by Huang Zhenghui(黄正辉) All, QQ group:568015492 QQ:623128629 Email:623128629@qq.com +// +// +// Blog: https://www.cnblogs.com/bfyx +// GitHub:https://github.com/kwwwvagaa/NetWinformControl +// gitee:https://gitee.com/kwwwvagaa/net_winform_custom_control.git +// +// If you use this code, please keep this note. +// *********************************************************************** +namespace HZH_Controls.Controls +{ + /// + /// Class UCKeyBorderAll. + /// Implements the + /// + /// + partial class UCKeyBorderAll + { + /// + /// 必需的设计器变量。 + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 清理所有正在使用的资源。 + /// + /// 如果应释放托管资源,为 true;否则为 false。 + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region 组件设计器生成的代码 + + /// + /// 设计器支持所需的方法 - 不要 + /// 使用代码编辑器修改此方法的内容。 + /// + private void InitializeComponent() + { + this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel(); + this.panel39 = new System.Windows.Forms.Panel(); + this.label39 = new System.Windows.Forms.Label(); + this.ucSplitLine_V39 = new HZH_Controls.Controls.UCSplitLine_V(); + this.panel37 = new System.Windows.Forms.Panel(); + this.label37 = new System.Windows.Forms.Label(); + this.ucSplitLine_V37 = new HZH_Controls.Controls.UCSplitLine_V(); + this.panel36 = new System.Windows.Forms.Panel(); + this.label36 = new System.Windows.Forms.Label(); + this.ucSplitLine_V36 = new HZH_Controls.Controls.UCSplitLine_V(); + this.panel35 = new System.Windows.Forms.Panel(); + this.label35 = new System.Windows.Forms.Label(); + this.panel33 = new System.Windows.Forms.Panel(); + this.label33 = new System.Windows.Forms.Label(); + this.ucSplitLine_V33 = new HZH_Controls.Controls.UCSplitLine_V(); + this.panel30 = new System.Windows.Forms.Panel(); + this.label30 = new System.Windows.Forms.Label(); + this.ucSplitLine_H30 = new HZH_Controls.Controls.UCSplitLine_H(); + this.ucSplitLine_V30 = new HZH_Controls.Controls.UCSplitLine_V(); + this.panel29 = new System.Windows.Forms.Panel(); + this.label29 = new System.Windows.Forms.Label(); + this.ucSplitLine_H29 = new HZH_Controls.Controls.UCSplitLine_H(); + this.ucSplitLine_V29 = new HZH_Controls.Controls.UCSplitLine_V(); + this.panel28 = new System.Windows.Forms.Panel(); + this.label28 = new System.Windows.Forms.Label(); + this.ucSplitLine_H28 = new HZH_Controls.Controls.UCSplitLine_H(); + this.ucSplitLine_V28 = new HZH_Controls.Controls.UCSplitLine_V(); + this.panel27 = new System.Windows.Forms.Panel(); + this.label27 = new System.Windows.Forms.Label(); + this.ucSplitLine_H27 = new HZH_Controls.Controls.UCSplitLine_H(); + this.ucSplitLine_V27 = new HZH_Controls.Controls.UCSplitLine_V(); + this.panel26 = new System.Windows.Forms.Panel(); + this.label26 = new System.Windows.Forms.Label(); + this.ucSplitLine_H26 = new HZH_Controls.Controls.UCSplitLine_H(); + this.ucSplitLine_V26 = new HZH_Controls.Controls.UCSplitLine_V(); + this.panel25 = new System.Windows.Forms.Panel(); + this.label25 = new System.Windows.Forms.Label(); + this.ucSplitLine_H25 = new HZH_Controls.Controls.UCSplitLine_H(); + this.panel23 = new System.Windows.Forms.Panel(); + this.label23 = new System.Windows.Forms.Label(); + this.ucSplitLine_H23 = new HZH_Controls.Controls.UCSplitLine_H(); + this.ucSplitLine_V23 = new HZH_Controls.Controls.UCSplitLine_V(); + this.panel22 = new System.Windows.Forms.Panel(); + this.label22 = new System.Windows.Forms.Label(); + this.ucSplitLine_H22 = new HZH_Controls.Controls.UCSplitLine_H(); + this.ucSplitLine_V22 = new HZH_Controls.Controls.UCSplitLine_V(); + this.panel21 = new System.Windows.Forms.Panel(); + this.label21 = new System.Windows.Forms.Label(); + this.ucSplitLine_H21 = new HZH_Controls.Controls.UCSplitLine_H(); + this.ucSplitLine_V21 = new HZH_Controls.Controls.UCSplitLine_V(); + this.panel20 = new System.Windows.Forms.Panel(); + this.label20 = new System.Windows.Forms.Label(); + this.ucSplitLine_H20 = new HZH_Controls.Controls.UCSplitLine_H(); + this.ucSplitLine_V20 = new HZH_Controls.Controls.UCSplitLine_V(); + this.panel19 = new System.Windows.Forms.Panel(); + this.label19 = new System.Windows.Forms.Label(); + this.ucSplitLine_H19 = new HZH_Controls.Controls.UCSplitLine_H(); + this.ucSplitLine_V19 = new HZH_Controls.Controls.UCSplitLine_V(); + this.panel18 = new System.Windows.Forms.Panel(); + this.label18 = new System.Windows.Forms.Label(); + this.ucSplitLine_H18 = new HZH_Controls.Controls.UCSplitLine_H(); + this.ucSplitLine_V18 = new HZH_Controls.Controls.UCSplitLine_V(); + this.panel17 = new System.Windows.Forms.Panel(); + this.label17 = new System.Windows.Forms.Label(); + this.ucSplitLine_H17 = new HZH_Controls.Controls.UCSplitLine_H(); + this.ucSplitLine_V17 = new HZH_Controls.Controls.UCSplitLine_V(); + this.panel16 = new System.Windows.Forms.Panel(); + this.label16 = new System.Windows.Forms.Label(); + this.ucSplitLine_H16 = new HZH_Controls.Controls.UCSplitLine_H(); + this.ucSplitLine_V16 = new HZH_Controls.Controls.UCSplitLine_V(); + this.panel15 = new System.Windows.Forms.Panel(); + this.label15 = new System.Windows.Forms.Label(); + this.ucSplitLine_H15 = new HZH_Controls.Controls.UCSplitLine_H(); + this.ucSplitLine_V15 = new HZH_Controls.Controls.UCSplitLine_V(); + this.panel14 = new System.Windows.Forms.Panel(); + this.label14 = new System.Windows.Forms.Label(); + this.ucSplitLine_H14 = new HZH_Controls.Controls.UCSplitLine_H(); + this.panel13 = new System.Windows.Forms.Panel(); + this.label13 = new System.Windows.Forms.Label(); + this.ucSplitLine_H13 = new HZH_Controls.Controls.UCSplitLine_H(); + this.ucSplitLine_V13 = new HZH_Controls.Controls.UCSplitLine_V(); + this.panel12 = new System.Windows.Forms.Panel(); + this.label12 = new System.Windows.Forms.Label(); + this.ucSplitLine_H12 = new HZH_Controls.Controls.UCSplitLine_H(); + this.ucSplitLine_V12 = new HZH_Controls.Controls.UCSplitLine_V(); + this.panel11 = new System.Windows.Forms.Panel(); + this.label11 = new System.Windows.Forms.Label(); + this.ucSplitLine_H11 = new HZH_Controls.Controls.UCSplitLine_H(); + this.ucSplitLine_V11 = new HZH_Controls.Controls.UCSplitLine_V(); + this.panel10 = new System.Windows.Forms.Panel(); + this.label10 = new System.Windows.Forms.Label(); + this.ucSplitLine_H10 = new HZH_Controls.Controls.UCSplitLine_H(); + this.ucSplitLine_V10 = new HZH_Controls.Controls.UCSplitLine_V(); + this.panel9 = new System.Windows.Forms.Panel(); + this.label9 = new System.Windows.Forms.Label(); + this.ucSplitLine_H9 = new HZH_Controls.Controls.UCSplitLine_H(); + this.ucSplitLine_V9 = new HZH_Controls.Controls.UCSplitLine_V(); + this.panel8 = new System.Windows.Forms.Panel(); + this.label8 = new System.Windows.Forms.Label(); + this.ucSplitLine_H8 = new HZH_Controls.Controls.UCSplitLine_H(); + this.ucSplitLine_V8 = new HZH_Controls.Controls.UCSplitLine_V(); + this.panel7 = new System.Windows.Forms.Panel(); + this.label7 = new System.Windows.Forms.Label(); + this.ucSplitLine_H7 = new HZH_Controls.Controls.UCSplitLine_H(); + this.ucSplitLine_V7 = new HZH_Controls.Controls.UCSplitLine_V(); + this.panel6 = new System.Windows.Forms.Panel(); + this.label6 = new System.Windows.Forms.Label(); + this.ucSplitLine_H6 = new HZH_Controls.Controls.UCSplitLine_H(); + this.ucSplitLine_V6 = new HZH_Controls.Controls.UCSplitLine_V(); + this.panel5 = new System.Windows.Forms.Panel(); + this.label5 = new System.Windows.Forms.Label(); + this.ucSplitLine_H5 = new HZH_Controls.Controls.UCSplitLine_H(); + this.ucSplitLine_V5 = new HZH_Controls.Controls.UCSplitLine_V(); + this.panel4 = new System.Windows.Forms.Panel(); + this.label4 = new System.Windows.Forms.Label(); + this.ucSplitLine_H4 = new HZH_Controls.Controls.UCSplitLine_H(); + this.panel3 = new System.Windows.Forms.Panel(); + this.label3 = new System.Windows.Forms.Label(); + this.ucSplitLine_H3 = new HZH_Controls.Controls.UCSplitLine_H(); + this.ucSplitLine_V3 = new HZH_Controls.Controls.UCSplitLine_V(); + this.panel2 = new System.Windows.Forms.Panel(); + this.label2 = new System.Windows.Forms.Label(); + this.ucSplitLine_H2 = new HZH_Controls.Controls.UCSplitLine_H(); + this.ucSplitLine_V2 = new HZH_Controls.Controls.UCSplitLine_V(); + this.panel1 = new System.Windows.Forms.Panel(); + this.label1 = new System.Windows.Forms.Label(); + this.ucSplitLine_H1 = new HZH_Controls.Controls.UCSplitLine_H(); + this.ucSplitLine_V1 = new HZH_Controls.Controls.UCSplitLine_V(); + this.ucSplitLine_V4 = new HZH_Controls.Controls.UCSplitLine_V(); + this.ucSplitLine_V14 = new HZH_Controls.Controls.UCSplitLine_V(); + this.ucSplitLine_H24 = new HZH_Controls.Controls.UCSplitLine_H(); + this.ucSplitLine_H31 = new HZH_Controls.Controls.UCSplitLine_H(); + this.tableLayoutPanel2.SuspendLayout(); + this.panel39.SuspendLayout(); + this.panel37.SuspendLayout(); + this.panel36.SuspendLayout(); + this.panel35.SuspendLayout(); + this.panel33.SuspendLayout(); + this.panel30.SuspendLayout(); + this.panel29.SuspendLayout(); + this.panel28.SuspendLayout(); + this.panel27.SuspendLayout(); + this.panel26.SuspendLayout(); + this.panel25.SuspendLayout(); + this.panel23.SuspendLayout(); + this.panel22.SuspendLayout(); + this.panel21.SuspendLayout(); + this.panel20.SuspendLayout(); + this.panel19.SuspendLayout(); + this.panel18.SuspendLayout(); + this.panel17.SuspendLayout(); + this.panel16.SuspendLayout(); + this.panel15.SuspendLayout(); + this.panel14.SuspendLayout(); + this.panel13.SuspendLayout(); + this.panel12.SuspendLayout(); + this.panel11.SuspendLayout(); + this.panel10.SuspendLayout(); + this.panel9.SuspendLayout(); + this.panel8.SuspendLayout(); + this.panel7.SuspendLayout(); + this.panel6.SuspendLayout(); + this.panel5.SuspendLayout(); + this.panel4.SuspendLayout(); + this.panel3.SuspendLayout(); + this.panel2.SuspendLayout(); + this.panel1.SuspendLayout(); + this.SuspendLayout(); + // + // tableLayoutPanel2 + // + this.tableLayoutPanel2.ColumnCount = 10; + this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 10F)); + this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 10F)); + this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 10F)); + this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 10F)); + this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 10F)); + this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 10F)); + this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 10F)); + this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 10F)); + this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 10F)); + this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 10F)); + this.tableLayoutPanel2.Controls.Add(this.panel39, 2, 3); + this.tableLayoutPanel2.Controls.Add(this.panel37, 0, 3); + this.tableLayoutPanel2.Controls.Add(this.panel36, 1, 3); + this.tableLayoutPanel2.Controls.Add(this.panel35, 8, 3); + this.tableLayoutPanel2.Controls.Add(this.panel33, 7, 3); + this.tableLayoutPanel2.Controls.Add(this.panel30, 3, 2); + this.tableLayoutPanel2.Controls.Add(this.panel29, 4, 2); + this.tableLayoutPanel2.Controls.Add(this.panel28, 2, 2); + this.tableLayoutPanel2.Controls.Add(this.panel27, 0, 2); + this.tableLayoutPanel2.Controls.Add(this.panel26, 1, 2); + this.tableLayoutPanel2.Controls.Add(this.panel25, 8, 2); + this.tableLayoutPanel2.Controls.Add(this.panel23, 7, 2); + this.tableLayoutPanel2.Controls.Add(this.panel22, 5, 2); + this.tableLayoutPanel2.Controls.Add(this.panel21, 6, 2); + this.tableLayoutPanel2.Controls.Add(this.panel20, 3, 1); + this.tableLayoutPanel2.Controls.Add(this.panel19, 4, 1); + this.tableLayoutPanel2.Controls.Add(this.panel18, 2, 1); + this.tableLayoutPanel2.Controls.Add(this.panel17, 0, 1); + this.tableLayoutPanel2.Controls.Add(this.panel16, 1, 1); + this.tableLayoutPanel2.Controls.Add(this.panel15, 8, 1); + this.tableLayoutPanel2.Controls.Add(this.panel14, 9, 1); + this.tableLayoutPanel2.Controls.Add(this.panel13, 7, 1); + this.tableLayoutPanel2.Controls.Add(this.panel12, 5, 1); + this.tableLayoutPanel2.Controls.Add(this.panel11, 6, 1); + this.tableLayoutPanel2.Controls.Add(this.panel10, 4, 0); + this.tableLayoutPanel2.Controls.Add(this.panel9, 3, 0); + this.tableLayoutPanel2.Controls.Add(this.panel8, 2, 0); + this.tableLayoutPanel2.Controls.Add(this.panel7, 0, 0); + this.tableLayoutPanel2.Controls.Add(this.panel6, 1, 0); + this.tableLayoutPanel2.Controls.Add(this.panel5, 8, 0); + this.tableLayoutPanel2.Controls.Add(this.panel4, 9, 0); + this.tableLayoutPanel2.Controls.Add(this.panel3, 7, 0); + this.tableLayoutPanel2.Controls.Add(this.panel2, 5, 0); + this.tableLayoutPanel2.Controls.Add(this.panel1, 6, 0); + this.tableLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel2.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.tableLayoutPanel2.Location = new System.Drawing.Point(1, 1); + this.tableLayoutPanel2.Margin = new System.Windows.Forms.Padding(0); + this.tableLayoutPanel2.Name = "tableLayoutPanel2"; + this.tableLayoutPanel2.RowCount = 4; + this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F)); + this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F)); + this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F)); + this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F)); + this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F)); + this.tableLayoutPanel2.Size = new System.Drawing.Size(669, 271); + this.tableLayoutPanel2.TabIndex = 1; + // + // panel39 + // + this.tableLayoutPanel2.SetColumnSpan(this.panel39, 5); + this.panel39.Controls.Add(this.label39); + this.panel39.Controls.Add(this.ucSplitLine_V39); + this.panel39.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel39.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.panel39.Location = new System.Drawing.Point(132, 201); + this.panel39.Margin = new System.Windows.Forms.Padding(0); + this.panel39.Name = "panel39"; + this.panel39.Size = new System.Drawing.Size(330, 70); + this.panel39.TabIndex = 39; + // + // label39 + // + this.label39.Dock = System.Windows.Forms.DockStyle.Fill; + this.label39.Font = new System.Drawing.Font("微软雅黑", 20F); + this.label39.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.label39.Location = new System.Drawing.Point(0, 0); + this.label39.Name = "label39"; + this.label39.Size = new System.Drawing.Size(329, 70); + this.label39.TabIndex = 2; + this.label39.Tag = "空格"; + this.label39.Text = "空格"; + this.label39.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label39.MouseDown += new System.Windows.Forms.MouseEventHandler(this.KeyDown_MouseDown); + // + // ucSplitLine_V39 + // + this.ucSplitLine_V39.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_V39.Dock = System.Windows.Forms.DockStyle.Right; + this.ucSplitLine_V39.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_V39.Location = new System.Drawing.Point(329, 0); + this.ucSplitLine_V39.Name = "ucSplitLine_V39"; + this.ucSplitLine_V39.Size = new System.Drawing.Size(1, 70); + this.ucSplitLine_V39.TabIndex = 0; + this.ucSplitLine_V39.TabStop = false; + // + // panel37 + // + this.panel37.Controls.Add(this.label37); + this.panel37.Controls.Add(this.ucSplitLine_V37); + this.panel37.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel37.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.panel37.Location = new System.Drawing.Point(0, 201); + this.panel37.Margin = new System.Windows.Forms.Padding(0); + this.panel37.Name = "panel37"; + this.panel37.Size = new System.Drawing.Size(66, 70); + this.panel37.TabIndex = 37; + // + // label37 + // + this.label37.Dock = System.Windows.Forms.DockStyle.Fill; + this.label37.Font = new System.Drawing.Font("Arial Unicode MS", 15F); + this.label37.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.label37.Location = new System.Drawing.Point(0, 0); + this.label37.Name = "label37"; + this.label37.Size = new System.Drawing.Size(65, 70); + this.label37.TabIndex = 2; + this.label37.Tag = "abc."; + this.label37.Text = "?123"; + this.label37.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label37.MouseDown += new System.Windows.Forms.MouseEventHandler(this.KeyDown_MouseDown); + // + // ucSplitLine_V37 + // + this.ucSplitLine_V37.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_V37.Dock = System.Windows.Forms.DockStyle.Right; + this.ucSplitLine_V37.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_V37.Location = new System.Drawing.Point(65, 0); + this.ucSplitLine_V37.Name = "ucSplitLine_V37"; + this.ucSplitLine_V37.Size = new System.Drawing.Size(1, 70); + this.ucSplitLine_V37.TabIndex = 0; + this.ucSplitLine_V37.TabStop = false; + // + // panel36 + // + this.panel36.Controls.Add(this.label36); + this.panel36.Controls.Add(this.ucSplitLine_V36); + this.panel36.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel36.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.panel36.Location = new System.Drawing.Point(66, 201); + this.panel36.Margin = new System.Windows.Forms.Padding(0); + this.panel36.Name = "panel36"; + this.panel36.Size = new System.Drawing.Size(66, 70); + this.panel36.TabIndex = 36; + // + // label36 + // + this.label36.Dock = System.Windows.Forms.DockStyle.Fill; + this.label36.Font = new System.Drawing.Font("Arial Unicode MS", 30F); + this.label36.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.label36.Location = new System.Drawing.Point(0, 0); + this.label36.Name = "label36"; + this.label36.Size = new System.Drawing.Size(65, 70); + this.label36.TabIndex = 2; + this.label36.Tag = "0"; + this.label36.Text = "."; + this.label36.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label36.MouseDown += new System.Windows.Forms.MouseEventHandler(this.KeyDown_MouseDown); + // + // ucSplitLine_V36 + // + this.ucSplitLine_V36.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_V36.Dock = System.Windows.Forms.DockStyle.Right; + this.ucSplitLine_V36.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_V36.Location = new System.Drawing.Point(65, 0); + this.ucSplitLine_V36.Name = "ucSplitLine_V36"; + this.ucSplitLine_V36.Size = new System.Drawing.Size(1, 70); + this.ucSplitLine_V36.TabIndex = 0; + this.ucSplitLine_V36.TabStop = false; + // + // panel35 + // + this.tableLayoutPanel2.SetColumnSpan(this.panel35, 2); + this.panel35.Controls.Add(this.label35); + this.panel35.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel35.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.panel35.Location = new System.Drawing.Point(528, 201); + this.panel35.Margin = new System.Windows.Forms.Padding(0); + this.panel35.Name = "panel35"; + this.panel35.Size = new System.Drawing.Size(141, 70); + this.panel35.TabIndex = 35; + // + // label35 + // + this.label35.Dock = System.Windows.Forms.DockStyle.Fill; + this.label35.Font = new System.Drawing.Font("微软雅黑", 20F); + this.label35.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.label35.Location = new System.Drawing.Point(0, 0); + this.label35.Name = "label35"; + this.label35.Size = new System.Drawing.Size(141, 70); + this.label35.TabIndex = 2; + this.label35.Tag = "回车"; + this.label35.Text = "回车"; + this.label35.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label35.MouseDown += new System.Windows.Forms.MouseEventHandler(this.KeyDown_MouseDown); + // + // panel33 + // + this.panel33.Controls.Add(this.label33); + this.panel33.Controls.Add(this.ucSplitLine_V33); + this.panel33.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel33.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.panel33.Location = new System.Drawing.Point(462, 201); + this.panel33.Margin = new System.Windows.Forms.Padding(0); + this.panel33.Name = "panel33"; + this.panel33.Size = new System.Drawing.Size(66, 70); + this.panel33.TabIndex = 33; + // + // label33 + // + this.label33.Dock = System.Windows.Forms.DockStyle.Fill; + this.label33.Font = new System.Drawing.Font("微软雅黑", 15F); + this.label33.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.label33.Location = new System.Drawing.Point(0, 0); + this.label33.Name = "label33"; + this.label33.Size = new System.Drawing.Size(65, 70); + this.label33.TabIndex = 2; + this.label33.Tag = "收起"; + this.label33.Text = "收起"; + this.label33.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label33.MouseDown += new System.Windows.Forms.MouseEventHandler(this.KeyDown_MouseDown); + // + // ucSplitLine_V33 + // + this.ucSplitLine_V33.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_V33.Dock = System.Windows.Forms.DockStyle.Right; + this.ucSplitLine_V33.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_V33.Location = new System.Drawing.Point(65, 0); + this.ucSplitLine_V33.Name = "ucSplitLine_V33"; + this.ucSplitLine_V33.Size = new System.Drawing.Size(1, 70); + this.ucSplitLine_V33.TabIndex = 0; + this.ucSplitLine_V33.TabStop = false; + // + // panel30 + // + this.panel30.Controls.Add(this.label30); + this.panel30.Controls.Add(this.ucSplitLine_H30); + this.panel30.Controls.Add(this.ucSplitLine_V30); + this.panel30.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel30.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.panel30.Location = new System.Drawing.Point(198, 134); + this.panel30.Margin = new System.Windows.Forms.Padding(0); + this.panel30.Name = "panel30"; + this.panel30.Size = new System.Drawing.Size(66, 67); + this.panel30.TabIndex = 30; + // + // label30 + // + this.label30.Dock = System.Windows.Forms.DockStyle.Fill; + this.label30.Font = new System.Drawing.Font("Arial Unicode MS", 30F); + this.label30.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.label30.Location = new System.Drawing.Point(0, 0); + this.label30.Name = "label30"; + this.label30.Size = new System.Drawing.Size(65, 66); + this.label30.TabIndex = 2; + this.label30.Tag = "3"; + this.label30.Text = "c"; + this.label30.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label30.MouseDown += new System.Windows.Forms.MouseEventHandler(this.KeyDown_MouseDown); + // + // ucSplitLine_H30 + // + this.ucSplitLine_H30.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_H30.Dock = System.Windows.Forms.DockStyle.Bottom; + this.ucSplitLine_H30.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_H30.Location = new System.Drawing.Point(0, 66); + this.ucSplitLine_H30.Name = "ucSplitLine_H30"; + this.ucSplitLine_H30.Size = new System.Drawing.Size(65, 1); + this.ucSplitLine_H30.TabIndex = 1; + this.ucSplitLine_H30.TabStop = false; + // + // ucSplitLine_V30 + // + this.ucSplitLine_V30.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_V30.Dock = System.Windows.Forms.DockStyle.Right; + this.ucSplitLine_V30.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_V30.Location = new System.Drawing.Point(65, 0); + this.ucSplitLine_V30.Name = "ucSplitLine_V30"; + this.ucSplitLine_V30.Size = new System.Drawing.Size(1, 67); + this.ucSplitLine_V30.TabIndex = 0; + this.ucSplitLine_V30.TabStop = false; + // + // panel29 + // + this.panel29.Controls.Add(this.label29); + this.panel29.Controls.Add(this.ucSplitLine_H29); + this.panel29.Controls.Add(this.ucSplitLine_V29); + this.panel29.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel29.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.panel29.Location = new System.Drawing.Point(264, 134); + this.panel29.Margin = new System.Windows.Forms.Padding(0); + this.panel29.Name = "panel29"; + this.panel29.Size = new System.Drawing.Size(66, 67); + this.panel29.TabIndex = 29; + // + // label29 + // + this.label29.Dock = System.Windows.Forms.DockStyle.Fill; + this.label29.Font = new System.Drawing.Font("Arial Unicode MS", 30F); + this.label29.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.label29.Location = new System.Drawing.Point(0, 0); + this.label29.Name = "label29"; + this.label29.Size = new System.Drawing.Size(65, 66); + this.label29.TabIndex = 2; + this.label29.Tag = ":"; + this.label29.Text = "v"; + this.label29.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label29.MouseDown += new System.Windows.Forms.MouseEventHandler(this.KeyDown_MouseDown); + // + // ucSplitLine_H29 + // + this.ucSplitLine_H29.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_H29.Dock = System.Windows.Forms.DockStyle.Bottom; + this.ucSplitLine_H29.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_H29.Location = new System.Drawing.Point(0, 66); + this.ucSplitLine_H29.Name = "ucSplitLine_H29"; + this.ucSplitLine_H29.Size = new System.Drawing.Size(65, 1); + this.ucSplitLine_H29.TabIndex = 1; + this.ucSplitLine_H29.TabStop = false; + // + // ucSplitLine_V29 + // + this.ucSplitLine_V29.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_V29.Dock = System.Windows.Forms.DockStyle.Right; + this.ucSplitLine_V29.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_V29.Location = new System.Drawing.Point(65, 0); + this.ucSplitLine_V29.Name = "ucSplitLine_V29"; + this.ucSplitLine_V29.Size = new System.Drawing.Size(1, 67); + this.ucSplitLine_V29.TabIndex = 0; + this.ucSplitLine_V29.TabStop = false; + // + // panel28 + // + this.panel28.Controls.Add(this.label28); + this.panel28.Controls.Add(this.ucSplitLine_H28); + this.panel28.Controls.Add(this.ucSplitLine_V28); + this.panel28.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel28.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.panel28.Location = new System.Drawing.Point(132, 134); + this.panel28.Margin = new System.Windows.Forms.Padding(0); + this.panel28.Name = "panel28"; + this.panel28.Size = new System.Drawing.Size(66, 67); + this.panel28.TabIndex = 28; + // + // label28 + // + this.label28.Dock = System.Windows.Forms.DockStyle.Fill; + this.label28.Font = new System.Drawing.Font("Arial Unicode MS", 30F); + this.label28.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.label28.Location = new System.Drawing.Point(0, 0); + this.label28.Name = "label28"; + this.label28.Size = new System.Drawing.Size(65, 66); + this.label28.TabIndex = 2; + this.label28.Tag = "2"; + this.label28.Text = "x"; + this.label28.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label28.MouseDown += new System.Windows.Forms.MouseEventHandler(this.KeyDown_MouseDown); + // + // ucSplitLine_H28 + // + this.ucSplitLine_H28.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_H28.Dock = System.Windows.Forms.DockStyle.Bottom; + this.ucSplitLine_H28.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_H28.Location = new System.Drawing.Point(0, 66); + this.ucSplitLine_H28.Name = "ucSplitLine_H28"; + this.ucSplitLine_H28.Size = new System.Drawing.Size(65, 1); + this.ucSplitLine_H28.TabIndex = 1; + this.ucSplitLine_H28.TabStop = false; + // + // ucSplitLine_V28 + // + this.ucSplitLine_V28.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_V28.Dock = System.Windows.Forms.DockStyle.Right; + this.ucSplitLine_V28.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_V28.Location = new System.Drawing.Point(65, 0); + this.ucSplitLine_V28.Name = "ucSplitLine_V28"; + this.ucSplitLine_V28.Size = new System.Drawing.Size(1, 67); + this.ucSplitLine_V28.TabIndex = 0; + this.ucSplitLine_V28.TabStop = false; + // + // panel27 + // + this.panel27.Controls.Add(this.label27); + this.panel27.Controls.Add(this.ucSplitLine_H27); + this.panel27.Controls.Add(this.ucSplitLine_V27); + this.panel27.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel27.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.panel27.Location = new System.Drawing.Point(0, 134); + this.panel27.Margin = new System.Windows.Forms.Padding(0); + this.panel27.Name = "panel27"; + this.panel27.Size = new System.Drawing.Size(66, 67); + this.panel27.TabIndex = 27; + // + // label27 + // + this.label27.Dock = System.Windows.Forms.DockStyle.Fill; + this.label27.Font = new System.Drawing.Font("微软雅黑", 15F); + this.label27.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.label27.Location = new System.Drawing.Point(0, 0); + this.label27.Name = "label27"; + this.label27.Size = new System.Drawing.Size(65, 66); + this.label27.TabIndex = 2; + this.label27.Tag = "."; + this.label27.Text = "大写"; + this.label27.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label27.MouseDown += new System.Windows.Forms.MouseEventHandler(this.KeyDown_MouseDown); + // + // ucSplitLine_H27 + // + this.ucSplitLine_H27.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_H27.Dock = System.Windows.Forms.DockStyle.Bottom; + this.ucSplitLine_H27.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_H27.Location = new System.Drawing.Point(0, 66); + this.ucSplitLine_H27.Name = "ucSplitLine_H27"; + this.ucSplitLine_H27.Size = new System.Drawing.Size(65, 1); + this.ucSplitLine_H27.TabIndex = 1; + this.ucSplitLine_H27.TabStop = false; + // + // ucSplitLine_V27 + // + this.ucSplitLine_V27.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_V27.Dock = System.Windows.Forms.DockStyle.Right; + this.ucSplitLine_V27.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_V27.Location = new System.Drawing.Point(65, 0); + this.ucSplitLine_V27.Name = "ucSplitLine_V27"; + this.ucSplitLine_V27.Size = new System.Drawing.Size(1, 67); + this.ucSplitLine_V27.TabIndex = 0; + this.ucSplitLine_V27.TabStop = false; + // + // panel26 + // + this.panel26.Controls.Add(this.label26); + this.panel26.Controls.Add(this.ucSplitLine_H26); + this.panel26.Controls.Add(this.ucSplitLine_V26); + this.panel26.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel26.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.panel26.Location = new System.Drawing.Point(66, 134); + this.panel26.Margin = new System.Windows.Forms.Padding(0); + this.panel26.Name = "panel26"; + this.panel26.Size = new System.Drawing.Size(66, 67); + this.panel26.TabIndex = 26; + // + // label26 + // + this.label26.Dock = System.Windows.Forms.DockStyle.Fill; + this.label26.Font = new System.Drawing.Font("Arial Unicode MS", 30F); + this.label26.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.label26.Location = new System.Drawing.Point(0, 0); + this.label26.Name = "label26"; + this.label26.Size = new System.Drawing.Size(65, 66); + this.label26.TabIndex = 2; + this.label26.Tag = "1"; + this.label26.Text = "z"; + this.label26.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label26.MouseDown += new System.Windows.Forms.MouseEventHandler(this.KeyDown_MouseDown); + // + // ucSplitLine_H26 + // + this.ucSplitLine_H26.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_H26.Dock = System.Windows.Forms.DockStyle.Bottom; + this.ucSplitLine_H26.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_H26.Location = new System.Drawing.Point(0, 66); + this.ucSplitLine_H26.Name = "ucSplitLine_H26"; + this.ucSplitLine_H26.Size = new System.Drawing.Size(65, 1); + this.ucSplitLine_H26.TabIndex = 1; + this.ucSplitLine_H26.TabStop = false; + // + // ucSplitLine_V26 + // + this.ucSplitLine_V26.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_V26.Dock = System.Windows.Forms.DockStyle.Right; + this.ucSplitLine_V26.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_V26.Location = new System.Drawing.Point(65, 0); + this.ucSplitLine_V26.Name = "ucSplitLine_V26"; + this.ucSplitLine_V26.Size = new System.Drawing.Size(1, 67); + this.ucSplitLine_V26.TabIndex = 0; + this.ucSplitLine_V26.TabStop = false; + // + // panel25 + // + this.tableLayoutPanel2.SetColumnSpan(this.panel25, 2); + this.panel25.Controls.Add(this.label25); + this.panel25.Controls.Add(this.ucSplitLine_H25); + this.panel25.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel25.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.panel25.Location = new System.Drawing.Point(528, 134); + this.panel25.Margin = new System.Windows.Forms.Padding(0); + this.panel25.Name = "panel25"; + this.panel25.Size = new System.Drawing.Size(141, 67); + this.panel25.TabIndex = 25; + // + // label25 + // + this.label25.Dock = System.Windows.Forms.DockStyle.Fill; + this.label25.Font = new System.Drawing.Font("微软雅黑", 20F); + this.label25.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.label25.Location = new System.Drawing.Point(0, 0); + this.label25.Name = "label25"; + this.label25.Size = new System.Drawing.Size(141, 66); + this.label25.TabIndex = 2; + this.label25.Tag = "删除"; + this.label25.Text = "删除"; + this.label25.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label25.MouseDown += new System.Windows.Forms.MouseEventHandler(this.KeyDown_MouseDown); + // + // ucSplitLine_H25 + // + this.ucSplitLine_H25.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_H25.Dock = System.Windows.Forms.DockStyle.Bottom; + this.ucSplitLine_H25.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_H25.Location = new System.Drawing.Point(0, 66); + this.ucSplitLine_H25.Name = "ucSplitLine_H25"; + this.ucSplitLine_H25.Size = new System.Drawing.Size(141, 1); + this.ucSplitLine_H25.TabIndex = 1; + this.ucSplitLine_H25.TabStop = false; + // + // panel23 + // + this.panel23.Controls.Add(this.label23); + this.panel23.Controls.Add(this.ucSplitLine_H23); + this.panel23.Controls.Add(this.ucSplitLine_V23); + this.panel23.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel23.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.panel23.Location = new System.Drawing.Point(462, 134); + this.panel23.Margin = new System.Windows.Forms.Padding(0); + this.panel23.Name = "panel23"; + this.panel23.Size = new System.Drawing.Size(66, 67); + this.panel23.TabIndex = 23; + // + // label23 + // + this.label23.Dock = System.Windows.Forms.DockStyle.Fill; + this.label23.Font = new System.Drawing.Font("Arial Unicode MS", 30F); + this.label23.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.label23.Location = new System.Drawing.Point(0, 0); + this.label23.Name = "label23"; + this.label23.Size = new System.Drawing.Size(65, 66); + this.label23.TabIndex = 2; + this.label23.Tag = "`"; + this.label23.Text = "m"; + this.label23.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label23.MouseDown += new System.Windows.Forms.MouseEventHandler(this.KeyDown_MouseDown); + // + // ucSplitLine_H23 + // + this.ucSplitLine_H23.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_H23.Dock = System.Windows.Forms.DockStyle.Bottom; + this.ucSplitLine_H23.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_H23.Location = new System.Drawing.Point(0, 66); + this.ucSplitLine_H23.Name = "ucSplitLine_H23"; + this.ucSplitLine_H23.Size = new System.Drawing.Size(65, 1); + this.ucSplitLine_H23.TabIndex = 1; + this.ucSplitLine_H23.TabStop = false; + // + // ucSplitLine_V23 + // + this.ucSplitLine_V23.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_V23.Dock = System.Windows.Forms.DockStyle.Right; + this.ucSplitLine_V23.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_V23.Location = new System.Drawing.Point(65, 0); + this.ucSplitLine_V23.Name = "ucSplitLine_V23"; + this.ucSplitLine_V23.Size = new System.Drawing.Size(1, 67); + this.ucSplitLine_V23.TabIndex = 0; + this.ucSplitLine_V23.TabStop = false; + // + // panel22 + // + this.panel22.Controls.Add(this.label22); + this.panel22.Controls.Add(this.ucSplitLine_H22); + this.panel22.Controls.Add(this.ucSplitLine_V22); + this.panel22.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel22.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.panel22.Location = new System.Drawing.Point(330, 134); + this.panel22.Margin = new System.Windows.Forms.Padding(0); + this.panel22.Name = "panel22"; + this.panel22.Size = new System.Drawing.Size(66, 67); + this.panel22.TabIndex = 22; + // + // label22 + // + this.label22.Dock = System.Windows.Forms.DockStyle.Fill; + this.label22.Font = new System.Drawing.Font("Arial Unicode MS", 30F); + this.label22.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.label22.Location = new System.Drawing.Point(0, 0); + this.label22.Name = "label22"; + this.label22.Size = new System.Drawing.Size(65, 66); + this.label22.TabIndex = 2; + this.label22.Tag = "!"; + this.label22.Text = "b"; + this.label22.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label22.MouseDown += new System.Windows.Forms.MouseEventHandler(this.KeyDown_MouseDown); + // + // ucSplitLine_H22 + // + this.ucSplitLine_H22.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_H22.Dock = System.Windows.Forms.DockStyle.Bottom; + this.ucSplitLine_H22.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_H22.Location = new System.Drawing.Point(0, 66); + this.ucSplitLine_H22.Name = "ucSplitLine_H22"; + this.ucSplitLine_H22.Size = new System.Drawing.Size(65, 1); + this.ucSplitLine_H22.TabIndex = 1; + this.ucSplitLine_H22.TabStop = false; + // + // ucSplitLine_V22 + // + this.ucSplitLine_V22.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_V22.Dock = System.Windows.Forms.DockStyle.Right; + this.ucSplitLine_V22.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_V22.Location = new System.Drawing.Point(65, 0); + this.ucSplitLine_V22.Name = "ucSplitLine_V22"; + this.ucSplitLine_V22.Size = new System.Drawing.Size(1, 67); + this.ucSplitLine_V22.TabIndex = 0; + this.ucSplitLine_V22.TabStop = false; + // + // panel21 + // + this.panel21.Controls.Add(this.label21); + this.panel21.Controls.Add(this.ucSplitLine_H21); + this.panel21.Controls.Add(this.ucSplitLine_V21); + this.panel21.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel21.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.panel21.Location = new System.Drawing.Point(396, 134); + this.panel21.Margin = new System.Windows.Forms.Padding(0); + this.panel21.Name = "panel21"; + this.panel21.Size = new System.Drawing.Size(66, 67); + this.panel21.TabIndex = 21; + // + // label21 + // + this.label21.Dock = System.Windows.Forms.DockStyle.Fill; + this.label21.Font = new System.Drawing.Font("Arial Unicode MS", 30F); + this.label21.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.label21.Location = new System.Drawing.Point(0, 0); + this.label21.Name = "label21"; + this.label21.Size = new System.Drawing.Size(65, 66); + this.label21.TabIndex = 2; + this.label21.Tag = "\'"; + this.label21.Text = "n"; + this.label21.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label21.MouseDown += new System.Windows.Forms.MouseEventHandler(this.KeyDown_MouseDown); + // + // ucSplitLine_H21 + // + this.ucSplitLine_H21.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_H21.Dock = System.Windows.Forms.DockStyle.Bottom; + this.ucSplitLine_H21.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_H21.Location = new System.Drawing.Point(0, 66); + this.ucSplitLine_H21.Name = "ucSplitLine_H21"; + this.ucSplitLine_H21.Size = new System.Drawing.Size(65, 1); + this.ucSplitLine_H21.TabIndex = 1; + this.ucSplitLine_H21.TabStop = false; + // + // ucSplitLine_V21 + // + this.ucSplitLine_V21.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_V21.Dock = System.Windows.Forms.DockStyle.Right; + this.ucSplitLine_V21.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_V21.Location = new System.Drawing.Point(65, 0); + this.ucSplitLine_V21.Name = "ucSplitLine_V21"; + this.ucSplitLine_V21.Size = new System.Drawing.Size(1, 67); + this.ucSplitLine_V21.TabIndex = 0; + this.ucSplitLine_V21.TabStop = false; + // + // panel20 + // + this.panel20.Controls.Add(this.label20); + this.panel20.Controls.Add(this.ucSplitLine_H20); + this.panel20.Controls.Add(this.ucSplitLine_V20); + this.panel20.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel20.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.panel20.Location = new System.Drawing.Point(198, 67); + this.panel20.Margin = new System.Windows.Forms.Padding(0); + this.panel20.Name = "panel20"; + this.panel20.Size = new System.Drawing.Size(66, 67); + this.panel20.TabIndex = 20; + // + // label20 + // + this.label20.Dock = System.Windows.Forms.DockStyle.Fill; + this.label20.Font = new System.Drawing.Font("Arial Unicode MS", 30F); + this.label20.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.label20.Location = new System.Drawing.Point(0, 0); + this.label20.Name = "label20"; + this.label20.Size = new System.Drawing.Size(65, 66); + this.label20.TabIndex = 2; + this.label20.Tag = "6"; + this.label20.Text = "f"; + this.label20.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label20.MouseDown += new System.Windows.Forms.MouseEventHandler(this.KeyDown_MouseDown); + // + // ucSplitLine_H20 + // + this.ucSplitLine_H20.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_H20.Dock = System.Windows.Forms.DockStyle.Bottom; + this.ucSplitLine_H20.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_H20.Location = new System.Drawing.Point(0, 66); + this.ucSplitLine_H20.Name = "ucSplitLine_H20"; + this.ucSplitLine_H20.Size = new System.Drawing.Size(65, 1); + this.ucSplitLine_H20.TabIndex = 1; + this.ucSplitLine_H20.TabStop = false; + // + // ucSplitLine_V20 + // + this.ucSplitLine_V20.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_V20.Dock = System.Windows.Forms.DockStyle.Right; + this.ucSplitLine_V20.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_V20.Location = new System.Drawing.Point(65, 0); + this.ucSplitLine_V20.Name = "ucSplitLine_V20"; + this.ucSplitLine_V20.Size = new System.Drawing.Size(1, 67); + this.ucSplitLine_V20.TabIndex = 0; + this.ucSplitLine_V20.TabStop = false; + // + // panel19 + // + this.panel19.Controls.Add(this.label19); + this.panel19.Controls.Add(this.ucSplitLine_H19); + this.panel19.Controls.Add(this.ucSplitLine_V19); + this.panel19.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel19.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.panel19.Location = new System.Drawing.Point(264, 67); + this.panel19.Margin = new System.Windows.Forms.Padding(0); + this.panel19.Name = "panel19"; + this.panel19.Size = new System.Drawing.Size(66, 67); + this.panel19.TabIndex = 19; + // + // label19 + // + this.label19.Dock = System.Windows.Forms.DockStyle.Fill; + this.label19.Font = new System.Drawing.Font("Arial Unicode MS", 30F); + this.label19.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.label19.Location = new System.Drawing.Point(0, 0); + this.label19.Name = "label19"; + this.label19.Size = new System.Drawing.Size(65, 66); + this.label19.TabIndex = 2; + this.label19.Tag = ";"; + this.label19.Text = "g"; + this.label19.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label19.MouseDown += new System.Windows.Forms.MouseEventHandler(this.KeyDown_MouseDown); + // + // ucSplitLine_H19 + // + this.ucSplitLine_H19.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_H19.Dock = System.Windows.Forms.DockStyle.Bottom; + this.ucSplitLine_H19.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_H19.Location = new System.Drawing.Point(0, 66); + this.ucSplitLine_H19.Name = "ucSplitLine_H19"; + this.ucSplitLine_H19.Size = new System.Drawing.Size(65, 1); + this.ucSplitLine_H19.TabIndex = 1; + this.ucSplitLine_H19.TabStop = false; + // + // ucSplitLine_V19 + // + this.ucSplitLine_V19.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_V19.Dock = System.Windows.Forms.DockStyle.Right; + this.ucSplitLine_V19.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_V19.Location = new System.Drawing.Point(65, 0); + this.ucSplitLine_V19.Name = "ucSplitLine_V19"; + this.ucSplitLine_V19.Size = new System.Drawing.Size(1, 67); + this.ucSplitLine_V19.TabIndex = 0; + this.ucSplitLine_V19.TabStop = false; + // + // panel18 + // + this.panel18.Controls.Add(this.label18); + this.panel18.Controls.Add(this.ucSplitLine_H18); + this.panel18.Controls.Add(this.ucSplitLine_V18); + this.panel18.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel18.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.panel18.Location = new System.Drawing.Point(132, 67); + this.panel18.Margin = new System.Windows.Forms.Padding(0); + this.panel18.Name = "panel18"; + this.panel18.Size = new System.Drawing.Size(66, 67); + this.panel18.TabIndex = 18; + // + // label18 + // + this.label18.Dock = System.Windows.Forms.DockStyle.Fill; + this.label18.Font = new System.Drawing.Font("Arial Unicode MS", 30F); + this.label18.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.label18.Location = new System.Drawing.Point(0, 0); + this.label18.Name = "label18"; + this.label18.Size = new System.Drawing.Size(65, 66); + this.label18.TabIndex = 2; + this.label18.Tag = "5"; + this.label18.Text = "d"; + this.label18.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label18.MouseDown += new System.Windows.Forms.MouseEventHandler(this.KeyDown_MouseDown); + // + // ucSplitLine_H18 + // + this.ucSplitLine_H18.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_H18.Dock = System.Windows.Forms.DockStyle.Bottom; + this.ucSplitLine_H18.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_H18.Location = new System.Drawing.Point(0, 66); + this.ucSplitLine_H18.Name = "ucSplitLine_H18"; + this.ucSplitLine_H18.Size = new System.Drawing.Size(65, 1); + this.ucSplitLine_H18.TabIndex = 1; + this.ucSplitLine_H18.TabStop = false; + // + // ucSplitLine_V18 + // + this.ucSplitLine_V18.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_V18.Dock = System.Windows.Forms.DockStyle.Right; + this.ucSplitLine_V18.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_V18.Location = new System.Drawing.Point(65, 0); + this.ucSplitLine_V18.Name = "ucSplitLine_V18"; + this.ucSplitLine_V18.Size = new System.Drawing.Size(1, 67); + this.ucSplitLine_V18.TabIndex = 0; + this.ucSplitLine_V18.TabStop = false; + // + // panel17 + // + this.panel17.Controls.Add(this.label17); + this.panel17.Controls.Add(this.ucSplitLine_H17); + this.panel17.Controls.Add(this.ucSplitLine_V17); + this.panel17.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel17.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.panel17.Location = new System.Drawing.Point(0, 67); + this.panel17.Margin = new System.Windows.Forms.Padding(0); + this.panel17.Name = "panel17"; + this.panel17.Size = new System.Drawing.Size(66, 67); + this.panel17.TabIndex = 17; + // + // label17 + // + this.label17.Dock = System.Windows.Forms.DockStyle.Fill; + this.label17.Font = new System.Drawing.Font("Arial Unicode MS", 30F); + this.label17.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.label17.Location = new System.Drawing.Point(0, 0); + this.label17.Name = "label17"; + this.label17.Size = new System.Drawing.Size(65, 66); + this.label17.TabIndex = 2; + this.label17.Tag = "+"; + this.label17.Text = "a"; + this.label17.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label17.MouseDown += new System.Windows.Forms.MouseEventHandler(this.KeyDown_MouseDown); + // + // ucSplitLine_H17 + // + this.ucSplitLine_H17.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_H17.Dock = System.Windows.Forms.DockStyle.Bottom; + this.ucSplitLine_H17.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_H17.Location = new System.Drawing.Point(0, 66); + this.ucSplitLine_H17.Name = "ucSplitLine_H17"; + this.ucSplitLine_H17.Size = new System.Drawing.Size(65, 1); + this.ucSplitLine_H17.TabIndex = 1; + this.ucSplitLine_H17.TabStop = false; + // + // ucSplitLine_V17 + // + this.ucSplitLine_V17.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_V17.Dock = System.Windows.Forms.DockStyle.Right; + this.ucSplitLine_V17.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_V17.Location = new System.Drawing.Point(65, 0); + this.ucSplitLine_V17.Name = "ucSplitLine_V17"; + this.ucSplitLine_V17.Size = new System.Drawing.Size(1, 67); + this.ucSplitLine_V17.TabIndex = 0; + this.ucSplitLine_V17.TabStop = false; + // + // panel16 + // + this.panel16.Controls.Add(this.label16); + this.panel16.Controls.Add(this.ucSplitLine_H16); + this.panel16.Controls.Add(this.ucSplitLine_V16); + this.panel16.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel16.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.panel16.Location = new System.Drawing.Point(66, 67); + this.panel16.Margin = new System.Windows.Forms.Padding(0); + this.panel16.Name = "panel16"; + this.panel16.Size = new System.Drawing.Size(66, 67); + this.panel16.TabIndex = 16; + // + // label16 + // + this.label16.Dock = System.Windows.Forms.DockStyle.Fill; + this.label16.Font = new System.Drawing.Font("Arial Unicode MS", 30F); + this.label16.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.label16.Location = new System.Drawing.Point(0, 0); + this.label16.Name = "label16"; + this.label16.Size = new System.Drawing.Size(65, 66); + this.label16.TabIndex = 2; + this.label16.Tag = "4"; + this.label16.Text = "s"; + this.label16.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label16.MouseDown += new System.Windows.Forms.MouseEventHandler(this.KeyDown_MouseDown); + // + // ucSplitLine_H16 + // + this.ucSplitLine_H16.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_H16.Dock = System.Windows.Forms.DockStyle.Bottom; + this.ucSplitLine_H16.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_H16.Location = new System.Drawing.Point(0, 66); + this.ucSplitLine_H16.Name = "ucSplitLine_H16"; + this.ucSplitLine_H16.Size = new System.Drawing.Size(65, 1); + this.ucSplitLine_H16.TabIndex = 1; + this.ucSplitLine_H16.TabStop = false; + // + // ucSplitLine_V16 + // + this.ucSplitLine_V16.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_V16.Dock = System.Windows.Forms.DockStyle.Right; + this.ucSplitLine_V16.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_V16.Location = new System.Drawing.Point(65, 0); + this.ucSplitLine_V16.Name = "ucSplitLine_V16"; + this.ucSplitLine_V16.Size = new System.Drawing.Size(1, 67); + this.ucSplitLine_V16.TabIndex = 0; + this.ucSplitLine_V16.TabStop = false; + // + // panel15 + // + this.panel15.Controls.Add(this.label15); + this.panel15.Controls.Add(this.ucSplitLine_H15); + this.panel15.Controls.Add(this.ucSplitLine_V15); + this.panel15.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel15.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.panel15.Location = new System.Drawing.Point(528, 67); + this.panel15.Margin = new System.Windows.Forms.Padding(0); + this.panel15.Name = "panel15"; + this.panel15.Size = new System.Drawing.Size(66, 67); + this.panel15.TabIndex = 15; + // + // label15 + // + this.label15.Dock = System.Windows.Forms.DockStyle.Fill; + this.label15.Font = new System.Drawing.Font("Arial Unicode MS", 30F); + this.label15.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.label15.Location = new System.Drawing.Point(0, 0); + this.label15.Name = "label15"; + this.label15.Size = new System.Drawing.Size(65, 66); + this.label15.TabIndex = 2; + this.label15.Tag = "/"; + this.label15.Text = "l"; + this.label15.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label15.MouseDown += new System.Windows.Forms.MouseEventHandler(this.KeyDown_MouseDown); + // + // ucSplitLine_H15 + // + this.ucSplitLine_H15.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_H15.Dock = System.Windows.Forms.DockStyle.Bottom; + this.ucSplitLine_H15.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_H15.Location = new System.Drawing.Point(0, 66); + this.ucSplitLine_H15.Name = "ucSplitLine_H15"; + this.ucSplitLine_H15.Size = new System.Drawing.Size(65, 1); + this.ucSplitLine_H15.TabIndex = 1; + this.ucSplitLine_H15.TabStop = false; + // + // ucSplitLine_V15 + // + this.ucSplitLine_V15.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_V15.Dock = System.Windows.Forms.DockStyle.Right; + this.ucSplitLine_V15.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_V15.Location = new System.Drawing.Point(65, 0); + this.ucSplitLine_V15.Name = "ucSplitLine_V15"; + this.ucSplitLine_V15.Size = new System.Drawing.Size(1, 67); + this.ucSplitLine_V15.TabIndex = 0; + this.ucSplitLine_V15.TabStop = false; + // + // panel14 + // + this.panel14.Controls.Add(this.label14); + this.panel14.Controls.Add(this.ucSplitLine_H14); + this.panel14.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel14.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.panel14.Location = new System.Drawing.Point(594, 67); + this.panel14.Margin = new System.Windows.Forms.Padding(0); + this.panel14.Name = "panel14"; + this.panel14.Size = new System.Drawing.Size(75, 67); + this.panel14.TabIndex = 14; + // + // label14 + // + this.label14.Dock = System.Windows.Forms.DockStyle.Fill; + this.label14.Font = new System.Drawing.Font("Arial Unicode MS", 30F); + this.label14.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.label14.Location = new System.Drawing.Point(0, 0); + this.label14.Name = "label14"; + this.label14.Size = new System.Drawing.Size(75, 66); + this.label14.TabIndex = 2; + this.label14.Tag = "?"; + this.label14.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label14.MouseDown += new System.Windows.Forms.MouseEventHandler(this.KeyDown_MouseDown); + // + // ucSplitLine_H14 + // + this.ucSplitLine_H14.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_H14.Dock = System.Windows.Forms.DockStyle.Bottom; + this.ucSplitLine_H14.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_H14.Location = new System.Drawing.Point(0, 66); + this.ucSplitLine_H14.Name = "ucSplitLine_H14"; + this.ucSplitLine_H14.Size = new System.Drawing.Size(75, 1); + this.ucSplitLine_H14.TabIndex = 1; + this.ucSplitLine_H14.TabStop = false; + // + // panel13 + // + this.panel13.Controls.Add(this.label13); + this.panel13.Controls.Add(this.ucSplitLine_H13); + this.panel13.Controls.Add(this.ucSplitLine_V13); + this.panel13.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel13.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.panel13.Location = new System.Drawing.Point(462, 67); + this.panel13.Margin = new System.Windows.Forms.Padding(0); + this.panel13.Name = "panel13"; + this.panel13.Size = new System.Drawing.Size(66, 67); + this.panel13.TabIndex = 13; + // + // label13 + // + this.label13.Dock = System.Windows.Forms.DockStyle.Fill; + this.label13.Font = new System.Drawing.Font("Arial Unicode MS", 30F); + this.label13.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.label13.Location = new System.Drawing.Point(0, 0); + this.label13.Name = "label13"; + this.label13.Size = new System.Drawing.Size(65, 66); + this.label13.TabIndex = 2; + this.label13.Tag = "\\"; + this.label13.Text = "k"; + this.label13.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label13.MouseDown += new System.Windows.Forms.MouseEventHandler(this.KeyDown_MouseDown); + // + // ucSplitLine_H13 + // + this.ucSplitLine_H13.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_H13.Dock = System.Windows.Forms.DockStyle.Bottom; + this.ucSplitLine_H13.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_H13.Location = new System.Drawing.Point(0, 66); + this.ucSplitLine_H13.Name = "ucSplitLine_H13"; + this.ucSplitLine_H13.Size = new System.Drawing.Size(65, 1); + this.ucSplitLine_H13.TabIndex = 1; + this.ucSplitLine_H13.TabStop = false; + // + // ucSplitLine_V13 + // + this.ucSplitLine_V13.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_V13.Dock = System.Windows.Forms.DockStyle.Right; + this.ucSplitLine_V13.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_V13.Location = new System.Drawing.Point(65, 0); + this.ucSplitLine_V13.Name = "ucSplitLine_V13"; + this.ucSplitLine_V13.Size = new System.Drawing.Size(1, 67); + this.ucSplitLine_V13.TabIndex = 0; + this.ucSplitLine_V13.TabStop = false; + // + // panel12 + // + this.panel12.Controls.Add(this.label12); + this.panel12.Controls.Add(this.ucSplitLine_H12); + this.panel12.Controls.Add(this.ucSplitLine_V12); + this.panel12.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel12.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.panel12.Location = new System.Drawing.Point(330, 67); + this.panel12.Margin = new System.Windows.Forms.Padding(0); + this.panel12.Name = "panel12"; + this.panel12.Size = new System.Drawing.Size(66, 67); + this.panel12.TabIndex = 12; + // + // label12 + // + this.label12.Dock = System.Windows.Forms.DockStyle.Fill; + this.label12.Font = new System.Drawing.Font("Arial Unicode MS", 30F); + this.label12.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.label12.Location = new System.Drawing.Point(0, 0); + this.label12.Name = "label12"; + this.label12.Size = new System.Drawing.Size(65, 66); + this.label12.TabIndex = 2; + this.label12.Tag = "*"; + this.label12.Text = "h"; + this.label12.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label12.MouseDown += new System.Windows.Forms.MouseEventHandler(this.KeyDown_MouseDown); + // + // ucSplitLine_H12 + // + this.ucSplitLine_H12.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_H12.Dock = System.Windows.Forms.DockStyle.Bottom; + this.ucSplitLine_H12.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_H12.Location = new System.Drawing.Point(0, 66); + this.ucSplitLine_H12.Name = "ucSplitLine_H12"; + this.ucSplitLine_H12.Size = new System.Drawing.Size(65, 1); + this.ucSplitLine_H12.TabIndex = 1; + this.ucSplitLine_H12.TabStop = false; + // + // ucSplitLine_V12 + // + this.ucSplitLine_V12.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_V12.Dock = System.Windows.Forms.DockStyle.Right; + this.ucSplitLine_V12.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_V12.Location = new System.Drawing.Point(65, 0); + this.ucSplitLine_V12.Name = "ucSplitLine_V12"; + this.ucSplitLine_V12.Size = new System.Drawing.Size(1, 67); + this.ucSplitLine_V12.TabIndex = 0; + this.ucSplitLine_V12.TabStop = false; + // + // panel11 + // + this.panel11.Controls.Add(this.label11); + this.panel11.Controls.Add(this.ucSplitLine_H11); + this.panel11.Controls.Add(this.ucSplitLine_V11); + this.panel11.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel11.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.panel11.Location = new System.Drawing.Point(396, 67); + this.panel11.Margin = new System.Windows.Forms.Padding(0); + this.panel11.Name = "panel11"; + this.panel11.Size = new System.Drawing.Size(66, 67); + this.panel11.TabIndex = 11; + // + // label11 + // + this.label11.Dock = System.Windows.Forms.DockStyle.Fill; + this.label11.Font = new System.Drawing.Font("Arial Unicode MS", 30F); + this.label11.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.label11.Location = new System.Drawing.Point(0, 0); + this.label11.Name = "label11"; + this.label11.Size = new System.Drawing.Size(65, 66); + this.label11.TabIndex = 2; + this.label11.Tag = ","; + this.label11.Text = "j"; + this.label11.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label11.MouseDown += new System.Windows.Forms.MouseEventHandler(this.KeyDown_MouseDown); + // + // ucSplitLine_H11 + // + this.ucSplitLine_H11.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_H11.Dock = System.Windows.Forms.DockStyle.Bottom; + this.ucSplitLine_H11.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_H11.Location = new System.Drawing.Point(0, 66); + this.ucSplitLine_H11.Name = "ucSplitLine_H11"; + this.ucSplitLine_H11.Size = new System.Drawing.Size(65, 1); + this.ucSplitLine_H11.TabIndex = 1; + this.ucSplitLine_H11.TabStop = false; + // + // ucSplitLine_V11 + // + this.ucSplitLine_V11.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_V11.Dock = System.Windows.Forms.DockStyle.Right; + this.ucSplitLine_V11.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_V11.Location = new System.Drawing.Point(65, 0); + this.ucSplitLine_V11.Name = "ucSplitLine_V11"; + this.ucSplitLine_V11.Size = new System.Drawing.Size(1, 67); + this.ucSplitLine_V11.TabIndex = 0; + this.ucSplitLine_V11.TabStop = false; + // + // panel10 + // + this.panel10.Controls.Add(this.label10); + this.panel10.Controls.Add(this.ucSplitLine_H10); + this.panel10.Controls.Add(this.ucSplitLine_V10); + this.panel10.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel10.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.panel10.Location = new System.Drawing.Point(264, 0); + this.panel10.Margin = new System.Windows.Forms.Padding(0); + this.panel10.Name = "panel10"; + this.panel10.Size = new System.Drawing.Size(66, 67); + this.panel10.TabIndex = 10; + // + // label10 + // + this.label10.Dock = System.Windows.Forms.DockStyle.Fill; + this.label10.Font = new System.Drawing.Font("Arial Unicode MS", 30F); + this.label10.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.label10.Location = new System.Drawing.Point(0, 0); + this.label10.Name = "label10"; + this.label10.Size = new System.Drawing.Size(65, 66); + this.label10.TabIndex = 2; + this.label10.Tag = "@"; + this.label10.Text = "t"; + this.label10.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label10.MouseDown += new System.Windows.Forms.MouseEventHandler(this.KeyDown_MouseDown); + // + // ucSplitLine_H10 + // + this.ucSplitLine_H10.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_H10.Dock = System.Windows.Forms.DockStyle.Bottom; + this.ucSplitLine_H10.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_H10.Location = new System.Drawing.Point(0, 66); + this.ucSplitLine_H10.Name = "ucSplitLine_H10"; + this.ucSplitLine_H10.Size = new System.Drawing.Size(65, 1); + this.ucSplitLine_H10.TabIndex = 1; + this.ucSplitLine_H10.TabStop = false; + // + // ucSplitLine_V10 + // + this.ucSplitLine_V10.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_V10.Dock = System.Windows.Forms.DockStyle.Right; + this.ucSplitLine_V10.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_V10.Location = new System.Drawing.Point(65, 0); + this.ucSplitLine_V10.Name = "ucSplitLine_V10"; + this.ucSplitLine_V10.Size = new System.Drawing.Size(1, 67); + this.ucSplitLine_V10.TabIndex = 0; + this.ucSplitLine_V10.TabStop = false; + // + // panel9 + // + this.panel9.Controls.Add(this.label9); + this.panel9.Controls.Add(this.ucSplitLine_H9); + this.panel9.Controls.Add(this.ucSplitLine_V9); + this.panel9.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel9.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.panel9.Location = new System.Drawing.Point(198, 0); + this.panel9.Margin = new System.Windows.Forms.Padding(0); + this.panel9.Name = "panel9"; + this.panel9.Size = new System.Drawing.Size(66, 67); + this.panel9.TabIndex = 9; + // + // label9 + // + this.label9.Dock = System.Windows.Forms.DockStyle.Fill; + this.label9.Font = new System.Drawing.Font("Arial Unicode MS", 30F); + this.label9.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.label9.Location = new System.Drawing.Point(0, 0); + this.label9.Name = "label9"; + this.label9.Size = new System.Drawing.Size(65, 66); + this.label9.TabIndex = 2; + this.label9.Tag = "9"; + this.label9.Text = "r"; + this.label9.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label9.MouseDown += new System.Windows.Forms.MouseEventHandler(this.KeyDown_MouseDown); + // + // ucSplitLine_H9 + // + this.ucSplitLine_H9.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_H9.Dock = System.Windows.Forms.DockStyle.Bottom; + this.ucSplitLine_H9.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_H9.Location = new System.Drawing.Point(0, 66); + this.ucSplitLine_H9.Name = "ucSplitLine_H9"; + this.ucSplitLine_H9.Size = new System.Drawing.Size(65, 1); + this.ucSplitLine_H9.TabIndex = 1; + this.ucSplitLine_H9.TabStop = false; + // + // ucSplitLine_V9 + // + this.ucSplitLine_V9.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_V9.Dock = System.Windows.Forms.DockStyle.Right; + this.ucSplitLine_V9.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_V9.Location = new System.Drawing.Point(65, 0); + this.ucSplitLine_V9.Name = "ucSplitLine_V9"; + this.ucSplitLine_V9.Size = new System.Drawing.Size(1, 67); + this.ucSplitLine_V9.TabIndex = 0; + this.ucSplitLine_V9.TabStop = false; + // + // panel8 + // + this.panel8.Controls.Add(this.label8); + this.panel8.Controls.Add(this.ucSplitLine_H8); + this.panel8.Controls.Add(this.ucSplitLine_V8); + this.panel8.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel8.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.panel8.Location = new System.Drawing.Point(132, 0); + this.panel8.Margin = new System.Windows.Forms.Padding(0); + this.panel8.Name = "panel8"; + this.panel8.Size = new System.Drawing.Size(66, 67); + this.panel8.TabIndex = 8; + // + // label8 + // + this.label8.Dock = System.Windows.Forms.DockStyle.Fill; + this.label8.Font = new System.Drawing.Font("Arial Unicode MS", 30F); + this.label8.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.label8.Location = new System.Drawing.Point(0, 0); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(65, 66); + this.label8.TabIndex = 2; + this.label8.Tag = "8"; + this.label8.Text = "e"; + this.label8.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label8.MouseDown += new System.Windows.Forms.MouseEventHandler(this.KeyDown_MouseDown); + // + // ucSplitLine_H8 + // + this.ucSplitLine_H8.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_H8.Dock = System.Windows.Forms.DockStyle.Bottom; + this.ucSplitLine_H8.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_H8.Location = new System.Drawing.Point(0, 66); + this.ucSplitLine_H8.Name = "ucSplitLine_H8"; + this.ucSplitLine_H8.Size = new System.Drawing.Size(65, 1); + this.ucSplitLine_H8.TabIndex = 1; + this.ucSplitLine_H8.TabStop = false; + // + // ucSplitLine_V8 + // + this.ucSplitLine_V8.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_V8.Dock = System.Windows.Forms.DockStyle.Right; + this.ucSplitLine_V8.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_V8.Location = new System.Drawing.Point(65, 0); + this.ucSplitLine_V8.Name = "ucSplitLine_V8"; + this.ucSplitLine_V8.Size = new System.Drawing.Size(1, 67); + this.ucSplitLine_V8.TabIndex = 0; + this.ucSplitLine_V8.TabStop = false; + // + // panel7 + // + this.panel7.Controls.Add(this.label7); + this.panel7.Controls.Add(this.ucSplitLine_H7); + this.panel7.Controls.Add(this.ucSplitLine_V7); + this.panel7.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel7.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.panel7.Location = new System.Drawing.Point(0, 0); + this.panel7.Margin = new System.Windows.Forms.Padding(0); + this.panel7.Name = "panel7"; + this.panel7.Size = new System.Drawing.Size(66, 67); + this.panel7.TabIndex = 7; + // + // label7 + // + this.label7.Dock = System.Windows.Forms.DockStyle.Fill; + this.label7.Font = new System.Drawing.Font("Arial Unicode MS", 30F); + this.label7.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.label7.Location = new System.Drawing.Point(0, 0); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(65, 66); + this.label7.TabIndex = 2; + this.label7.Tag = "-"; + this.label7.Text = "q"; + this.label7.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label7.MouseDown += new System.Windows.Forms.MouseEventHandler(this.KeyDown_MouseDown); + // + // ucSplitLine_H7 + // + this.ucSplitLine_H7.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_H7.Dock = System.Windows.Forms.DockStyle.Bottom; + this.ucSplitLine_H7.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_H7.Location = new System.Drawing.Point(0, 66); + this.ucSplitLine_H7.Name = "ucSplitLine_H7"; + this.ucSplitLine_H7.Size = new System.Drawing.Size(65, 1); + this.ucSplitLine_H7.TabIndex = 1; + this.ucSplitLine_H7.TabStop = false; + // + // ucSplitLine_V7 + // + this.ucSplitLine_V7.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_V7.Dock = System.Windows.Forms.DockStyle.Right; + this.ucSplitLine_V7.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_V7.Location = new System.Drawing.Point(65, 0); + this.ucSplitLine_V7.Name = "ucSplitLine_V7"; + this.ucSplitLine_V7.Size = new System.Drawing.Size(1, 67); + this.ucSplitLine_V7.TabIndex = 0; + this.ucSplitLine_V7.TabStop = false; + // + // panel6 + // + this.panel6.Controls.Add(this.label6); + this.panel6.Controls.Add(this.ucSplitLine_H6); + this.panel6.Controls.Add(this.ucSplitLine_V6); + this.panel6.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel6.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.panel6.Location = new System.Drawing.Point(66, 0); + this.panel6.Margin = new System.Windows.Forms.Padding(0); + this.panel6.Name = "panel6"; + this.panel6.Size = new System.Drawing.Size(66, 67); + this.panel6.TabIndex = 6; + // + // label6 + // + this.label6.Dock = System.Windows.Forms.DockStyle.Fill; + this.label6.Font = new System.Drawing.Font("Arial Unicode MS", 30F); + this.label6.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.label6.Location = new System.Drawing.Point(0, 0); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(65, 66); + this.label6.TabIndex = 2; + this.label6.Tag = "7"; + this.label6.Text = "w"; + this.label6.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label6.MouseDown += new System.Windows.Forms.MouseEventHandler(this.KeyDown_MouseDown); + // + // ucSplitLine_H6 + // + this.ucSplitLine_H6.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_H6.Dock = System.Windows.Forms.DockStyle.Bottom; + this.ucSplitLine_H6.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_H6.Location = new System.Drawing.Point(0, 66); + this.ucSplitLine_H6.Name = "ucSplitLine_H6"; + this.ucSplitLine_H6.Size = new System.Drawing.Size(65, 1); + this.ucSplitLine_H6.TabIndex = 1; + this.ucSplitLine_H6.TabStop = false; + // + // ucSplitLine_V6 + // + this.ucSplitLine_V6.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_V6.Dock = System.Windows.Forms.DockStyle.Right; + this.ucSplitLine_V6.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_V6.Location = new System.Drawing.Point(65, 0); + this.ucSplitLine_V6.Name = "ucSplitLine_V6"; + this.ucSplitLine_V6.Size = new System.Drawing.Size(1, 67); + this.ucSplitLine_V6.TabIndex = 0; + this.ucSplitLine_V6.TabStop = false; + // + // panel5 + // + this.panel5.Controls.Add(this.label5); + this.panel5.Controls.Add(this.ucSplitLine_H5); + this.panel5.Controls.Add(this.ucSplitLine_V5); + this.panel5.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel5.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.panel5.Location = new System.Drawing.Point(528, 0); + this.panel5.Margin = new System.Windows.Forms.Padding(0); + this.panel5.Name = "panel5"; + this.panel5.Size = new System.Drawing.Size(66, 67); + this.panel5.TabIndex = 5; + // + // label5 + // + this.label5.Dock = System.Windows.Forms.DockStyle.Fill; + this.label5.Font = new System.Drawing.Font("Arial Unicode MS", 30F); + this.label5.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.label5.Location = new System.Drawing.Point(0, 0); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(65, 66); + this.label5.TabIndex = 2; + this.label5.Tag = "("; + this.label5.Text = "o"; + this.label5.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label5.MouseDown += new System.Windows.Forms.MouseEventHandler(this.KeyDown_MouseDown); + // + // ucSplitLine_H5 + // + this.ucSplitLine_H5.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_H5.Dock = System.Windows.Forms.DockStyle.Bottom; + this.ucSplitLine_H5.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_H5.Location = new System.Drawing.Point(0, 66); + this.ucSplitLine_H5.Name = "ucSplitLine_H5"; + this.ucSplitLine_H5.Size = new System.Drawing.Size(65, 1); + this.ucSplitLine_H5.TabIndex = 1; + this.ucSplitLine_H5.TabStop = false; + // + // ucSplitLine_V5 + // + this.ucSplitLine_V5.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_V5.Dock = System.Windows.Forms.DockStyle.Right; + this.ucSplitLine_V5.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_V5.Location = new System.Drawing.Point(65, 0); + this.ucSplitLine_V5.Name = "ucSplitLine_V5"; + this.ucSplitLine_V5.Size = new System.Drawing.Size(1, 67); + this.ucSplitLine_V5.TabIndex = 0; + this.ucSplitLine_V5.TabStop = false; + // + // panel4 + // + this.panel4.Controls.Add(this.label4); + this.panel4.Controls.Add(this.ucSplitLine_H4); + this.panel4.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel4.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.panel4.Location = new System.Drawing.Point(594, 0); + this.panel4.Margin = new System.Windows.Forms.Padding(0); + this.panel4.Name = "panel4"; + this.panel4.Size = new System.Drawing.Size(75, 67); + this.panel4.TabIndex = 4; + // + // label4 + // + this.label4.Dock = System.Windows.Forms.DockStyle.Fill; + this.label4.Font = new System.Drawing.Font("Arial Unicode MS", 30F); + this.label4.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.label4.Location = new System.Drawing.Point(0, 0); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(75, 66); + this.label4.TabIndex = 2; + this.label4.Tag = ")"; + this.label4.Text = "p"; + this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label4.MouseDown += new System.Windows.Forms.MouseEventHandler(this.KeyDown_MouseDown); + // + // ucSplitLine_H4 + // + this.ucSplitLine_H4.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_H4.Dock = System.Windows.Forms.DockStyle.Bottom; + this.ucSplitLine_H4.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_H4.Location = new System.Drawing.Point(0, 66); + this.ucSplitLine_H4.Name = "ucSplitLine_H4"; + this.ucSplitLine_H4.Size = new System.Drawing.Size(75, 1); + this.ucSplitLine_H4.TabIndex = 1; + this.ucSplitLine_H4.TabStop = false; + // + // panel3 + // + this.panel3.Controls.Add(this.label3); + this.panel3.Controls.Add(this.ucSplitLine_H3); + this.panel3.Controls.Add(this.ucSplitLine_V3); + this.panel3.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel3.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.panel3.Location = new System.Drawing.Point(462, 0); + this.panel3.Margin = new System.Windows.Forms.Padding(0); + this.panel3.Name = "panel3"; + this.panel3.Size = new System.Drawing.Size(66, 67); + this.panel3.TabIndex = 3; + // + // label3 + // + this.label3.Dock = System.Windows.Forms.DockStyle.Fill; + this.label3.Font = new System.Drawing.Font("Arial Unicode MS", 30F); + this.label3.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.label3.Location = new System.Drawing.Point(0, 0); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(65, 66); + this.label3.TabIndex = 2; + this.label3.Tag = "_"; + this.label3.Text = "i"; + this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label3.MouseDown += new System.Windows.Forms.MouseEventHandler(this.KeyDown_MouseDown); + // + // ucSplitLine_H3 + // + this.ucSplitLine_H3.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_H3.Dock = System.Windows.Forms.DockStyle.Bottom; + this.ucSplitLine_H3.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_H3.Location = new System.Drawing.Point(0, 66); + this.ucSplitLine_H3.Name = "ucSplitLine_H3"; + this.ucSplitLine_H3.Size = new System.Drawing.Size(65, 1); + this.ucSplitLine_H3.TabIndex = 1; + this.ucSplitLine_H3.TabStop = false; + // + // ucSplitLine_V3 + // + this.ucSplitLine_V3.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_V3.Dock = System.Windows.Forms.DockStyle.Right; + this.ucSplitLine_V3.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_V3.Location = new System.Drawing.Point(65, 0); + this.ucSplitLine_V3.Name = "ucSplitLine_V3"; + this.ucSplitLine_V3.Size = new System.Drawing.Size(1, 67); + this.ucSplitLine_V3.TabIndex = 0; + this.ucSplitLine_V3.TabStop = false; + // + // panel2 + // + this.panel2.Controls.Add(this.label2); + this.panel2.Controls.Add(this.ucSplitLine_H2); + this.panel2.Controls.Add(this.ucSplitLine_V2); + this.panel2.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel2.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.panel2.Location = new System.Drawing.Point(330, 0); + this.panel2.Margin = new System.Windows.Forms.Padding(0); + this.panel2.Name = "panel2"; + this.panel2.Size = new System.Drawing.Size(66, 67); + this.panel2.TabIndex = 2; + // + // label2 + // + this.label2.Dock = System.Windows.Forms.DockStyle.Fill; + this.label2.Font = new System.Drawing.Font("Arial Unicode MS", 30F); + this.label2.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.label2.Location = new System.Drawing.Point(0, 0); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(65, 66); + this.label2.TabIndex = 2; + this.label2.Tag = "#"; + this.label2.Text = "y"; + this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label2.MouseDown += new System.Windows.Forms.MouseEventHandler(this.KeyDown_MouseDown); + // + // ucSplitLine_H2 + // + this.ucSplitLine_H2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_H2.Dock = System.Windows.Forms.DockStyle.Bottom; + this.ucSplitLine_H2.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_H2.Location = new System.Drawing.Point(0, 66); + this.ucSplitLine_H2.Name = "ucSplitLine_H2"; + this.ucSplitLine_H2.Size = new System.Drawing.Size(65, 1); + this.ucSplitLine_H2.TabIndex = 1; + this.ucSplitLine_H2.TabStop = false; + // + // ucSplitLine_V2 + // + this.ucSplitLine_V2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_V2.Dock = System.Windows.Forms.DockStyle.Right; + this.ucSplitLine_V2.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_V2.Location = new System.Drawing.Point(65, 0); + this.ucSplitLine_V2.Name = "ucSplitLine_V2"; + this.ucSplitLine_V2.Size = new System.Drawing.Size(1, 67); + this.ucSplitLine_V2.TabIndex = 0; + this.ucSplitLine_V2.TabStop = false; + // + // panel1 + // + this.panel1.Controls.Add(this.label1); + this.panel1.Controls.Add(this.ucSplitLine_H1); + this.panel1.Controls.Add(this.ucSplitLine_V1); + this.panel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.panel1.Location = new System.Drawing.Point(396, 0); + this.panel1.Margin = new System.Windows.Forms.Padding(0); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(66, 67); + this.panel1.TabIndex = 1; + // + // label1 + // + this.label1.Dock = System.Windows.Forms.DockStyle.Fill; + this.label1.Font = new System.Drawing.Font("Arial Unicode MS", 30F); + this.label1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.label1.Location = new System.Drawing.Point(0, 0); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(65, 66); + this.label1.TabIndex = 2; + this.label1.Tag = "%"; + this.label1.Text = "u"; + this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.KeyDown_MouseDown); + // + // ucSplitLine_H1 + // + this.ucSplitLine_H1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_H1.Dock = System.Windows.Forms.DockStyle.Bottom; + this.ucSplitLine_H1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_H1.Location = new System.Drawing.Point(0, 66); + this.ucSplitLine_H1.Name = "ucSplitLine_H1"; + this.ucSplitLine_H1.Size = new System.Drawing.Size(65, 1); + this.ucSplitLine_H1.TabIndex = 1; + this.ucSplitLine_H1.TabStop = false; + // + // ucSplitLine_V1 + // + this.ucSplitLine_V1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_V1.Dock = System.Windows.Forms.DockStyle.Right; + this.ucSplitLine_V1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_V1.Location = new System.Drawing.Point(65, 0); + this.ucSplitLine_V1.Name = "ucSplitLine_V1"; + this.ucSplitLine_V1.Size = new System.Drawing.Size(1, 67); + this.ucSplitLine_V1.TabIndex = 0; + this.ucSplitLine_V1.TabStop = false; + // + // ucSplitLine_V4 + // + this.ucSplitLine_V4.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_V4.Dock = System.Windows.Forms.DockStyle.Right; + this.ucSplitLine_V4.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_V4.Location = new System.Drawing.Point(670, 0); + this.ucSplitLine_V4.Name = "ucSplitLine_V4"; + this.ucSplitLine_V4.Size = new System.Drawing.Size(1, 273); + this.ucSplitLine_V4.TabIndex = 2; + this.ucSplitLine_V4.TabStop = false; + // + // ucSplitLine_V14 + // + this.ucSplitLine_V14.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_V14.Dock = System.Windows.Forms.DockStyle.Left; + this.ucSplitLine_V14.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_V14.Location = new System.Drawing.Point(0, 0); + this.ucSplitLine_V14.Name = "ucSplitLine_V14"; + this.ucSplitLine_V14.Size = new System.Drawing.Size(1, 273); + this.ucSplitLine_V14.TabIndex = 3; + this.ucSplitLine_V14.TabStop = false; + // + // ucSplitLine_H24 + // + this.ucSplitLine_H24.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_H24.Dock = System.Windows.Forms.DockStyle.Bottom; + this.ucSplitLine_H24.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_H24.Location = new System.Drawing.Point(1, 272); + this.ucSplitLine_H24.Name = "ucSplitLine_H24"; + this.ucSplitLine_H24.Size = new System.Drawing.Size(669, 1); + this.ucSplitLine_H24.TabIndex = 4; + this.ucSplitLine_H24.TabStop = false; + // + // ucSplitLine_H31 + // + this.ucSplitLine_H31.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_H31.Dock = System.Windows.Forms.DockStyle.Top; + this.ucSplitLine_H31.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_H31.Location = new System.Drawing.Point(1, 0); + this.ucSplitLine_H31.Name = "ucSplitLine_H31"; + this.ucSplitLine_H31.Size = new System.Drawing.Size(669, 1); + this.ucSplitLine_H31.TabIndex = 5; + this.ucSplitLine_H31.TabStop = false; + // + // UCKeyBorderAll + // + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; + this.BackColor = System.Drawing.Color.White; + this.Controls.Add(this.tableLayoutPanel2); + this.Controls.Add(this.ucSplitLine_H31); + this.Controls.Add(this.ucSplitLine_H24); + this.Controls.Add(this.ucSplitLine_V14); + this.Controls.Add(this.ucSplitLine_V4); + this.Margin = new System.Windows.Forms.Padding(0); + this.Name = "UCKeyBorderAll"; + this.Size = new System.Drawing.Size(671, 273); + this.tableLayoutPanel2.ResumeLayout(false); + this.panel39.ResumeLayout(false); + this.panel37.ResumeLayout(false); + this.panel36.ResumeLayout(false); + this.panel35.ResumeLayout(false); + this.panel33.ResumeLayout(false); + this.panel30.ResumeLayout(false); + this.panel29.ResumeLayout(false); + this.panel28.ResumeLayout(false); + this.panel27.ResumeLayout(false); + this.panel26.ResumeLayout(false); + this.panel25.ResumeLayout(false); + this.panel23.ResumeLayout(false); + this.panel22.ResumeLayout(false); + this.panel21.ResumeLayout(false); + this.panel20.ResumeLayout(false); + this.panel19.ResumeLayout(false); + this.panel18.ResumeLayout(false); + this.panel17.ResumeLayout(false); + this.panel16.ResumeLayout(false); + this.panel15.ResumeLayout(false); + this.panel14.ResumeLayout(false); + this.panel13.ResumeLayout(false); + this.panel12.ResumeLayout(false); + this.panel11.ResumeLayout(false); + this.panel10.ResumeLayout(false); + this.panel9.ResumeLayout(false); + this.panel8.ResumeLayout(false); + this.panel7.ResumeLayout(false); + this.panel6.ResumeLayout(false); + this.panel5.ResumeLayout(false); + this.panel4.ResumeLayout(false); + this.panel3.ResumeLayout(false); + this.panel2.ResumeLayout(false); + this.panel1.ResumeLayout(false); + this.ResumeLayout(false); + + } + + #endregion + + /// + /// The table layout panel2 + /// + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2; + /// + /// The panel39 + /// + private System.Windows.Forms.Panel panel39; + /// + /// The label39 + /// + private System.Windows.Forms.Label label39; + /// + /// The uc split line V39 + /// + private UCSplitLine_V ucSplitLine_V39; + /// + /// The panel37 + /// + private System.Windows.Forms.Panel panel37; + /// + /// The label37 + /// + private System.Windows.Forms.Label label37; + /// + /// The uc split line V37 + /// + private UCSplitLine_V ucSplitLine_V37; + /// + /// The panel36 + /// + private System.Windows.Forms.Panel panel36; + /// + /// The label36 + /// + private System.Windows.Forms.Label label36; + /// + /// The uc split line V36 + /// + private UCSplitLine_V ucSplitLine_V36; + /// + /// The panel35 + /// + private System.Windows.Forms.Panel panel35; + /// + /// The label35 + /// + private System.Windows.Forms.Label label35; + /// + /// The panel33 + /// + private System.Windows.Forms.Panel panel33; + /// + /// The label33 + /// + private System.Windows.Forms.Label label33; + /// + /// The uc split line V33 + /// + private UCSplitLine_V ucSplitLine_V33; + /// + /// The panel30 + /// + private System.Windows.Forms.Panel panel30; + /// + /// The label30 + /// + private System.Windows.Forms.Label label30; + /// + /// The uc split line H30 + /// + private UCSplitLine_H ucSplitLine_H30; + /// + /// The uc split line V30 + /// + private UCSplitLine_V ucSplitLine_V30; + /// + /// The panel29 + /// + private System.Windows.Forms.Panel panel29; + /// + /// The label29 + /// + private System.Windows.Forms.Label label29; + /// + /// The uc split line H29 + /// + private UCSplitLine_H ucSplitLine_H29; + /// + /// The uc split line V29 + /// + private UCSplitLine_V ucSplitLine_V29; + /// + /// The panel28 + /// + private System.Windows.Forms.Panel panel28; + /// + /// The label28 + /// + private System.Windows.Forms.Label label28; + /// + /// The uc split line H28 + /// + private UCSplitLine_H ucSplitLine_H28; + /// + /// The uc split line V28 + /// + private UCSplitLine_V ucSplitLine_V28; + /// + /// The panel27 + /// + private System.Windows.Forms.Panel panel27; + /// + /// The label27 + /// + private System.Windows.Forms.Label label27; + /// + /// The uc split line H27 + /// + private UCSplitLine_H ucSplitLine_H27; + /// + /// The uc split line V27 + /// + private UCSplitLine_V ucSplitLine_V27; + /// + /// The panel26 + /// + private System.Windows.Forms.Panel panel26; + /// + /// The label26 + /// + private System.Windows.Forms.Label label26; + /// + /// The uc split line H26 + /// + private UCSplitLine_H ucSplitLine_H26; + /// + /// The uc split line V26 + /// + private UCSplitLine_V ucSplitLine_V26; + /// + /// The panel25 + /// + private System.Windows.Forms.Panel panel25; + /// + /// The label25 + /// + private System.Windows.Forms.Label label25; + /// + /// The uc split line H25 + /// + private UCSplitLine_H ucSplitLine_H25; + /// + /// The panel23 + /// + private System.Windows.Forms.Panel panel23; + /// + /// The label23 + /// + private System.Windows.Forms.Label label23; + /// + /// The uc split line H23 + /// + private UCSplitLine_H ucSplitLine_H23; + /// + /// The uc split line V23 + /// + private UCSplitLine_V ucSplitLine_V23; + /// + /// The panel22 + /// + private System.Windows.Forms.Panel panel22; + /// + /// The label22 + /// + private System.Windows.Forms.Label label22; + /// + /// The uc split line H22 + /// + private UCSplitLine_H ucSplitLine_H22; + /// + /// The uc split line V22 + /// + private UCSplitLine_V ucSplitLine_V22; + /// + /// The panel21 + /// + private System.Windows.Forms.Panel panel21; + /// + /// The label21 + /// + private System.Windows.Forms.Label label21; + /// + /// The uc split line H21 + /// + private UCSplitLine_H ucSplitLine_H21; + /// + /// The uc split line V21 + /// + private UCSplitLine_V ucSplitLine_V21; + /// + /// The panel20 + /// + private System.Windows.Forms.Panel panel20; + /// + /// The label20 + /// + private System.Windows.Forms.Label label20; + /// + /// The uc split line H20 + /// + private UCSplitLine_H ucSplitLine_H20; + /// + /// The uc split line V20 + /// + private UCSplitLine_V ucSplitLine_V20; + /// + /// The panel19 + /// + private System.Windows.Forms.Panel panel19; + /// + /// The label19 + /// + private System.Windows.Forms.Label label19; + /// + /// The uc split line H19 + /// + private UCSplitLine_H ucSplitLine_H19; + /// + /// The uc split line V19 + /// + private UCSplitLine_V ucSplitLine_V19; + /// + /// The panel18 + /// + private System.Windows.Forms.Panel panel18; + /// + /// The label18 + /// + private System.Windows.Forms.Label label18; + /// + /// The uc split line H18 + /// + private UCSplitLine_H ucSplitLine_H18; + /// + /// The uc split line V18 + /// + private UCSplitLine_V ucSplitLine_V18; + /// + /// The panel17 + /// + private System.Windows.Forms.Panel panel17; + /// + /// The label17 + /// + private System.Windows.Forms.Label label17; + /// + /// The uc split line H17 + /// + private UCSplitLine_H ucSplitLine_H17; + /// + /// The uc split line V17 + /// + private UCSplitLine_V ucSplitLine_V17; + /// + /// The panel16 + /// + private System.Windows.Forms.Panel panel16; + /// + /// The label16 + /// + private System.Windows.Forms.Label label16; + /// + /// The uc split line H16 + /// + private UCSplitLine_H ucSplitLine_H16; + /// + /// The uc split line V16 + /// + private UCSplitLine_V ucSplitLine_V16; + /// + /// The panel15 + /// + private System.Windows.Forms.Panel panel15; + /// + /// The label15 + /// + private System.Windows.Forms.Label label15; + /// + /// The uc split line H15 + /// + private UCSplitLine_H ucSplitLine_H15; + /// + /// The uc split line V15 + /// + private UCSplitLine_V ucSplitLine_V15; + /// + /// The panel14 + /// + private System.Windows.Forms.Panel panel14; + /// + /// The label14 + /// + private System.Windows.Forms.Label label14; + /// + /// The uc split line H14 + /// + private UCSplitLine_H ucSplitLine_H14; + /// + /// The panel13 + /// + private System.Windows.Forms.Panel panel13; + /// + /// The label13 + /// + private System.Windows.Forms.Label label13; + /// + /// The uc split line H13 + /// + private UCSplitLine_H ucSplitLine_H13; + /// + /// The uc split line V13 + /// + private UCSplitLine_V ucSplitLine_V13; + /// + /// The panel12 + /// + private System.Windows.Forms.Panel panel12; + /// + /// The label12 + /// + private System.Windows.Forms.Label label12; + /// + /// The uc split line H12 + /// + private UCSplitLine_H ucSplitLine_H12; + /// + /// The uc split line V12 + /// + private UCSplitLine_V ucSplitLine_V12; + /// + /// The panel11 + /// + private System.Windows.Forms.Panel panel11; + /// + /// The label11 + /// + private System.Windows.Forms.Label label11; + /// + /// The uc split line H11 + /// + private UCSplitLine_H ucSplitLine_H11; + /// + /// The uc split line V11 + /// + private UCSplitLine_V ucSplitLine_V11; + /// + /// The panel10 + /// + private System.Windows.Forms.Panel panel10; + /// + /// The label10 + /// + private System.Windows.Forms.Label label10; + /// + /// The uc split line H10 + /// + private UCSplitLine_H ucSplitLine_H10; + /// + /// The uc split line V10 + /// + private UCSplitLine_V ucSplitLine_V10; + /// + /// The panel9 + /// + private System.Windows.Forms.Panel panel9; + /// + /// The label9 + /// + private System.Windows.Forms.Label label9; + /// + /// The uc split line h9 + /// + private UCSplitLine_H ucSplitLine_H9; + /// + /// The uc split line v9 + /// + private UCSplitLine_V ucSplitLine_V9; + /// + /// The panel8 + /// + private System.Windows.Forms.Panel panel8; + /// + /// The label8 + /// + private System.Windows.Forms.Label label8; + /// + /// The uc split line h8 + /// + private UCSplitLine_H ucSplitLine_H8; + /// + /// The uc split line v8 + /// + private UCSplitLine_V ucSplitLine_V8; + /// + /// The panel7 + /// + private System.Windows.Forms.Panel panel7; + /// + /// The label7 + /// + private System.Windows.Forms.Label label7; + /// + /// The uc split line h7 + /// + private UCSplitLine_H ucSplitLine_H7; + /// + /// The uc split line v7 + /// + private UCSplitLine_V ucSplitLine_V7; + /// + /// The panel6 + /// + private System.Windows.Forms.Panel panel6; + /// + /// The label6 + /// + private System.Windows.Forms.Label label6; + /// + /// The uc split line h6 + /// + private UCSplitLine_H ucSplitLine_H6; + /// + /// The uc split line v6 + /// + private UCSplitLine_V ucSplitLine_V6; + /// + /// The panel5 + /// + private System.Windows.Forms.Panel panel5; + /// + /// The label5 + /// + private System.Windows.Forms.Label label5; + /// + /// The uc split line h5 + /// + private UCSplitLine_H ucSplitLine_H5; + /// + /// The uc split line v5 + /// + private UCSplitLine_V ucSplitLine_V5; + /// + /// The panel4 + /// + private System.Windows.Forms.Panel panel4; + /// + /// The label4 + /// + private System.Windows.Forms.Label label4; + /// + /// The uc split line h4 + /// + private UCSplitLine_H ucSplitLine_H4; + /// + /// The panel3 + /// + private System.Windows.Forms.Panel panel3; + /// + /// The label3 + /// + private System.Windows.Forms.Label label3; + /// + /// The uc split line h3 + /// + private UCSplitLine_H ucSplitLine_H3; + /// + /// The uc split line v3 + /// + private UCSplitLine_V ucSplitLine_V3; + /// + /// The panel2 + /// + private System.Windows.Forms.Panel panel2; + /// + /// The label2 + /// + private System.Windows.Forms.Label label2; + /// + /// The uc split line h2 + /// + private UCSplitLine_H ucSplitLine_H2; + /// + /// The uc split line v2 + /// + private UCSplitLine_V ucSplitLine_V2; + /// + /// The panel1 + /// + private System.Windows.Forms.Panel panel1; + /// + /// The label1 + /// + private System.Windows.Forms.Label label1; + /// + /// The uc split line h1 + /// + private UCSplitLine_H ucSplitLine_H1; + /// + /// The uc split line v1 + /// + private UCSplitLine_V ucSplitLine_V1; + /// + /// The uc split line v4 + /// + private UCSplitLine_V ucSplitLine_V4; + /// + /// The uc split line V14 + /// + private UCSplitLine_V ucSplitLine_V14; + /// + /// The uc split line H24 + /// + private UCSplitLine_H ucSplitLine_H24; + /// + /// The uc split line H31 + /// + private UCSplitLine_H ucSplitLine_H31; + } +} diff --git a/UsingControl/HZHControls/Controls/KeyBord/UCKeyBorderAll.cs b/UsingControl/HZHControls/Controls/KeyBord/UCKeyBorderAll.cs new file mode 100644 index 0000000..219cecf --- /dev/null +++ b/UsingControl/HZHControls/Controls/KeyBord/UCKeyBorderAll.cs @@ -0,0 +1,219 @@ +// *********************************************************************** +// Assembly : HZH_Controls +// Created : 08-08-2019 +// +// *********************************************************************** +// +// Copyright by Huang Zhenghui(黄正辉) All, QQ group:568015492 QQ:623128629 Email:623128629@qq.com +// +// +// Blog: https://www.cnblogs.com/bfyx +// GitHub:https://github.com/kwwwvagaa/NetWinformControl +// gitee:https://gitee.com/kwwwvagaa/net_winform_custom_control.git +// +// If you use this code, please keep this note. +// *********************************************************************** +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace HZH_Controls.Controls +{ + /// + /// Class UCKeyBorderAll. + /// Implements the + /// + /// + [DefaultEvent("KeyDown")] + public partial class UCKeyBorderAll : UserControl + { + /// + /// The character type + /// + private KeyBorderCharType _charType = KeyBorderCharType.CHAR; + + /// + /// Gets or sets the type of the character. + /// + /// The type of the character. + [Description("默认显示样式"), Category("自定义")] + public KeyBorderCharType CharType + { + get { return _charType; } + set + { + _charType = value; + if (value == KeyBorderCharType.CHAR) + { + if (label37.Text.ToLower() == "abc.") + { + CharOrNum(); + } + } + else + { + if (label37.Text.ToLower() == "?123") + { + CharOrNum(); + } + } + } + } + /// + /// Occurs when [key click]. + /// + [Description("按键点击事件"), Category("自定义")] + public event EventHandler KeyClick; + /// + /// Occurs when [enter click]. + /// + [Description("回车点击事件"), Category("自定义")] + public event EventHandler EnterClick; + /// + /// Occurs when [backspace clike]. + /// + [Description("删除点击事件"), Category("自定义")] + public event EventHandler BackspaceClike; + /// + /// Occurs when [retract clike]. + /// + [Description("收起点击事件"), Category("自定义")] + public event EventHandler RetractClike; + /// + /// Initializes a new instance of the class. + /// + public UCKeyBorderAll() + { + InitializeComponent(); + } + + /// + /// Handles the MouseDown event of the KeyDown control. + /// + /// The source of the event. + /// The instance containing the event data. + private void KeyDown_MouseDown(object sender, MouseEventArgs e) + { + Label lbl = sender as Label; + if (string.IsNullOrEmpty(lbl.Text)) + { + return; + } + if (lbl.Text == "大写") + { + ToUper(true); + lbl.Text = "小写"; + } + else if (lbl.Text == "小写") + { + ToUper(false); + lbl.Text = "大写"; + } + else if (lbl.Text == "?123" || lbl.Text == "abc.") + { + CharOrNum(); + } + else if (lbl.Text == "空格") + { + SendKeys.Send(" "); + } + else if (lbl.Text == "删除") + { + SendKeys.Send("{BACKSPACE}"); + if (BackspaceClike != null) + BackspaceClike(sender, e); + } + else if (lbl.Text == "回车") + { + SendKeys.Send("{ENTER}"); + if (EnterClick != null) + EnterClick(sender, e); + } + else if (lbl.Text == "收起") + { + if (RetractClike != null) + RetractClike(sender, e); + } + else + { + string Str = "{"+ lbl.Text + "}"; + SendKeys.Send(lbl.Text); + } + if (KeyClick != null) + KeyClick(sender, e); + } + + /// + /// Converts to uper. + /// + /// if set to true [BLN]. + private void ToUper(bool bln) + { + foreach (Control item in this.tableLayoutPanel2.Controls) + { + if (item is Panel) + { + foreach (Control pc in item.Controls) + { + if (pc is Label) + { + if (pc.Text == "abc.") + break; + if (bln) + { + pc.Text = pc.Text.ToUpper(); + } + else + { + pc.Text = pc.Text.ToLower(); + } + break; + } + } + } + } + } + + /// + /// Characters the or number. + /// + private void CharOrNum() + { + foreach (Control item in this.tableLayoutPanel2.Controls) + { + if (item is Panel) + { + foreach (Control pc in item.Controls) + { + if (pc is Label) + { + string strTag = pc.Text; + pc.Text = pc.Tag.ToString(); + pc.Tag = strTag; + break; + } + } + } + } + } + } + /// + /// Enum KeyBorderCharType + /// + public enum KeyBorderCharType + { + /// + /// The character + /// + CHAR = 1, + /// + /// The number + /// + NUMBER = 2 + } +} diff --git a/UsingControl/HZHControls/Controls/KeyBord/UCKeyBorderAll.resx b/UsingControl/HZHControls/Controls/KeyBord/UCKeyBorderAll.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/UsingControl/HZHControls/Controls/KeyBord/UCKeyBorderAll.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/UsingControl/HZHControls/Controls/KeyBord/UCKeyBorderNum.Designer.cs b/UsingControl/HZHControls/Controls/KeyBord/UCKeyBorderNum.Designer.cs new file mode 100644 index 0000000..db2eb9e --- /dev/null +++ b/UsingControl/HZHControls/Controls/KeyBord/UCKeyBorderNum.Designer.cs @@ -0,0 +1,1074 @@ +// *********************************************************************** +// Assembly : HZH_Controls +// Created : 08-08-2019 +// +// *********************************************************************** +// +// Copyright by Huang Zhenghui(黄正辉) All, QQ group:568015492 QQ:623128629 Email:623128629@qq.com +// +// +// Blog: https://www.cnblogs.com/bfyx +// GitHub:https://github.com/kwwwvagaa/NetWinformControl +// gitee:https://gitee.com/kwwwvagaa/net_winform_custom_control.git +// +// If you use this code, please keep this note. +// *********************************************************************** +namespace HZH_Controls.Controls +{ + /// + /// Class UCKeyBorderNum. + /// Implements the + /// + /// + partial class UCKeyBorderNum + { + /// + /// 必需的设计器变量。 + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 清理所有正在使用的资源。 + /// + /// 如果应释放托管资源,为 true;否则为 false。 + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region 组件设计器生成的代码 + + /// + /// 设计器支持所需的方法 - 不要 + /// 使用代码编辑器修改此方法的内容。 + /// + private void InitializeComponent() + { + this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); + this.panel14 = new System.Windows.Forms.Panel(); + this.label11 = new System.Windows.Forms.Label(); + this.ucSplitLine_V14 = new HZH_Controls.Controls.UCSplitLine_V(); + this.panel13 = new System.Windows.Forms.Panel(); + this.label12 = new System.Windows.Forms.Label(); + this.ucSplitLine_V13 = new HZH_Controls.Controls.UCSplitLine_V(); + this.panel12 = new System.Windows.Forms.Panel(); + this.label13 = new System.Windows.Forms.Label(); + this.ucSplitLine_V12 = new HZH_Controls.Controls.UCSplitLine_V(); + this.panel11 = new System.Windows.Forms.Panel(); + this.label10 = new System.Windows.Forms.Label(); + this.ucSplitLine_H11 = new HZH_Controls.Controls.UCSplitLine_H(); + this.ucSplitLine_V11 = new HZH_Controls.Controls.UCSplitLine_V(); + this.panel10 = new System.Windows.Forms.Panel(); + this.label9 = new System.Windows.Forms.Label(); + this.ucSplitLine_H10 = new HZH_Controls.Controls.UCSplitLine_H(); + this.ucSplitLine_V10 = new HZH_Controls.Controls.UCSplitLine_V(); + this.panel9 = new System.Windows.Forms.Panel(); + this.label8 = new System.Windows.Forms.Label(); + this.ucSplitLine_H9 = new HZH_Controls.Controls.UCSplitLine_H(); + this.ucSplitLine_V9 = new HZH_Controls.Controls.UCSplitLine_V(); + this.panel8 = new System.Windows.Forms.Panel(); + this.label6 = new System.Windows.Forms.Label(); + this.ucSplitLine_H8 = new HZH_Controls.Controls.UCSplitLine_H(); + this.ucSplitLine_V8 = new HZH_Controls.Controls.UCSplitLine_V(); + this.panel7 = new System.Windows.Forms.Panel(); + this.label14 = new System.Windows.Forms.Label(); + this.panel6 = new System.Windows.Forms.Panel(); + this.label7 = new System.Windows.Forms.Label(); + this.ucSplitLine_H6 = new HZH_Controls.Controls.UCSplitLine_H(); + this.ucSplitLine_V6 = new HZH_Controls.Controls.UCSplitLine_V(); + this.panel5 = new System.Windows.Forms.Panel(); + this.label3 = new System.Windows.Forms.Label(); + this.ucSplitLine_H5 = new HZH_Controls.Controls.UCSplitLine_H(); + this.ucSplitLine_V5 = new HZH_Controls.Controls.UCSplitLine_V(); + this.panel4 = new System.Windows.Forms.Panel(); + this.label5 = new System.Windows.Forms.Label(); + this.ucSplitLine_H4 = new HZH_Controls.Controls.UCSplitLine_H(); + this.ucSplitLine_V4 = new HZH_Controls.Controls.UCSplitLine_V(); + this.panel3 = new System.Windows.Forms.Panel(); + this.label4 = new System.Windows.Forms.Label(); + this.ucSplitLine_H3 = new HZH_Controls.Controls.UCSplitLine_H(); + this.panel2 = new System.Windows.Forms.Panel(); + this.label2 = new System.Windows.Forms.Label(); + this.ucSplitLine_H2 = new HZH_Controls.Controls.UCSplitLine_H(); + this.ucSplitLine_V2 = new HZH_Controls.Controls.UCSplitLine_V(); + this.panel1 = new System.Windows.Forms.Panel(); + this.label1 = new System.Windows.Forms.Label(); + this.ucSplitLine_H1 = new HZH_Controls.Controls.UCSplitLine_H(); + this.ucSplitLine_V1 = new HZH_Controls.Controls.UCSplitLine_V(); + this.ucSplitLine_V3 = new HZH_Controls.Controls.UCSplitLine_V(); + this.ucSplitLine_V7 = new HZH_Controls.Controls.UCSplitLine_V(); + this.ucSplitLine_H7 = new HZH_Controls.Controls.UCSplitLine_H(); + this.ucSplitLine_H12 = new HZH_Controls.Controls.UCSplitLine_H(); + this.tableLayoutPanel1.SuspendLayout(); + this.panel14.SuspendLayout(); + this.panel13.SuspendLayout(); + this.panel12.SuspendLayout(); + this.panel11.SuspendLayout(); + this.panel10.SuspendLayout(); + this.panel9.SuspendLayout(); + this.panel8.SuspendLayout(); + this.panel7.SuspendLayout(); + this.panel6.SuspendLayout(); + this.panel5.SuspendLayout(); + this.panel4.SuspendLayout(); + this.panel3.SuspendLayout(); + this.panel2.SuspendLayout(); + this.panel1.SuspendLayout(); + this.SuspendLayout(); + // + // tableLayoutPanel1 + // + this.tableLayoutPanel1.ColumnCount = 4; + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25F)); + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25F)); + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25F)); + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25F)); + this.tableLayoutPanel1.Controls.Add(this.panel14, 0, 3); + this.tableLayoutPanel1.Controls.Add(this.panel13, 0, 3); + this.tableLayoutPanel1.Controls.Add(this.panel12, 0, 3); + this.tableLayoutPanel1.Controls.Add(this.panel11, 0, 2); + this.tableLayoutPanel1.Controls.Add(this.panel10, 1, 2); + this.tableLayoutPanel1.Controls.Add(this.panel9, 2, 2); + this.tableLayoutPanel1.Controls.Add(this.panel8, 1, 1); + this.tableLayoutPanel1.Controls.Add(this.panel7, 3, 1); + this.tableLayoutPanel1.Controls.Add(this.panel6, 2, 1); + this.tableLayoutPanel1.Controls.Add(this.panel5, 2, 0); + this.tableLayoutPanel1.Controls.Add(this.panel4, 0, 1); + this.tableLayoutPanel1.Controls.Add(this.panel3, 3, 0); + this.tableLayoutPanel1.Controls.Add(this.panel2, 1, 0); + this.tableLayoutPanel1.Controls.Add(this.panel1, 0, 0); + this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.tableLayoutPanel1.Location = new System.Drawing.Point(1, 1); + this.tableLayoutPanel1.Margin = new System.Windows.Forms.Padding(0); + this.tableLayoutPanel1.Name = "tableLayoutPanel1"; + this.tableLayoutPanel1.RowCount = 4; + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F)); + this.tableLayoutPanel1.Size = new System.Drawing.Size(422, 216); + this.tableLayoutPanel1.TabIndex = 0; + // + // panel14 + // + this.panel14.Controls.Add(this.label11); + this.panel14.Controls.Add(this.ucSplitLine_V14); + this.panel14.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel14.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.panel14.Location = new System.Drawing.Point(0, 162); + this.panel14.Margin = new System.Windows.Forms.Padding(0); + this.panel14.Name = "panel14"; + this.panel14.Size = new System.Drawing.Size(105, 54); + this.panel14.TabIndex = 13; + // + // label11 + // + this.label11.Dock = System.Windows.Forms.DockStyle.Fill; + this.label11.Font = new System.Drawing.Font("Arial Unicode MS", 30F); + this.label11.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.label11.Location = new System.Drawing.Point(0, 0); + this.label11.Name = "label11"; + this.label11.Size = new System.Drawing.Size(104, 54); + this.label11.TabIndex = 3; + this.label11.Tag = "00"; + this.label11.Text = "00"; + this.label11.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label11.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Num_MouseDown); + // + // ucSplitLine_V14 + // + this.ucSplitLine_V14.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_V14.Dock = System.Windows.Forms.DockStyle.Right; + this.ucSplitLine_V14.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_V14.Location = new System.Drawing.Point(104, 0); + this.ucSplitLine_V14.Name = "ucSplitLine_V14"; + this.ucSplitLine_V14.Size = new System.Drawing.Size(1, 54); + this.ucSplitLine_V14.TabIndex = 0; + this.ucSplitLine_V14.TabStop = false; + // + // panel13 + // + this.panel13.Controls.Add(this.label12); + this.panel13.Controls.Add(this.ucSplitLine_V13); + this.panel13.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel13.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.panel13.Location = new System.Drawing.Point(105, 162); + this.panel13.Margin = new System.Windows.Forms.Padding(0); + this.panel13.Name = "panel13"; + this.panel13.Size = new System.Drawing.Size(105, 54); + this.panel13.TabIndex = 12; + // + // label12 + // + this.label12.Dock = System.Windows.Forms.DockStyle.Fill; + this.label12.Font = new System.Drawing.Font("Arial Unicode MS", 30F); + this.label12.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.label12.Location = new System.Drawing.Point(0, 0); + this.label12.Name = "label12"; + this.label12.Size = new System.Drawing.Size(104, 54); + this.label12.TabIndex = 3; + this.label12.Tag = "0"; + this.label12.Text = "0"; + this.label12.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label12.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Num_MouseDown); + // + // ucSplitLine_V13 + // + this.ucSplitLine_V13.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_V13.Dock = System.Windows.Forms.DockStyle.Right; + this.ucSplitLine_V13.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_V13.Location = new System.Drawing.Point(104, 0); + this.ucSplitLine_V13.Name = "ucSplitLine_V13"; + this.ucSplitLine_V13.Size = new System.Drawing.Size(1, 54); + this.ucSplitLine_V13.TabIndex = 0; + this.ucSplitLine_V13.TabStop = false; + // + // panel12 + // + this.panel12.Controls.Add(this.label13); + this.panel12.Controls.Add(this.ucSplitLine_V12); + this.panel12.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel12.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.panel12.Location = new System.Drawing.Point(210, 162); + this.panel12.Margin = new System.Windows.Forms.Padding(0); + this.panel12.Name = "panel12"; + this.panel12.Size = new System.Drawing.Size(105, 54); + this.panel12.TabIndex = 11; + // + // label13 + // + this.label13.Dock = System.Windows.Forms.DockStyle.Fill; + this.label13.Font = new System.Drawing.Font("Arial Unicode MS", 30F); + this.label13.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.label13.Location = new System.Drawing.Point(0, 0); + this.label13.Name = "label13"; + this.label13.Size = new System.Drawing.Size(104, 54); + this.label13.TabIndex = 3; + this.label13.Tag = "."; + this.label13.Text = "."; + this.label13.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label13.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Num_MouseDown); + // + // ucSplitLine_V12 + // + this.ucSplitLine_V12.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_V12.Dock = System.Windows.Forms.DockStyle.Right; + this.ucSplitLine_V12.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_V12.Location = new System.Drawing.Point(104, 0); + this.ucSplitLine_V12.Name = "ucSplitLine_V12"; + this.ucSplitLine_V12.Size = new System.Drawing.Size(1, 54); + this.ucSplitLine_V12.TabIndex = 0; + this.ucSplitLine_V12.TabStop = false; + // + // panel11 + // + this.panel11.Controls.Add(this.label10); + this.panel11.Controls.Add(this.ucSplitLine_H11); + this.panel11.Controls.Add(this.ucSplitLine_V11); + this.panel11.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel11.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.panel11.Location = new System.Drawing.Point(0, 108); + this.panel11.Margin = new System.Windows.Forms.Padding(0); + this.panel11.Name = "panel11"; + this.panel11.Size = new System.Drawing.Size(105, 54); + this.panel11.TabIndex = 10; + // + // label10 + // + this.label10.Dock = System.Windows.Forms.DockStyle.Fill; + this.label10.Font = new System.Drawing.Font("Arial Unicode MS", 30F); + this.label10.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.label10.Location = new System.Drawing.Point(0, 0); + this.label10.Name = "label10"; + this.label10.Size = new System.Drawing.Size(104, 53); + this.label10.TabIndex = 3; + this.label10.Tag = "7"; + this.label10.Text = "7"; + this.label10.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label10.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Num_MouseDown); + // + // ucSplitLine_H11 + // + this.ucSplitLine_H11.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_H11.Dock = System.Windows.Forms.DockStyle.Bottom; + this.ucSplitLine_H11.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_H11.Location = new System.Drawing.Point(0, 53); + this.ucSplitLine_H11.Name = "ucSplitLine_H11"; + this.ucSplitLine_H11.Size = new System.Drawing.Size(104, 1); + this.ucSplitLine_H11.TabIndex = 1; + this.ucSplitLine_H11.TabStop = false; + // + // ucSplitLine_V11 + // + this.ucSplitLine_V11.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_V11.Dock = System.Windows.Forms.DockStyle.Right; + this.ucSplitLine_V11.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_V11.Location = new System.Drawing.Point(104, 0); + this.ucSplitLine_V11.Name = "ucSplitLine_V11"; + this.ucSplitLine_V11.Size = new System.Drawing.Size(1, 54); + this.ucSplitLine_V11.TabIndex = 0; + this.ucSplitLine_V11.TabStop = false; + // + // panel10 + // + this.panel10.Controls.Add(this.label9); + this.panel10.Controls.Add(this.ucSplitLine_H10); + this.panel10.Controls.Add(this.ucSplitLine_V10); + this.panel10.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel10.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.panel10.Location = new System.Drawing.Point(105, 108); + this.panel10.Margin = new System.Windows.Forms.Padding(0); + this.panel10.Name = "panel10"; + this.panel10.Size = new System.Drawing.Size(105, 54); + this.panel10.TabIndex = 9; + // + // label9 + // + this.label9.Dock = System.Windows.Forms.DockStyle.Fill; + this.label9.Font = new System.Drawing.Font("Arial Unicode MS", 30F); + this.label9.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.label9.Location = new System.Drawing.Point(0, 0); + this.label9.Name = "label9"; + this.label9.Size = new System.Drawing.Size(104, 53); + this.label9.TabIndex = 3; + this.label9.Tag = "8"; + this.label9.Text = "8"; + this.label9.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label9.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Num_MouseDown); + // + // ucSplitLine_H10 + // + this.ucSplitLine_H10.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_H10.Dock = System.Windows.Forms.DockStyle.Bottom; + this.ucSplitLine_H10.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_H10.Location = new System.Drawing.Point(0, 53); + this.ucSplitLine_H10.Name = "ucSplitLine_H10"; + this.ucSplitLine_H10.Size = new System.Drawing.Size(104, 1); + this.ucSplitLine_H10.TabIndex = 1; + this.ucSplitLine_H10.TabStop = false; + // + // ucSplitLine_V10 + // + this.ucSplitLine_V10.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_V10.Dock = System.Windows.Forms.DockStyle.Right; + this.ucSplitLine_V10.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_V10.Location = new System.Drawing.Point(104, 0); + this.ucSplitLine_V10.Name = "ucSplitLine_V10"; + this.ucSplitLine_V10.Size = new System.Drawing.Size(1, 54); + this.ucSplitLine_V10.TabIndex = 0; + this.ucSplitLine_V10.TabStop = false; + // + // panel9 + // + this.panel9.Controls.Add(this.label8); + this.panel9.Controls.Add(this.ucSplitLine_H9); + this.panel9.Controls.Add(this.ucSplitLine_V9); + this.panel9.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel9.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.panel9.Location = new System.Drawing.Point(210, 108); + this.panel9.Margin = new System.Windows.Forms.Padding(0); + this.panel9.Name = "panel9"; + this.panel9.Size = new System.Drawing.Size(105, 54); + this.panel9.TabIndex = 8; + // + // label8 + // + this.label8.Dock = System.Windows.Forms.DockStyle.Fill; + this.label8.Font = new System.Drawing.Font("Arial Unicode MS", 30F); + this.label8.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.label8.Location = new System.Drawing.Point(0, 0); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(104, 53); + this.label8.TabIndex = 3; + this.label8.Tag = "9"; + this.label8.Text = "9"; + this.label8.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label8.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Num_MouseDown); + // + // ucSplitLine_H9 + // + this.ucSplitLine_H9.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_H9.Dock = System.Windows.Forms.DockStyle.Bottom; + this.ucSplitLine_H9.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_H9.Location = new System.Drawing.Point(0, 53); + this.ucSplitLine_H9.Name = "ucSplitLine_H9"; + this.ucSplitLine_H9.Size = new System.Drawing.Size(104, 1); + this.ucSplitLine_H9.TabIndex = 1; + this.ucSplitLine_H9.TabStop = false; + // + // ucSplitLine_V9 + // + this.ucSplitLine_V9.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_V9.Dock = System.Windows.Forms.DockStyle.Right; + this.ucSplitLine_V9.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_V9.Location = new System.Drawing.Point(104, 0); + this.ucSplitLine_V9.Name = "ucSplitLine_V9"; + this.ucSplitLine_V9.Size = new System.Drawing.Size(1, 54); + this.ucSplitLine_V9.TabIndex = 0; + this.ucSplitLine_V9.TabStop = false; + // + // panel8 + // + this.panel8.Controls.Add(this.label6); + this.panel8.Controls.Add(this.ucSplitLine_H8); + this.panel8.Controls.Add(this.ucSplitLine_V8); + this.panel8.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel8.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.panel8.Location = new System.Drawing.Point(105, 54); + this.panel8.Margin = new System.Windows.Forms.Padding(0); + this.panel8.Name = "panel8"; + this.panel8.Size = new System.Drawing.Size(105, 54); + this.panel8.TabIndex = 7; + // + // label6 + // + this.label6.Dock = System.Windows.Forms.DockStyle.Fill; + this.label6.Font = new System.Drawing.Font("Arial Unicode MS", 30F); + this.label6.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.label6.Location = new System.Drawing.Point(0, 0); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(104, 53); + this.label6.TabIndex = 3; + this.label6.Tag = "5"; + this.label6.Text = "5"; + this.label6.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label6.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Num_MouseDown); + // + // ucSplitLine_H8 + // + this.ucSplitLine_H8.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_H8.Dock = System.Windows.Forms.DockStyle.Bottom; + this.ucSplitLine_H8.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_H8.Location = new System.Drawing.Point(0, 53); + this.ucSplitLine_H8.Name = "ucSplitLine_H8"; + this.ucSplitLine_H8.Size = new System.Drawing.Size(104, 1); + this.ucSplitLine_H8.TabIndex = 1; + this.ucSplitLine_H8.TabStop = false; + // + // ucSplitLine_V8 + // + this.ucSplitLine_V8.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_V8.Dock = System.Windows.Forms.DockStyle.Right; + this.ucSplitLine_V8.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_V8.Location = new System.Drawing.Point(104, 0); + this.ucSplitLine_V8.Name = "ucSplitLine_V8"; + this.ucSplitLine_V8.Size = new System.Drawing.Size(1, 54); + this.ucSplitLine_V8.TabIndex = 0; + this.ucSplitLine_V8.TabStop = false; + // + // panel7 + // + this.panel7.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(122)))), ((int)(((byte)(122)))), ((int)(((byte)(122))))); + this.panel7.Controls.Add(this.label14); + this.panel7.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel7.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.panel7.Location = new System.Drawing.Point(315, 54); + this.panel7.Margin = new System.Windows.Forms.Padding(0); + this.panel7.Name = "panel7"; + this.tableLayoutPanel1.SetRowSpan(this.panel7, 3); + this.panel7.Size = new System.Drawing.Size(107, 162); + this.panel7.TabIndex = 6; + // + // label14 + // + this.label14.BackColor = System.Drawing.Color.White; + this.label14.Dock = System.Windows.Forms.DockStyle.Fill; + this.label14.Font = new System.Drawing.Font("微软雅黑", 30F); + this.label14.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.label14.Location = new System.Drawing.Point(0, 0); + this.label14.Name = "label14"; + this.label14.Size = new System.Drawing.Size(107, 162); + this.label14.TabIndex = 3; + this.label14.Tag = "{ENTER}"; + this.label14.Text = "确\r\n定"; + this.label14.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label14.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Enter_MouseDown); + // + // panel6 + // + this.panel6.Controls.Add(this.label7); + this.panel6.Controls.Add(this.ucSplitLine_H6); + this.panel6.Controls.Add(this.ucSplitLine_V6); + this.panel6.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel6.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.panel6.Location = new System.Drawing.Point(210, 54); + this.panel6.Margin = new System.Windows.Forms.Padding(0); + this.panel6.Name = "panel6"; + this.panel6.Size = new System.Drawing.Size(105, 54); + this.panel6.TabIndex = 5; + // + // label7 + // + this.label7.Dock = System.Windows.Forms.DockStyle.Fill; + this.label7.Font = new System.Drawing.Font("Arial Unicode MS", 30F); + this.label7.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.label7.Location = new System.Drawing.Point(0, 0); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(104, 53); + this.label7.TabIndex = 3; + this.label7.Tag = "6"; + this.label7.Text = "6"; + this.label7.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label7.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Num_MouseDown); + // + // ucSplitLine_H6 + // + this.ucSplitLine_H6.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_H6.Dock = System.Windows.Forms.DockStyle.Bottom; + this.ucSplitLine_H6.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_H6.Location = new System.Drawing.Point(0, 53); + this.ucSplitLine_H6.Name = "ucSplitLine_H6"; + this.ucSplitLine_H6.Size = new System.Drawing.Size(104, 1); + this.ucSplitLine_H6.TabIndex = 1; + this.ucSplitLine_H6.TabStop = false; + // + // ucSplitLine_V6 + // + this.ucSplitLine_V6.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_V6.Dock = System.Windows.Forms.DockStyle.Right; + this.ucSplitLine_V6.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_V6.Location = new System.Drawing.Point(104, 0); + this.ucSplitLine_V6.Name = "ucSplitLine_V6"; + this.ucSplitLine_V6.Size = new System.Drawing.Size(1, 54); + this.ucSplitLine_V6.TabIndex = 0; + this.ucSplitLine_V6.TabStop = false; + // + // panel5 + // + this.panel5.Controls.Add(this.label3); + this.panel5.Controls.Add(this.ucSplitLine_H5); + this.panel5.Controls.Add(this.ucSplitLine_V5); + this.panel5.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel5.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.panel5.Location = new System.Drawing.Point(210, 0); + this.panel5.Margin = new System.Windows.Forms.Padding(0); + this.panel5.Name = "panel5"; + this.panel5.Size = new System.Drawing.Size(105, 54); + this.panel5.TabIndex = 4; + // + // label3 + // + this.label3.Dock = System.Windows.Forms.DockStyle.Fill; + this.label3.Font = new System.Drawing.Font("Arial Unicode MS", 30F); + this.label3.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.label3.Location = new System.Drawing.Point(0, 0); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(104, 53); + this.label3.TabIndex = 3; + this.label3.Tag = "3"; + this.label3.Text = "3"; + this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label3.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Num_MouseDown); + // + // ucSplitLine_H5 + // + this.ucSplitLine_H5.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_H5.Dock = System.Windows.Forms.DockStyle.Bottom; + this.ucSplitLine_H5.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_H5.Location = new System.Drawing.Point(0, 53); + this.ucSplitLine_H5.Name = "ucSplitLine_H5"; + this.ucSplitLine_H5.Size = new System.Drawing.Size(104, 1); + this.ucSplitLine_H5.TabIndex = 1; + this.ucSplitLine_H5.TabStop = false; + // + // ucSplitLine_V5 + // + this.ucSplitLine_V5.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_V5.Dock = System.Windows.Forms.DockStyle.Right; + this.ucSplitLine_V5.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_V5.Location = new System.Drawing.Point(104, 0); + this.ucSplitLine_V5.Name = "ucSplitLine_V5"; + this.ucSplitLine_V5.Size = new System.Drawing.Size(1, 54); + this.ucSplitLine_V5.TabIndex = 0; + this.ucSplitLine_V5.TabStop = false; + // + // panel4 + // + this.panel4.Controls.Add(this.label5); + this.panel4.Controls.Add(this.ucSplitLine_H4); + this.panel4.Controls.Add(this.ucSplitLine_V4); + this.panel4.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel4.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.panel4.Location = new System.Drawing.Point(0, 54); + this.panel4.Margin = new System.Windows.Forms.Padding(0); + this.panel4.Name = "panel4"; + this.panel4.Size = new System.Drawing.Size(105, 54); + this.panel4.TabIndex = 3; + // + // label5 + // + this.label5.Dock = System.Windows.Forms.DockStyle.Fill; + this.label5.Font = new System.Drawing.Font("Arial Unicode MS", 30F); + this.label5.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.label5.Location = new System.Drawing.Point(0, 0); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(104, 53); + this.label5.TabIndex = 3; + this.label5.Tag = "4"; + this.label5.Text = "4"; + this.label5.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label5.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Num_MouseDown); + // + // ucSplitLine_H4 + // + this.ucSplitLine_H4.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_H4.Dock = System.Windows.Forms.DockStyle.Bottom; + this.ucSplitLine_H4.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_H4.Location = new System.Drawing.Point(0, 53); + this.ucSplitLine_H4.Name = "ucSplitLine_H4"; + this.ucSplitLine_H4.Size = new System.Drawing.Size(104, 1); + this.ucSplitLine_H4.TabIndex = 1; + this.ucSplitLine_H4.TabStop = false; + // + // ucSplitLine_V4 + // + this.ucSplitLine_V4.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_V4.Dock = System.Windows.Forms.DockStyle.Right; + this.ucSplitLine_V4.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_V4.Location = new System.Drawing.Point(104, 0); + this.ucSplitLine_V4.Name = "ucSplitLine_V4"; + this.ucSplitLine_V4.Size = new System.Drawing.Size(1, 54); + this.ucSplitLine_V4.TabIndex = 0; + this.ucSplitLine_V4.TabStop = false; + // + // panel3 + // + this.panel3.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(122)))), ((int)(((byte)(122)))), ((int)(((byte)(122))))); + this.panel3.Controls.Add(this.label4); + this.panel3.Controls.Add(this.ucSplitLine_H3); + this.panel3.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel3.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.panel3.Location = new System.Drawing.Point(315, 0); + this.panel3.Margin = new System.Windows.Forms.Padding(0); + this.panel3.Name = "panel3"; + this.panel3.Size = new System.Drawing.Size(107, 54); + this.panel3.TabIndex = 2; + // + // label4 + // + this.label4.BackColor = System.Drawing.Color.White; + this.label4.Dock = System.Windows.Forms.DockStyle.Fill; + this.label4.Font = new System.Drawing.Font("Arial Unicode MS", 30F); + this.label4.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.label4.Image = global::HZH_Controls.Properties.Resources.keyboard_bs; + this.label4.Location = new System.Drawing.Point(0, 0); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(107, 53); + this.label4.TabIndex = 3; + this.label4.Tag = "{BACKSPACE}"; + this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label4.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Backspace_MouseDown); + // + // ucSplitLine_H3 + // + this.ucSplitLine_H3.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_H3.Dock = System.Windows.Forms.DockStyle.Bottom; + this.ucSplitLine_H3.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_H3.Location = new System.Drawing.Point(0, 53); + this.ucSplitLine_H3.Name = "ucSplitLine_H3"; + this.ucSplitLine_H3.Size = new System.Drawing.Size(107, 1); + this.ucSplitLine_H3.TabIndex = 1; + this.ucSplitLine_H3.TabStop = false; + // + // panel2 + // + this.panel2.Controls.Add(this.label2); + this.panel2.Controls.Add(this.ucSplitLine_H2); + this.panel2.Controls.Add(this.ucSplitLine_V2); + this.panel2.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel2.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.panel2.Location = new System.Drawing.Point(105, 0); + this.panel2.Margin = new System.Windows.Forms.Padding(0); + this.panel2.Name = "panel2"; + this.panel2.Size = new System.Drawing.Size(105, 54); + this.panel2.TabIndex = 1; + // + // label2 + // + this.label2.Dock = System.Windows.Forms.DockStyle.Fill; + this.label2.Font = new System.Drawing.Font("Arial Unicode MS", 30F); + this.label2.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.label2.Location = new System.Drawing.Point(0, 0); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(104, 53); + this.label2.TabIndex = 3; + this.label2.Tag = "2"; + this.label2.Text = "2"; + this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label2.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Num_MouseDown); + // + // ucSplitLine_H2 + // + this.ucSplitLine_H2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_H2.Dock = System.Windows.Forms.DockStyle.Bottom; + this.ucSplitLine_H2.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_H2.Location = new System.Drawing.Point(0, 53); + this.ucSplitLine_H2.Name = "ucSplitLine_H2"; + this.ucSplitLine_H2.Size = new System.Drawing.Size(104, 1); + this.ucSplitLine_H2.TabIndex = 1; + this.ucSplitLine_H2.TabStop = false; + // + // ucSplitLine_V2 + // + this.ucSplitLine_V2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_V2.Dock = System.Windows.Forms.DockStyle.Right; + this.ucSplitLine_V2.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_V2.Location = new System.Drawing.Point(104, 0); + this.ucSplitLine_V2.Name = "ucSplitLine_V2"; + this.ucSplitLine_V2.Size = new System.Drawing.Size(1, 54); + this.ucSplitLine_V2.TabIndex = 0; + this.ucSplitLine_V2.TabStop = false; + // + // panel1 + // + this.panel1.Controls.Add(this.label1); + this.panel1.Controls.Add(this.ucSplitLine_H1); + this.panel1.Controls.Add(this.ucSplitLine_V1); + this.panel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.panel1.Location = new System.Drawing.Point(0, 0); + this.panel1.Margin = new System.Windows.Forms.Padding(0); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(105, 54); + this.panel1.TabIndex = 0; + // + // label1 + // + this.label1.Dock = System.Windows.Forms.DockStyle.Fill; + this.label1.Font = new System.Drawing.Font("Arial Unicode MS", 30F); + this.label1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.label1.Location = new System.Drawing.Point(0, 0); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(104, 53); + this.label1.TabIndex = 2; + this.label1.Tag = "1"; + this.label1.Text = "1"; + this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Num_MouseDown); + // + // ucSplitLine_H1 + // + this.ucSplitLine_H1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_H1.Dock = System.Windows.Forms.DockStyle.Bottom; + this.ucSplitLine_H1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_H1.Location = new System.Drawing.Point(0, 53); + this.ucSplitLine_H1.Name = "ucSplitLine_H1"; + this.ucSplitLine_H1.Size = new System.Drawing.Size(104, 1); + this.ucSplitLine_H1.TabIndex = 1; + this.ucSplitLine_H1.TabStop = false; + // + // ucSplitLine_V1 + // + this.ucSplitLine_V1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_V1.Dock = System.Windows.Forms.DockStyle.Right; + this.ucSplitLine_V1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_V1.Location = new System.Drawing.Point(104, 0); + this.ucSplitLine_V1.Name = "ucSplitLine_V1"; + this.ucSplitLine_V1.Size = new System.Drawing.Size(1, 54); + this.ucSplitLine_V1.TabIndex = 0; + this.ucSplitLine_V1.TabStop = false; + // + // ucSplitLine_V3 + // + this.ucSplitLine_V3.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_V3.Dock = System.Windows.Forms.DockStyle.Right; + this.ucSplitLine_V3.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_V3.Location = new System.Drawing.Point(423, 0); + this.ucSplitLine_V3.Name = "ucSplitLine_V3"; + this.ucSplitLine_V3.Size = new System.Drawing.Size(1, 218); + this.ucSplitLine_V3.TabIndex = 1; + this.ucSplitLine_V3.TabStop = false; + // + // ucSplitLine_V7 + // + this.ucSplitLine_V7.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_V7.Dock = System.Windows.Forms.DockStyle.Left; + this.ucSplitLine_V7.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_V7.Location = new System.Drawing.Point(0, 0); + this.ucSplitLine_V7.Name = "ucSplitLine_V7"; + this.ucSplitLine_V7.Size = new System.Drawing.Size(1, 218); + this.ucSplitLine_V7.TabIndex = 2; + this.ucSplitLine_V7.TabStop = false; + // + // ucSplitLine_H7 + // + this.ucSplitLine_H7.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_H7.Dock = System.Windows.Forms.DockStyle.Bottom; + this.ucSplitLine_H7.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_H7.Location = new System.Drawing.Point(1, 217); + this.ucSplitLine_H7.Name = "ucSplitLine_H7"; + this.ucSplitLine_H7.Size = new System.Drawing.Size(422, 1); + this.ucSplitLine_H7.TabIndex = 3; + this.ucSplitLine_H7.TabStop = false; + // + // ucSplitLine_H12 + // + this.ucSplitLine_H12.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_H12.Dock = System.Windows.Forms.DockStyle.Top; + this.ucSplitLine_H12.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.ucSplitLine_H12.Location = new System.Drawing.Point(1, 0); + this.ucSplitLine_H12.Name = "ucSplitLine_H12"; + this.ucSplitLine_H12.Size = new System.Drawing.Size(422, 1); + this.ucSplitLine_H12.TabIndex = 4; + this.ucSplitLine_H12.TabStop = false; + // + // UCKeyBorderNum + // + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; + this.BackColor = System.Drawing.Color.White; + this.Controls.Add(this.tableLayoutPanel1); + this.Controls.Add(this.ucSplitLine_H12); + this.Controls.Add(this.ucSplitLine_H7); + this.Controls.Add(this.ucSplitLine_V7); + this.Controls.Add(this.ucSplitLine_V3); + this.Name = "UCKeyBorderNum"; + this.Size = new System.Drawing.Size(424, 218); + this.tableLayoutPanel1.ResumeLayout(false); + this.panel14.ResumeLayout(false); + this.panel13.ResumeLayout(false); + this.panel12.ResumeLayout(false); + this.panel11.ResumeLayout(false); + this.panel10.ResumeLayout(false); + this.panel9.ResumeLayout(false); + this.panel8.ResumeLayout(false); + this.panel7.ResumeLayout(false); + this.panel6.ResumeLayout(false); + this.panel5.ResumeLayout(false); + this.panel4.ResumeLayout(false); + this.panel3.ResumeLayout(false); + this.panel2.ResumeLayout(false); + this.panel1.ResumeLayout(false); + this.ResumeLayout(false); + + } + + #endregion + + /// + /// The table layout panel1 + /// + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; + /// + /// The panel1 + /// + private System.Windows.Forms.Panel panel1; + /// + /// The panel14 + /// + private System.Windows.Forms.Panel panel14; + /// + /// The uc split line V14 + /// + private UCSplitLine_V ucSplitLine_V14; + /// + /// The panel13 + /// + private System.Windows.Forms.Panel panel13; + /// + /// The uc split line V13 + /// + private UCSplitLine_V ucSplitLine_V13; + /// + /// The panel12 + /// + private System.Windows.Forms.Panel panel12; + /// + /// The uc split line V12 + /// + private UCSplitLine_V ucSplitLine_V12; + /// + /// The panel11 + /// + private System.Windows.Forms.Panel panel11; + /// + /// The uc split line H11 + /// + private UCSplitLine_H ucSplitLine_H11; + /// + /// The uc split line V11 + /// + private UCSplitLine_V ucSplitLine_V11; + /// + /// The panel10 + /// + private System.Windows.Forms.Panel panel10; + /// + /// The uc split line H10 + /// + private UCSplitLine_H ucSplitLine_H10; + /// + /// The uc split line V10 + /// + private UCSplitLine_V ucSplitLine_V10; + /// + /// The panel9 + /// + private System.Windows.Forms.Panel panel9; + /// + /// The uc split line h9 + /// + private UCSplitLine_H ucSplitLine_H9; + /// + /// The uc split line v9 + /// + private UCSplitLine_V ucSplitLine_V9; + /// + /// The panel8 + /// + private System.Windows.Forms.Panel panel8; + /// + /// The uc split line h8 + /// + private UCSplitLine_H ucSplitLine_H8; + /// + /// The uc split line v8 + /// + private UCSplitLine_V ucSplitLine_V8; + /// + /// The panel7 + /// + private System.Windows.Forms.Panel panel7; + /// + /// The panel6 + /// + private System.Windows.Forms.Panel panel6; + /// + /// The uc split line h6 + /// + private UCSplitLine_H ucSplitLine_H6; + /// + /// The uc split line v6 + /// + private UCSplitLine_V ucSplitLine_V6; + /// + /// The panel5 + /// + private System.Windows.Forms.Panel panel5; + /// + /// The uc split line h5 + /// + private UCSplitLine_H ucSplitLine_H5; + /// + /// The uc split line v5 + /// + private UCSplitLine_V ucSplitLine_V5; + /// + /// The panel4 + /// + private System.Windows.Forms.Panel panel4; + /// + /// The uc split line h4 + /// + private UCSplitLine_H ucSplitLine_H4; + /// + /// The uc split line v4 + /// + private UCSplitLine_V ucSplitLine_V4; + /// + /// The panel3 + /// + private System.Windows.Forms.Panel panel3; + /// + /// The uc split line h3 + /// + private UCSplitLine_H ucSplitLine_H3; + /// + /// The panel2 + /// + private System.Windows.Forms.Panel panel2; + /// + /// The uc split line h2 + /// + private UCSplitLine_H ucSplitLine_H2; + /// + /// The uc split line v2 + /// + private UCSplitLine_V ucSplitLine_V2; + /// + /// The uc split line h1 + /// + private UCSplitLine_H ucSplitLine_H1; + /// + /// The uc split line v1 + /// + private UCSplitLine_V ucSplitLine_V1; + /// + /// The label11 + /// + private System.Windows.Forms.Label label11; + /// + /// The label12 + /// + private System.Windows.Forms.Label label12; + /// + /// The label13 + /// + private System.Windows.Forms.Label label13; + /// + /// The label10 + /// + private System.Windows.Forms.Label label10; + /// + /// The label9 + /// + private System.Windows.Forms.Label label9; + /// + /// The label8 + /// + private System.Windows.Forms.Label label8; + /// + /// The label6 + /// + private System.Windows.Forms.Label label6; + /// + /// The label14 + /// + private System.Windows.Forms.Label label14; + /// + /// The label7 + /// + private System.Windows.Forms.Label label7; + /// + /// The label3 + /// + private System.Windows.Forms.Label label3; + /// + /// The label5 + /// + private System.Windows.Forms.Label label5; + /// + /// The label4 + /// + private System.Windows.Forms.Label label4; + /// + /// The label2 + /// + private System.Windows.Forms.Label label2; + /// + /// The label1 + /// + private System.Windows.Forms.Label label1; + /// + /// The uc split line v3 + /// + private UCSplitLine_V ucSplitLine_V3; + /// + /// The uc split line v7 + /// + private UCSplitLine_V ucSplitLine_V7; + /// + /// The uc split line h7 + /// + private UCSplitLine_H ucSplitLine_H7; + /// + /// The uc split line H12 + /// + private UCSplitLine_H ucSplitLine_H12; + } +} diff --git a/UsingControl/HZHControls/Controls/KeyBord/UCKeyBorderNum.cs b/UsingControl/HZHControls/Controls/KeyBord/UCKeyBorderNum.cs new file mode 100644 index 0000000..e0bdfa3 --- /dev/null +++ b/UsingControl/HZHControls/Controls/KeyBord/UCKeyBorderNum.cs @@ -0,0 +1,121 @@ +// *********************************************************************** +// Assembly : HZH_Controls +// Created : 08-08-2019 +// +// *********************************************************************** +// +// Copyright by Huang Zhenghui(黄正辉) All, QQ group:568015492 QQ:623128629 Email:623128629@qq.com +// +// +// Blog: https://www.cnblogs.com/bfyx +// GitHub:https://github.com/kwwwvagaa/NetWinformControl +// gitee:https://gitee.com/kwwwvagaa/net_winform_custom_control.git +// +// If you use this code, please keep this note. +// *********************************************************************** +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace HZH_Controls.Controls +{ + /// + /// Class UCKeyBorderNum. + /// Implements the + /// + /// + public partial class UCKeyBorderNum : UserControl + { + /// + /// The use custom event + /// + private bool useCustomEvent = false; + /// + /// 是否使用自定义的事件来接收按键,当为true时将不再向系统发送按键请求 + /// + /// true if [use custom event]; otherwise, false. + [Description("是否使用自定义的事件来接收按键,当为true时将不再向系统发送按键请求"), Category("自定义")] + public bool UseCustomEvent + { + get { return useCustomEvent; } + set { useCustomEvent = value; } + } + /// + /// Occurs when [number click]. + /// + [Description("数字点击事件"), Category("自定义")] + public event EventHandler NumClick; + /// + /// Occurs when [backspace click]. + /// + [Description("删除点击事件"), Category("自定义")] + public event EventHandler BackspaceClick; + /// + /// Occurs when [enter click]. + /// + [Description("回车点击事件"), Category("自定义")] + public event EventHandler EnterClick; + /// + /// Initializes a new instance of the class. + /// + public UCKeyBorderNum() + { + InitializeComponent(); + } + + /// + /// Handles the MouseDown event of the Num control. + /// + /// The source of the event. + /// The instance containing the event data. + private void Num_MouseDown(object sender, MouseEventArgs e) + { + if (NumClick != null) + { + NumClick(sender, e); + } + if (useCustomEvent) + return; + Label lbl = sender as Label; + SendKeys.Send(lbl.Tag.ToString()); + } + + /// + /// Handles the MouseDown event of the Backspace control. + /// + /// The source of the event. + /// The instance containing the event data. + private void Backspace_MouseDown(object sender, MouseEventArgs e) + { + if (BackspaceClick != null) + { + BackspaceClick(sender, e); + } + if (useCustomEvent) + return; + Label lbl = sender as Label; + SendKeys.Send("{BACKSPACE}"); + } + + /// + /// Handles the MouseDown event of the Enter control. + /// + /// The source of the event. + /// The instance containing the event data. + private void Enter_MouseDown(object sender, MouseEventArgs e) + { + if (EnterClick != null) + { + EnterClick(sender, e); + } + if (useCustomEvent) + return; + SendKeys.Send("{ENTER}"); + } + } +} diff --git a/UsingControl/HZHControls/Controls/KeyBord/UCKeyBorderNum.resx b/UsingControl/HZHControls/Controls/KeyBord/UCKeyBorderNum.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/UsingControl/HZHControls/Controls/KeyBord/UCKeyBorderNum.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/UsingControl/HZHControls/Controls/KeyBord/UCKeyBorderPay.Designer.cs b/UsingControl/HZHControls/Controls/KeyBord/UCKeyBorderPay.Designer.cs new file mode 100644 index 0000000..0bec764 --- /dev/null +++ b/UsingControl/HZHControls/Controls/KeyBord/UCKeyBorderPay.Designer.cs @@ -0,0 +1,1359 @@ +// *********************************************************************** +// Assembly : HZH_Controls +// Created : 08-08-2019 +// +// *********************************************************************** +// +// Copyright by Huang Zhenghui(黄正辉) All, QQ group:568015492 QQ:623128629 Email:623128629@qq.com +// +// +// Blog: https://www.cnblogs.com/bfyx +// GitHub:https://github.com/kwwwvagaa/NetWinformControl +// gitee:https://gitee.com/kwwwvagaa/net_winform_custom_control.git +// +// If you use this code, please keep this note. +// *********************************************************************** +namespace HZH_Controls.Controls +{ + /// + /// Class UCKeyBorderPay. + /// Implements the + /// + /// + partial class UCKeyBorderPay + { + /// + /// 必需的设计器变量。 + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 清理所有正在使用的资源。 + /// + /// 如果应释放托管资源,为 true;否则为 false。 + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region 组件设计器生成的代码 + + /// + /// 设计器支持所需的方法 - 不要 + /// 使用代码编辑器修改此方法的内容。 + /// + private void InitializeComponent() + { + this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); + this.panel19 = new System.Windows.Forms.Panel(); + this.lblFast4 = new System.Windows.Forms.Label(); + this.ucSplitLine_V19 = new HZH_Controls.Controls.UCSplitLine_V(); + this.panel18 = new System.Windows.Forms.Panel(); + this.label18 = new System.Windows.Forms.Label(); + this.panel17 = new System.Windows.Forms.Panel(); + this.lblFast3 = new System.Windows.Forms.Label(); + this.ucSplitLine_H17 = new HZH_Controls.Controls.UCSplitLine_H(); + this.ucSplitLine_V17 = new HZH_Controls.Controls.UCSplitLine_V(); + this.panel16 = new System.Windows.Forms.Panel(); + this.label16 = new System.Windows.Forms.Label(); + this.ucSplitLine_H16 = new HZH_Controls.Controls.UCSplitLine_H(); + this.panel15 = new System.Windows.Forms.Panel(); + this.lblFast2 = new System.Windows.Forms.Label(); + this.ucSplitLine_H15 = new HZH_Controls.Controls.UCSplitLine_H(); + this.ucSplitLine_V15 = new HZH_Controls.Controls.UCSplitLine_V(); + this.panel14 = new System.Windows.Forms.Panel(); + this.label14 = new System.Windows.Forms.Label(); + this.ucSplitLine_H14 = new HZH_Controls.Controls.UCSplitLine_H(); + this.panel13 = new System.Windows.Forms.Panel(); + this.lblFast1 = new System.Windows.Forms.Label(); + this.ucSplitLine_H13 = new HZH_Controls.Controls.UCSplitLine_H(); + this.ucSplitLine_V13 = new HZH_Controls.Controls.UCSplitLine_V(); + this.panel12 = new System.Windows.Forms.Panel(); + this.label12 = new System.Windows.Forms.Label(); + this.ucSplitLine_V12 = new HZH_Controls.Controls.UCSplitLine_V(); + this.panel11 = new System.Windows.Forms.Panel(); + this.label11 = new System.Windows.Forms.Label(); + this.ucSplitLine_V11 = new HZH_Controls.Controls.UCSplitLine_V(); + this.panel10 = new System.Windows.Forms.Panel(); + this.label10 = new System.Windows.Forms.Label(); + this.ucSplitLine_V10 = new HZH_Controls.Controls.UCSplitLine_V(); + this.panel9 = new System.Windows.Forms.Panel(); + this.label9 = new System.Windows.Forms.Label(); + this.ucSplitLine_H9 = new HZH_Controls.Controls.UCSplitLine_H(); + this.ucSplitLine_V9 = new HZH_Controls.Controls.UCSplitLine_V(); + this.panel8 = new System.Windows.Forms.Panel(); + this.label8 = new System.Windows.Forms.Label(); + this.ucSplitLine_H8 = new HZH_Controls.Controls.UCSplitLine_H(); + this.ucSplitLine_V8 = new HZH_Controls.Controls.UCSplitLine_V(); + this.panel7 = new System.Windows.Forms.Panel(); + this.label7 = new System.Windows.Forms.Label(); + this.ucSplitLine_H7 = new HZH_Controls.Controls.UCSplitLine_H(); + this.ucSplitLine_V7 = new HZH_Controls.Controls.UCSplitLine_V(); + this.panel6 = new System.Windows.Forms.Panel(); + this.label6 = new System.Windows.Forms.Label(); + this.ucSplitLine_H6 = new HZH_Controls.Controls.UCSplitLine_H(); + this.ucSplitLine_V6 = new HZH_Controls.Controls.UCSplitLine_V(); + this.panel5 = new System.Windows.Forms.Panel(); + this.label5 = new System.Windows.Forms.Label(); + this.ucSplitLine_H5 = new HZH_Controls.Controls.UCSplitLine_H(); + this.ucSplitLine_V5 = new HZH_Controls.Controls.UCSplitLine_V(); + this.panel4 = new System.Windows.Forms.Panel(); + this.label4 = new System.Windows.Forms.Label(); + this.ucSplitLine_H4 = new HZH_Controls.Controls.UCSplitLine_H(); + this.ucSplitLine_V4 = new HZH_Controls.Controls.UCSplitLine_V(); + this.panel3 = new System.Windows.Forms.Panel(); + this.label3 = new System.Windows.Forms.Label(); + this.ucSplitLine_H3 = new HZH_Controls.Controls.UCSplitLine_H(); + this.ucSplitLine_V3 = new HZH_Controls.Controls.UCSplitLine_V(); + this.panel2 = new System.Windows.Forms.Panel(); + this.label2 = new System.Windows.Forms.Label(); + this.ucSplitLine_H2 = new HZH_Controls.Controls.UCSplitLine_H(); + this.ucSplitLine_V2 = new HZH_Controls.Controls.UCSplitLine_V(); + this.panel1 = new System.Windows.Forms.Panel(); + this.label1 = new System.Windows.Forms.Label(); + this.ucSplitLine_H1 = new HZH_Controls.Controls.UCSplitLine_H(); + this.ucSplitLine_V1 = new HZH_Controls.Controls.UCSplitLine_V(); + this.ucSplitLine_H11 = new HZH_Controls.Controls.UCSplitLine_H(); + this.ucSplitLine_H10 = new HZH_Controls.Controls.UCSplitLine_H(); + this.ucSplitLine_V16 = new HZH_Controls.Controls.UCSplitLine_V(); + this.ucSplitLine_V14 = new HZH_Controls.Controls.UCSplitLine_V(); + this.tableLayoutPanel1.SuspendLayout(); + this.panel19.SuspendLayout(); + this.panel18.SuspendLayout(); + this.panel17.SuspendLayout(); + this.panel16.SuspendLayout(); + this.panel15.SuspendLayout(); + this.panel14.SuspendLayout(); + this.panel13.SuspendLayout(); + this.panel12.SuspendLayout(); + this.panel11.SuspendLayout(); + this.panel10.SuspendLayout(); + this.panel9.SuspendLayout(); + this.panel8.SuspendLayout(); + this.panel7.SuspendLayout(); + this.panel6.SuspendLayout(); + this.panel5.SuspendLayout(); + this.panel4.SuspendLayout(); + this.panel3.SuspendLayout(); + this.panel2.SuspendLayout(); + this.panel1.SuspendLayout(); + this.SuspendLayout(); + // + // tableLayoutPanel1 + // + this.tableLayoutPanel1.BackColor = System.Drawing.Color.Transparent; + this.tableLayoutPanel1.ColumnCount = 5; + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 20F)); + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 20F)); + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 20F)); + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 20F)); + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 20F)); + this.tableLayoutPanel1.Controls.Add(this.panel19, 3, 3); + this.tableLayoutPanel1.Controls.Add(this.panel18, 4, 2); + this.tableLayoutPanel1.Controls.Add(this.panel17, 3, 2); + this.tableLayoutPanel1.Controls.Add(this.panel16, 4, 1); + this.tableLayoutPanel1.Controls.Add(this.panel15, 3, 1); + this.tableLayoutPanel1.Controls.Add(this.panel14, 4, 0); + this.tableLayoutPanel1.Controls.Add(this.panel13, 3, 0); + this.tableLayoutPanel1.Controls.Add(this.panel12, 2, 3); + this.tableLayoutPanel1.Controls.Add(this.panel11, 1, 3); + this.tableLayoutPanel1.Controls.Add(this.panel10, 0, 3); + this.tableLayoutPanel1.Controls.Add(this.panel9, 2, 2); + this.tableLayoutPanel1.Controls.Add(this.panel8, 1, 2); + this.tableLayoutPanel1.Controls.Add(this.panel7, 0, 2); + this.tableLayoutPanel1.Controls.Add(this.panel6, 2, 1); + this.tableLayoutPanel1.Controls.Add(this.panel5, 1, 1); + this.tableLayoutPanel1.Controls.Add(this.panel4, 0, 1); + this.tableLayoutPanel1.Controls.Add(this.panel3, 2, 0); + this.tableLayoutPanel1.Controls.Add(this.panel2, 1, 0); + this.tableLayoutPanel1.Controls.Add(this.panel1, 0, 0); + this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0); + this.tableLayoutPanel1.Name = "tableLayoutPanel1"; + this.tableLayoutPanel1.RowCount = 4; + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F)); + this.tableLayoutPanel1.Size = new System.Drawing.Size(489, 352); + this.tableLayoutPanel1.TabIndex = 0; + // + // panel19 + // + this.panel19.Controls.Add(this.lblFast4); + this.panel19.Controls.Add(this.ucSplitLine_V19); + this.panel19.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel19.Location = new System.Drawing.Point(291, 264); + this.panel19.Margin = new System.Windows.Forms.Padding(0); + this.panel19.Name = "panel19"; + this.panel19.Size = new System.Drawing.Size(97, 88); + this.panel19.TabIndex = 19; + // + // lblFast4 + // + this.lblFast4.BackColor = System.Drawing.Color.White; + this.lblFast4.Dock = System.Windows.Forms.DockStyle.Fill; + this.lblFast4.Font = new System.Drawing.Font("Arial Unicode MS", 30F); + this.lblFast4.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(128)))), ((int)(((byte)(0))))); + this.lblFast4.Location = new System.Drawing.Point(0, 0); + this.lblFast4.Name = "lblFast4"; + this.lblFast4.Size = new System.Drawing.Size(96, 88); + this.lblFast4.TabIndex = 2; + this.lblFast4.Tag = ""; + this.lblFast4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.lblFast4.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Money_MouseDown); + // + // ucSplitLine_V19 + // + this.ucSplitLine_V19.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_V19.Dock = System.Windows.Forms.DockStyle.Right; + this.ucSplitLine_V19.Location = new System.Drawing.Point(96, 0); + this.ucSplitLine_V19.Name = "ucSplitLine_V19"; + this.ucSplitLine_V19.Size = new System.Drawing.Size(1, 88); + this.ucSplitLine_V19.TabIndex = 0; + this.ucSplitLine_V19.TabStop = false; + // + // panel18 + // + this.panel18.Controls.Add(this.label18); + this.panel18.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel18.Location = new System.Drawing.Point(388, 176); + this.panel18.Margin = new System.Windows.Forms.Padding(0); + this.panel18.Name = "panel18"; + this.tableLayoutPanel1.SetRowSpan(this.panel18, 2); + this.panel18.Size = new System.Drawing.Size(101, 176); + this.panel18.TabIndex = 18; + // + // label18 + // + this.label18.BackColor = System.Drawing.Color.White; + this.label18.Dock = System.Windows.Forms.DockStyle.Fill; + this.label18.Font = new System.Drawing.Font("微软雅黑", 20F); + this.label18.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.label18.Location = new System.Drawing.Point(0, 0); + this.label18.Name = "label18"; + this.label18.Size = new System.Drawing.Size(101, 176); + this.label18.TabIndex = 2; + this.label18.Tag = "确定"; + this.label18.Text = "确\r\n定"; + this.label18.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label18.MouseDown += new System.Windows.Forms.MouseEventHandler(this.OK_MouseDown); + // + // panel17 + // + this.panel17.Controls.Add(this.lblFast3); + this.panel17.Controls.Add(this.ucSplitLine_H17); + this.panel17.Controls.Add(this.ucSplitLine_V17); + this.panel17.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel17.Location = new System.Drawing.Point(291, 176); + this.panel17.Margin = new System.Windows.Forms.Padding(0); + this.panel17.Name = "panel17"; + this.panel17.Size = new System.Drawing.Size(97, 88); + this.panel17.TabIndex = 17; + // + // lblFast3 + // + this.lblFast3.BackColor = System.Drawing.Color.White; + this.lblFast3.Dock = System.Windows.Forms.DockStyle.Fill; + this.lblFast3.Font = new System.Drawing.Font("Arial Unicode MS", 30F); + this.lblFast3.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(128)))), ((int)(((byte)(0))))); + this.lblFast3.Location = new System.Drawing.Point(0, 0); + this.lblFast3.Name = "lblFast3"; + this.lblFast3.Size = new System.Drawing.Size(96, 87); + this.lblFast3.TabIndex = 2; + this.lblFast3.Tag = ""; + this.lblFast3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.lblFast3.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Money_MouseDown); + // + // ucSplitLine_H17 + // + this.ucSplitLine_H17.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_H17.Dock = System.Windows.Forms.DockStyle.Bottom; + this.ucSplitLine_H17.Location = new System.Drawing.Point(0, 87); + this.ucSplitLine_H17.Name = "ucSplitLine_H17"; + this.ucSplitLine_H17.Size = new System.Drawing.Size(96, 1); + this.ucSplitLine_H17.TabIndex = 1; + this.ucSplitLine_H17.TabStop = false; + // + // ucSplitLine_V17 + // + this.ucSplitLine_V17.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_V17.Dock = System.Windows.Forms.DockStyle.Right; + this.ucSplitLine_V17.Location = new System.Drawing.Point(96, 0); + this.ucSplitLine_V17.Name = "ucSplitLine_V17"; + this.ucSplitLine_V17.Size = new System.Drawing.Size(1, 88); + this.ucSplitLine_V17.TabIndex = 0; + this.ucSplitLine_V17.TabStop = false; + // + // panel16 + // + this.panel16.Controls.Add(this.label16); + this.panel16.Controls.Add(this.ucSplitLine_H16); + this.panel16.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel16.Location = new System.Drawing.Point(388, 88); + this.panel16.Margin = new System.Windows.Forms.Padding(0); + this.panel16.Name = "panel16"; + this.panel16.Size = new System.Drawing.Size(101, 88); + this.panel16.TabIndex = 16; + // + // label16 + // + this.label16.BackColor = System.Drawing.Color.White; + this.label16.Dock = System.Windows.Forms.DockStyle.Fill; + this.label16.Font = new System.Drawing.Font("微软雅黑", 20F); + this.label16.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.label16.Location = new System.Drawing.Point(0, 0); + this.label16.Name = "label16"; + this.label16.Size = new System.Drawing.Size(101, 87); + this.label16.TabIndex = 2; + this.label16.Tag = "取消"; + this.label16.Text = "取消"; + this.label16.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label16.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Cancel_MouseDown); + // + // ucSplitLine_H16 + // + this.ucSplitLine_H16.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_H16.Dock = System.Windows.Forms.DockStyle.Bottom; + this.ucSplitLine_H16.Location = new System.Drawing.Point(0, 87); + this.ucSplitLine_H16.Name = "ucSplitLine_H16"; + this.ucSplitLine_H16.Size = new System.Drawing.Size(101, 1); + this.ucSplitLine_H16.TabIndex = 1; + this.ucSplitLine_H16.TabStop = false; + // + // panel15 + // + this.panel15.Controls.Add(this.lblFast2); + this.panel15.Controls.Add(this.ucSplitLine_H15); + this.panel15.Controls.Add(this.ucSplitLine_V15); + this.panel15.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel15.Location = new System.Drawing.Point(291, 88); + this.panel15.Margin = new System.Windows.Forms.Padding(0); + this.panel15.Name = "panel15"; + this.panel15.Size = new System.Drawing.Size(97, 88); + this.panel15.TabIndex = 15; + // + // lblFast2 + // + this.lblFast2.BackColor = System.Drawing.Color.White; + this.lblFast2.Dock = System.Windows.Forms.DockStyle.Fill; + this.lblFast2.Font = new System.Drawing.Font("Arial Unicode MS", 30F); + this.lblFast2.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(128)))), ((int)(((byte)(0))))); + this.lblFast2.Location = new System.Drawing.Point(0, 0); + this.lblFast2.Name = "lblFast2"; + this.lblFast2.Size = new System.Drawing.Size(96, 87); + this.lblFast2.TabIndex = 2; + this.lblFast2.Tag = ""; + this.lblFast2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.lblFast2.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Money_MouseDown); + // + // ucSplitLine_H15 + // + this.ucSplitLine_H15.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_H15.Dock = System.Windows.Forms.DockStyle.Bottom; + this.ucSplitLine_H15.Location = new System.Drawing.Point(0, 87); + this.ucSplitLine_H15.Name = "ucSplitLine_H15"; + this.ucSplitLine_H15.Size = new System.Drawing.Size(96, 1); + this.ucSplitLine_H15.TabIndex = 1; + this.ucSplitLine_H15.TabStop = false; + // + // ucSplitLine_V15 + // + this.ucSplitLine_V15.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_V15.Dock = System.Windows.Forms.DockStyle.Right; + this.ucSplitLine_V15.Location = new System.Drawing.Point(96, 0); + this.ucSplitLine_V15.Name = "ucSplitLine_V15"; + this.ucSplitLine_V15.Size = new System.Drawing.Size(1, 88); + this.ucSplitLine_V15.TabIndex = 0; + this.ucSplitLine_V15.TabStop = false; + // + // panel14 + // + this.panel14.Controls.Add(this.label14); + this.panel14.Controls.Add(this.ucSplitLine_H14); + this.panel14.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel14.Location = new System.Drawing.Point(388, 0); + this.panel14.Margin = new System.Windows.Forms.Padding(0); + this.panel14.Name = "panel14"; + this.panel14.Size = new System.Drawing.Size(101, 88); + this.panel14.TabIndex = 14; + // + // label14 + // + this.label14.BackColor = System.Drawing.Color.White; + this.label14.Dock = System.Windows.Forms.DockStyle.Fill; + this.label14.Font = new System.Drawing.Font("Arial Unicode MS", 30F); + this.label14.ForeColor = System.Drawing.Color.Black; + this.label14.Image = global::HZH_Controls.Properties.Resources.keyboard_bs; + this.label14.Location = new System.Drawing.Point(0, 0); + this.label14.Name = "label14"; + this.label14.Size = new System.Drawing.Size(101, 87); + this.label14.TabIndex = 2; + this.label14.Tag = "删除"; + this.label14.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label14.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Backspace_MouseDown); + // + // ucSplitLine_H14 + // + this.ucSplitLine_H14.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_H14.Dock = System.Windows.Forms.DockStyle.Bottom; + this.ucSplitLine_H14.Location = new System.Drawing.Point(0, 87); + this.ucSplitLine_H14.Name = "ucSplitLine_H14"; + this.ucSplitLine_H14.Size = new System.Drawing.Size(101, 1); + this.ucSplitLine_H14.TabIndex = 1; + this.ucSplitLine_H14.TabStop = false; + // + // panel13 + // + this.panel13.Controls.Add(this.lblFast1); + this.panel13.Controls.Add(this.ucSplitLine_H13); + this.panel13.Controls.Add(this.ucSplitLine_V13); + this.panel13.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel13.Location = new System.Drawing.Point(291, 0); + this.panel13.Margin = new System.Windows.Forms.Padding(0); + this.panel13.Name = "panel13"; + this.panel13.Size = new System.Drawing.Size(97, 88); + this.panel13.TabIndex = 13; + // + // lblFast1 + // + this.lblFast1.BackColor = System.Drawing.Color.White; + this.lblFast1.Dock = System.Windows.Forms.DockStyle.Fill; + this.lblFast1.Font = new System.Drawing.Font("Arial Unicode MS", 30F); + this.lblFast1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(128)))), ((int)(((byte)(0))))); + this.lblFast1.Location = new System.Drawing.Point(0, 0); + this.lblFast1.Name = "lblFast1"; + this.lblFast1.Size = new System.Drawing.Size(96, 87); + this.lblFast1.TabIndex = 2; + this.lblFast1.Tag = ""; + this.lblFast1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.lblFast1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Money_MouseDown); + // + // ucSplitLine_H13 + // + this.ucSplitLine_H13.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_H13.Dock = System.Windows.Forms.DockStyle.Bottom; + this.ucSplitLine_H13.Location = new System.Drawing.Point(0, 87); + this.ucSplitLine_H13.Name = "ucSplitLine_H13"; + this.ucSplitLine_H13.Size = new System.Drawing.Size(96, 1); + this.ucSplitLine_H13.TabIndex = 1; + this.ucSplitLine_H13.TabStop = false; + // + // ucSplitLine_V13 + // + this.ucSplitLine_V13.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_V13.Dock = System.Windows.Forms.DockStyle.Right; + this.ucSplitLine_V13.Location = new System.Drawing.Point(96, 0); + this.ucSplitLine_V13.Name = "ucSplitLine_V13"; + this.ucSplitLine_V13.Size = new System.Drawing.Size(1, 88); + this.ucSplitLine_V13.TabIndex = 0; + this.ucSplitLine_V13.TabStop = false; + // + // panel12 + // + this.panel12.Controls.Add(this.label12); + this.panel12.Controls.Add(this.ucSplitLine_V12); + this.panel12.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel12.Location = new System.Drawing.Point(194, 264); + this.panel12.Margin = new System.Windows.Forms.Padding(0); + this.panel12.Name = "panel12"; + this.panel12.Size = new System.Drawing.Size(97, 88); + this.panel12.TabIndex = 12; + // + // label12 + // + this.label12.BackColor = System.Drawing.Color.White; + this.label12.Dock = System.Windows.Forms.DockStyle.Fill; + this.label12.Font = new System.Drawing.Font("Arial Unicode MS", 30F); + this.label12.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.label12.Location = new System.Drawing.Point(0, 0); + this.label12.Name = "label12"; + this.label12.Size = new System.Drawing.Size(96, 88); + this.label12.TabIndex = 2; + this.label12.Tag = "."; + this.label12.Text = "."; + this.label12.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label12.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Num_MouseDown); + // + // ucSplitLine_V12 + // + this.ucSplitLine_V12.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_V12.Dock = System.Windows.Forms.DockStyle.Right; + this.ucSplitLine_V12.Location = new System.Drawing.Point(96, 0); + this.ucSplitLine_V12.Name = "ucSplitLine_V12"; + this.ucSplitLine_V12.Size = new System.Drawing.Size(1, 88); + this.ucSplitLine_V12.TabIndex = 0; + this.ucSplitLine_V12.TabStop = false; + // + // panel11 + // + this.panel11.Controls.Add(this.label11); + this.panel11.Controls.Add(this.ucSplitLine_V11); + this.panel11.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel11.Location = new System.Drawing.Point(97, 264); + this.panel11.Margin = new System.Windows.Forms.Padding(0); + this.panel11.Name = "panel11"; + this.panel11.Size = new System.Drawing.Size(97, 88); + this.panel11.TabIndex = 11; + // + // label11 + // + this.label11.BackColor = System.Drawing.Color.White; + this.label11.Dock = System.Windows.Forms.DockStyle.Fill; + this.label11.Font = new System.Drawing.Font("Arial Unicode MS", 30F); + this.label11.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.label11.Location = new System.Drawing.Point(0, 0); + this.label11.Name = "label11"; + this.label11.Size = new System.Drawing.Size(96, 88); + this.label11.TabIndex = 2; + this.label11.Tag = "0"; + this.label11.Text = "0"; + this.label11.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label11.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Num_MouseDown); + // + // ucSplitLine_V11 + // + this.ucSplitLine_V11.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_V11.Dock = System.Windows.Forms.DockStyle.Right; + this.ucSplitLine_V11.Location = new System.Drawing.Point(96, 0); + this.ucSplitLine_V11.Name = "ucSplitLine_V11"; + this.ucSplitLine_V11.Size = new System.Drawing.Size(1, 88); + this.ucSplitLine_V11.TabIndex = 0; + this.ucSplitLine_V11.TabStop = false; + // + // panel10 + // + this.panel10.Controls.Add(this.label10); + this.panel10.Controls.Add(this.ucSplitLine_V10); + this.panel10.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel10.Location = new System.Drawing.Point(0, 264); + this.panel10.Margin = new System.Windows.Forms.Padding(0); + this.panel10.Name = "panel10"; + this.panel10.Size = new System.Drawing.Size(97, 88); + this.panel10.TabIndex = 10; + // + // label10 + // + this.label10.BackColor = System.Drawing.Color.White; + this.label10.Dock = System.Windows.Forms.DockStyle.Fill; + this.label10.Font = new System.Drawing.Font("Arial Unicode MS", 30F); + this.label10.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.label10.Location = new System.Drawing.Point(0, 0); + this.label10.Name = "label10"; + this.label10.Size = new System.Drawing.Size(96, 88); + this.label10.TabIndex = 2; + this.label10.Tag = "-"; + this.label10.Text = "-"; + this.label10.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label10.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Num_MouseDown); + // + // ucSplitLine_V10 + // + this.ucSplitLine_V10.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_V10.Dock = System.Windows.Forms.DockStyle.Right; + this.ucSplitLine_V10.Location = new System.Drawing.Point(96, 0); + this.ucSplitLine_V10.Name = "ucSplitLine_V10"; + this.ucSplitLine_V10.Size = new System.Drawing.Size(1, 88); + this.ucSplitLine_V10.TabIndex = 0; + this.ucSplitLine_V10.TabStop = false; + // + // panel9 + // + this.panel9.Controls.Add(this.label9); + this.panel9.Controls.Add(this.ucSplitLine_H9); + this.panel9.Controls.Add(this.ucSplitLine_V9); + this.panel9.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel9.Location = new System.Drawing.Point(194, 176); + this.panel9.Margin = new System.Windows.Forms.Padding(0); + this.panel9.Name = "panel9"; + this.panel9.Size = new System.Drawing.Size(97, 88); + this.panel9.TabIndex = 9; + // + // label9 + // + this.label9.BackColor = System.Drawing.Color.White; + this.label9.Dock = System.Windows.Forms.DockStyle.Fill; + this.label9.Font = new System.Drawing.Font("Arial Unicode MS", 30F); + this.label9.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.label9.Location = new System.Drawing.Point(0, 0); + this.label9.Name = "label9"; + this.label9.Size = new System.Drawing.Size(96, 87); + this.label9.TabIndex = 2; + this.label9.Tag = "9"; + this.label9.Text = "9"; + this.label9.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label9.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Num_MouseDown); + // + // ucSplitLine_H9 + // + this.ucSplitLine_H9.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_H9.Dock = System.Windows.Forms.DockStyle.Bottom; + this.ucSplitLine_H9.Location = new System.Drawing.Point(0, 87); + this.ucSplitLine_H9.Name = "ucSplitLine_H9"; + this.ucSplitLine_H9.Size = new System.Drawing.Size(96, 1); + this.ucSplitLine_H9.TabIndex = 1; + this.ucSplitLine_H9.TabStop = false; + // + // ucSplitLine_V9 + // + this.ucSplitLine_V9.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_V9.Dock = System.Windows.Forms.DockStyle.Right; + this.ucSplitLine_V9.Location = new System.Drawing.Point(96, 0); + this.ucSplitLine_V9.Name = "ucSplitLine_V9"; + this.ucSplitLine_V9.Size = new System.Drawing.Size(1, 88); + this.ucSplitLine_V9.TabIndex = 0; + this.ucSplitLine_V9.TabStop = false; + // + // panel8 + // + this.panel8.Controls.Add(this.label8); + this.panel8.Controls.Add(this.ucSplitLine_H8); + this.panel8.Controls.Add(this.ucSplitLine_V8); + this.panel8.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel8.Location = new System.Drawing.Point(97, 176); + this.panel8.Margin = new System.Windows.Forms.Padding(0); + this.panel8.Name = "panel8"; + this.panel8.Size = new System.Drawing.Size(97, 88); + this.panel8.TabIndex = 8; + // + // label8 + // + this.label8.BackColor = System.Drawing.Color.White; + this.label8.Dock = System.Windows.Forms.DockStyle.Fill; + this.label8.Font = new System.Drawing.Font("Arial Unicode MS", 30F); + this.label8.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.label8.Location = new System.Drawing.Point(0, 0); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(96, 87); + this.label8.TabIndex = 2; + this.label8.Tag = "8"; + this.label8.Text = "8"; + this.label8.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label8.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Num_MouseDown); + // + // ucSplitLine_H8 + // + this.ucSplitLine_H8.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_H8.Dock = System.Windows.Forms.DockStyle.Bottom; + this.ucSplitLine_H8.Location = new System.Drawing.Point(0, 87); + this.ucSplitLine_H8.Name = "ucSplitLine_H8"; + this.ucSplitLine_H8.Size = new System.Drawing.Size(96, 1); + this.ucSplitLine_H8.TabIndex = 1; + this.ucSplitLine_H8.TabStop = false; + // + // ucSplitLine_V8 + // + this.ucSplitLine_V8.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_V8.Dock = System.Windows.Forms.DockStyle.Right; + this.ucSplitLine_V8.Location = new System.Drawing.Point(96, 0); + this.ucSplitLine_V8.Name = "ucSplitLine_V8"; + this.ucSplitLine_V8.Size = new System.Drawing.Size(1, 88); + this.ucSplitLine_V8.TabIndex = 0; + this.ucSplitLine_V8.TabStop = false; + // + // panel7 + // + this.panel7.Controls.Add(this.label7); + this.panel7.Controls.Add(this.ucSplitLine_H7); + this.panel7.Controls.Add(this.ucSplitLine_V7); + this.panel7.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel7.Location = new System.Drawing.Point(0, 176); + this.panel7.Margin = new System.Windows.Forms.Padding(0); + this.panel7.Name = "panel7"; + this.panel7.Size = new System.Drawing.Size(97, 88); + this.panel7.TabIndex = 7; + // + // label7 + // + this.label7.BackColor = System.Drawing.Color.White; + this.label7.Dock = System.Windows.Forms.DockStyle.Fill; + this.label7.Font = new System.Drawing.Font("Arial Unicode MS", 30F); + this.label7.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.label7.Location = new System.Drawing.Point(0, 0); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(96, 87); + this.label7.TabIndex = 2; + this.label7.Tag = "7"; + this.label7.Text = "7"; + this.label7.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label7.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Num_MouseDown); + // + // ucSplitLine_H7 + // + this.ucSplitLine_H7.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_H7.Dock = System.Windows.Forms.DockStyle.Bottom; + this.ucSplitLine_H7.Location = new System.Drawing.Point(0, 87); + this.ucSplitLine_H7.Name = "ucSplitLine_H7"; + this.ucSplitLine_H7.Size = new System.Drawing.Size(96, 1); + this.ucSplitLine_H7.TabIndex = 1; + this.ucSplitLine_H7.TabStop = false; + // + // ucSplitLine_V7 + // + this.ucSplitLine_V7.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_V7.Dock = System.Windows.Forms.DockStyle.Right; + this.ucSplitLine_V7.Location = new System.Drawing.Point(96, 0); + this.ucSplitLine_V7.Name = "ucSplitLine_V7"; + this.ucSplitLine_V7.Size = new System.Drawing.Size(1, 88); + this.ucSplitLine_V7.TabIndex = 0; + this.ucSplitLine_V7.TabStop = false; + // + // panel6 + // + this.panel6.Controls.Add(this.label6); + this.panel6.Controls.Add(this.ucSplitLine_H6); + this.panel6.Controls.Add(this.ucSplitLine_V6); + this.panel6.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel6.Location = new System.Drawing.Point(194, 88); + this.panel6.Margin = new System.Windows.Forms.Padding(0); + this.panel6.Name = "panel6"; + this.panel6.Size = new System.Drawing.Size(97, 88); + this.panel6.TabIndex = 6; + // + // label6 + // + this.label6.BackColor = System.Drawing.Color.White; + this.label6.Dock = System.Windows.Forms.DockStyle.Fill; + this.label6.Font = new System.Drawing.Font("Arial Unicode MS", 30F); + this.label6.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.label6.Location = new System.Drawing.Point(0, 0); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(96, 87); + this.label6.TabIndex = 2; + this.label6.Tag = "6"; + this.label6.Text = "6"; + this.label6.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label6.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Num_MouseDown); + // + // ucSplitLine_H6 + // + this.ucSplitLine_H6.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_H6.Dock = System.Windows.Forms.DockStyle.Bottom; + this.ucSplitLine_H6.Location = new System.Drawing.Point(0, 87); + this.ucSplitLine_H6.Name = "ucSplitLine_H6"; + this.ucSplitLine_H6.Size = new System.Drawing.Size(96, 1); + this.ucSplitLine_H6.TabIndex = 1; + this.ucSplitLine_H6.TabStop = false; + // + // ucSplitLine_V6 + // + this.ucSplitLine_V6.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_V6.Dock = System.Windows.Forms.DockStyle.Right; + this.ucSplitLine_V6.Location = new System.Drawing.Point(96, 0); + this.ucSplitLine_V6.Name = "ucSplitLine_V6"; + this.ucSplitLine_V6.Size = new System.Drawing.Size(1, 88); + this.ucSplitLine_V6.TabIndex = 0; + this.ucSplitLine_V6.TabStop = false; + // + // panel5 + // + this.panel5.Controls.Add(this.label5); + this.panel5.Controls.Add(this.ucSplitLine_H5); + this.panel5.Controls.Add(this.ucSplitLine_V5); + this.panel5.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel5.Location = new System.Drawing.Point(97, 88); + this.panel5.Margin = new System.Windows.Forms.Padding(0); + this.panel5.Name = "panel5"; + this.panel5.Size = new System.Drawing.Size(97, 88); + this.panel5.TabIndex = 5; + // + // label5 + // + this.label5.BackColor = System.Drawing.Color.White; + this.label5.Dock = System.Windows.Forms.DockStyle.Fill; + this.label5.Font = new System.Drawing.Font("Arial Unicode MS", 30F); + this.label5.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.label5.Location = new System.Drawing.Point(0, 0); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(96, 87); + this.label5.TabIndex = 2; + this.label5.Tag = "5"; + this.label5.Text = "5"; + this.label5.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label5.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Num_MouseDown); + // + // ucSplitLine_H5 + // + this.ucSplitLine_H5.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_H5.Dock = System.Windows.Forms.DockStyle.Bottom; + this.ucSplitLine_H5.Location = new System.Drawing.Point(0, 87); + this.ucSplitLine_H5.Name = "ucSplitLine_H5"; + this.ucSplitLine_H5.Size = new System.Drawing.Size(96, 1); + this.ucSplitLine_H5.TabIndex = 1; + this.ucSplitLine_H5.TabStop = false; + // + // ucSplitLine_V5 + // + this.ucSplitLine_V5.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_V5.Dock = System.Windows.Forms.DockStyle.Right; + this.ucSplitLine_V5.Location = new System.Drawing.Point(96, 0); + this.ucSplitLine_V5.Name = "ucSplitLine_V5"; + this.ucSplitLine_V5.Size = new System.Drawing.Size(1, 88); + this.ucSplitLine_V5.TabIndex = 0; + this.ucSplitLine_V5.TabStop = false; + // + // panel4 + // + this.panel4.Controls.Add(this.label4); + this.panel4.Controls.Add(this.ucSplitLine_H4); + this.panel4.Controls.Add(this.ucSplitLine_V4); + this.panel4.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel4.Location = new System.Drawing.Point(0, 88); + this.panel4.Margin = new System.Windows.Forms.Padding(0); + this.panel4.Name = "panel4"; + this.panel4.Size = new System.Drawing.Size(97, 88); + this.panel4.TabIndex = 4; + // + // label4 + // + this.label4.BackColor = System.Drawing.Color.White; + this.label4.Dock = System.Windows.Forms.DockStyle.Fill; + this.label4.Font = new System.Drawing.Font("Arial Unicode MS", 30F); + this.label4.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.label4.Location = new System.Drawing.Point(0, 0); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(96, 87); + this.label4.TabIndex = 2; + this.label4.Tag = "4"; + this.label4.Text = "4"; + this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label4.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Num_MouseDown); + // + // ucSplitLine_H4 + // + this.ucSplitLine_H4.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_H4.Dock = System.Windows.Forms.DockStyle.Bottom; + this.ucSplitLine_H4.Location = new System.Drawing.Point(0, 87); + this.ucSplitLine_H4.Name = "ucSplitLine_H4"; + this.ucSplitLine_H4.Size = new System.Drawing.Size(96, 1); + this.ucSplitLine_H4.TabIndex = 1; + this.ucSplitLine_H4.TabStop = false; + // + // ucSplitLine_V4 + // + this.ucSplitLine_V4.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_V4.Dock = System.Windows.Forms.DockStyle.Right; + this.ucSplitLine_V4.Location = new System.Drawing.Point(96, 0); + this.ucSplitLine_V4.Name = "ucSplitLine_V4"; + this.ucSplitLine_V4.Size = new System.Drawing.Size(1, 88); + this.ucSplitLine_V4.TabIndex = 0; + this.ucSplitLine_V4.TabStop = false; + // + // panel3 + // + this.panel3.Controls.Add(this.label3); + this.panel3.Controls.Add(this.ucSplitLine_H3); + this.panel3.Controls.Add(this.ucSplitLine_V3); + this.panel3.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel3.Location = new System.Drawing.Point(194, 0); + this.panel3.Margin = new System.Windows.Forms.Padding(0); + this.panel3.Name = "panel3"; + this.panel3.Size = new System.Drawing.Size(97, 88); + this.panel3.TabIndex = 3; + // + // label3 + // + this.label3.BackColor = System.Drawing.Color.White; + this.label3.Dock = System.Windows.Forms.DockStyle.Fill; + this.label3.Font = new System.Drawing.Font("Arial Unicode MS", 30F); + this.label3.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.label3.Location = new System.Drawing.Point(0, 0); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(96, 87); + this.label3.TabIndex = 2; + this.label3.Tag = "3"; + this.label3.Text = "3"; + this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label3.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Num_MouseDown); + // + // ucSplitLine_H3 + // + this.ucSplitLine_H3.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_H3.Dock = System.Windows.Forms.DockStyle.Bottom; + this.ucSplitLine_H3.Location = new System.Drawing.Point(0, 87); + this.ucSplitLine_H3.Name = "ucSplitLine_H3"; + this.ucSplitLine_H3.Size = new System.Drawing.Size(96, 1); + this.ucSplitLine_H3.TabIndex = 1; + this.ucSplitLine_H3.TabStop = false; + // + // ucSplitLine_V3 + // + this.ucSplitLine_V3.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_V3.Dock = System.Windows.Forms.DockStyle.Right; + this.ucSplitLine_V3.Location = new System.Drawing.Point(96, 0); + this.ucSplitLine_V3.Name = "ucSplitLine_V3"; + this.ucSplitLine_V3.Size = new System.Drawing.Size(1, 88); + this.ucSplitLine_V3.TabIndex = 0; + this.ucSplitLine_V3.TabStop = false; + // + // panel2 + // + this.panel2.Controls.Add(this.label2); + this.panel2.Controls.Add(this.ucSplitLine_H2); + this.panel2.Controls.Add(this.ucSplitLine_V2); + this.panel2.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel2.Location = new System.Drawing.Point(97, 0); + this.panel2.Margin = new System.Windows.Forms.Padding(0); + this.panel2.Name = "panel2"; + this.panel2.Size = new System.Drawing.Size(97, 88); + this.panel2.TabIndex = 2; + // + // label2 + // + this.label2.BackColor = System.Drawing.Color.White; + this.label2.Dock = System.Windows.Forms.DockStyle.Fill; + this.label2.Font = new System.Drawing.Font("Arial Unicode MS", 30F); + this.label2.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.label2.Location = new System.Drawing.Point(0, 0); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(96, 87); + this.label2.TabIndex = 2; + this.label2.Tag = "2"; + this.label2.Text = "2"; + this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label2.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Num_MouseDown); + // + // ucSplitLine_H2 + // + this.ucSplitLine_H2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_H2.Dock = System.Windows.Forms.DockStyle.Bottom; + this.ucSplitLine_H2.Location = new System.Drawing.Point(0, 87); + this.ucSplitLine_H2.Name = "ucSplitLine_H2"; + this.ucSplitLine_H2.Size = new System.Drawing.Size(96, 1); + this.ucSplitLine_H2.TabIndex = 1; + this.ucSplitLine_H2.TabStop = false; + // + // ucSplitLine_V2 + // + this.ucSplitLine_V2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_V2.Dock = System.Windows.Forms.DockStyle.Right; + this.ucSplitLine_V2.Location = new System.Drawing.Point(96, 0); + this.ucSplitLine_V2.Name = "ucSplitLine_V2"; + this.ucSplitLine_V2.Size = new System.Drawing.Size(1, 88); + this.ucSplitLine_V2.TabIndex = 0; + this.ucSplitLine_V2.TabStop = false; + // + // panel1 + // + this.panel1.Controls.Add(this.label1); + this.panel1.Controls.Add(this.ucSplitLine_H1); + this.panel1.Controls.Add(this.ucSplitLine_V1); + this.panel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel1.Location = new System.Drawing.Point(0, 0); + this.panel1.Margin = new System.Windows.Forms.Padding(0); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(97, 88); + this.panel1.TabIndex = 1; + // + // label1 + // + this.label1.BackColor = System.Drawing.Color.White; + this.label1.Dock = System.Windows.Forms.DockStyle.Fill; + this.label1.Font = new System.Drawing.Font("Arial Unicode MS", 30F); + this.label1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(102)))), ((int)(((byte)(102)))), ((int)(((byte)(102))))); + this.label1.Location = new System.Drawing.Point(0, 0); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(96, 87); + this.label1.TabIndex = 2; + this.label1.Tag = "1"; + this.label1.Text = "1"; + this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.label1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Num_MouseDown); + // + // ucSplitLine_H1 + // + this.ucSplitLine_H1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_H1.Dock = System.Windows.Forms.DockStyle.Bottom; + this.ucSplitLine_H1.Location = new System.Drawing.Point(0, 87); + this.ucSplitLine_H1.Name = "ucSplitLine_H1"; + this.ucSplitLine_H1.Size = new System.Drawing.Size(96, 1); + this.ucSplitLine_H1.TabIndex = 1; + this.ucSplitLine_H1.TabStop = false; + // + // ucSplitLine_V1 + // + this.ucSplitLine_V1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_V1.Dock = System.Windows.Forms.DockStyle.Right; + this.ucSplitLine_V1.Location = new System.Drawing.Point(96, 0); + this.ucSplitLine_V1.Name = "ucSplitLine_V1"; + this.ucSplitLine_V1.Size = new System.Drawing.Size(1, 88); + this.ucSplitLine_V1.TabIndex = 0; + this.ucSplitLine_V1.TabStop = false; + // + // ucSplitLine_H11 + // + this.ucSplitLine_H11.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_H11.Dock = System.Windows.Forms.DockStyle.Bottom; + this.ucSplitLine_H11.Location = new System.Drawing.Point(1, 351); + this.ucSplitLine_H11.Name = "ucSplitLine_H11"; + this.ucSplitLine_H11.Size = new System.Drawing.Size(487, 1); + this.ucSplitLine_H11.TabIndex = 5; + this.ucSplitLine_H11.TabStop = false; + // + // ucSplitLine_H10 + // + this.ucSplitLine_H10.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_H10.Dock = System.Windows.Forms.DockStyle.Top; + this.ucSplitLine_H10.Location = new System.Drawing.Point(1, 0); + this.ucSplitLine_H10.Name = "ucSplitLine_H10"; + this.ucSplitLine_H10.Size = new System.Drawing.Size(487, 1); + this.ucSplitLine_H10.TabIndex = 3; + this.ucSplitLine_H10.TabStop = false; + // + // ucSplitLine_V16 + // + this.ucSplitLine_V16.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_V16.Dock = System.Windows.Forms.DockStyle.Right; + this.ucSplitLine_V16.Location = new System.Drawing.Point(488, 0); + this.ucSplitLine_V16.Name = "ucSplitLine_V16"; + this.ucSplitLine_V16.Size = new System.Drawing.Size(1, 352); + this.ucSplitLine_V16.TabIndex = 4; + this.ucSplitLine_V16.TabStop = false; + // + // ucSplitLine_V14 + // + this.ucSplitLine_V14.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224))))); + this.ucSplitLine_V14.Dock = System.Windows.Forms.DockStyle.Left; + this.ucSplitLine_V14.Location = new System.Drawing.Point(0, 0); + this.ucSplitLine_V14.Name = "ucSplitLine_V14"; + this.ucSplitLine_V14.Size = new System.Drawing.Size(1, 352); + this.ucSplitLine_V14.TabIndex = 3; + this.ucSplitLine_V14.TabStop = false; + // + // UCKeyBorderPay + // + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; + this.BackColor = System.Drawing.Color.Transparent; + this.Controls.Add(this.ucSplitLine_H11); + this.Controls.Add(this.ucSplitLine_H10); + this.Controls.Add(this.ucSplitLine_V16); + this.Controls.Add(this.ucSplitLine_V14); + this.Controls.Add(this.tableLayoutPanel1); + this.Name = "UCKeyBorderPay"; + this.Size = new System.Drawing.Size(489, 352); + this.tableLayoutPanel1.ResumeLayout(false); + this.panel19.ResumeLayout(false); + this.panel18.ResumeLayout(false); + this.panel17.ResumeLayout(false); + this.panel16.ResumeLayout(false); + this.panel15.ResumeLayout(false); + this.panel14.ResumeLayout(false); + this.panel13.ResumeLayout(false); + this.panel12.ResumeLayout(false); + this.panel11.ResumeLayout(false); + this.panel10.ResumeLayout(false); + this.panel9.ResumeLayout(false); + this.panel8.ResumeLayout(false); + this.panel7.ResumeLayout(false); + this.panel6.ResumeLayout(false); + this.panel5.ResumeLayout(false); + this.panel4.ResumeLayout(false); + this.panel3.ResumeLayout(false); + this.panel2.ResumeLayout(false); + this.panel1.ResumeLayout(false); + this.ResumeLayout(false); + + } + + #endregion + + /// + /// The table layout panel1 + /// + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; + /// + /// The panel19 + /// + private System.Windows.Forms.Panel panel19; + /// + /// The label fast4 + /// + private System.Windows.Forms.Label lblFast4; + /// + /// The uc split line V19 + /// + private UCSplitLine_V ucSplitLine_V19; + /// + /// The panel18 + /// + private System.Windows.Forms.Panel panel18; + /// + /// The label18 + /// + private System.Windows.Forms.Label label18; + /// + /// The panel17 + /// + private System.Windows.Forms.Panel panel17; + /// + /// The label fast3 + /// + private System.Windows.Forms.Label lblFast3; + /// + /// The uc split line H17 + /// + private UCSplitLine_H ucSplitLine_H17; + /// + /// The uc split line V17 + /// + private UCSplitLine_V ucSplitLine_V17; + /// + /// The panel16 + /// + private System.Windows.Forms.Panel panel16; + /// + /// The label16 + /// + private System.Windows.Forms.Label label16; + /// + /// The uc split line H16 + /// + private UCSplitLine_H ucSplitLine_H16; + /// + /// The panel15 + /// + private System.Windows.Forms.Panel panel15; + /// + /// The label fast2 + /// + private System.Windows.Forms.Label lblFast2; + /// + /// The uc split line H15 + /// + private UCSplitLine_H ucSplitLine_H15; + /// + /// The uc split line V15 + /// + private UCSplitLine_V ucSplitLine_V15; + /// + /// The panel14 + /// + private System.Windows.Forms.Panel panel14; + /// + /// The label14 + /// + private System.Windows.Forms.Label label14; + /// + /// The uc split line H14 + /// + private UCSplitLine_H ucSplitLine_H14; + /// + /// The panel13 + /// + private System.Windows.Forms.Panel panel13; + /// + /// The label fast1 + /// + private System.Windows.Forms.Label lblFast1; + /// + /// The uc split line H13 + /// + private UCSplitLine_H ucSplitLine_H13; + /// + /// The uc split line V13 + /// + private UCSplitLine_V ucSplitLine_V13; + /// + /// The panel12 + /// + private System.Windows.Forms.Panel panel12; + /// + /// The label12 + /// + private System.Windows.Forms.Label label12; + /// + /// The uc split line V12 + /// + private UCSplitLine_V ucSplitLine_V12; + /// + /// The panel11 + /// + private System.Windows.Forms.Panel panel11; + /// + /// The label11 + /// + private System.Windows.Forms.Label label11; + /// + /// The uc split line V11 + /// + private UCSplitLine_V ucSplitLine_V11; + /// + /// The panel10 + /// + private System.Windows.Forms.Panel panel10; + /// + /// The label10 + /// + private System.Windows.Forms.Label label10; + /// + /// The uc split line V10 + /// + private UCSplitLine_V ucSplitLine_V10; + /// + /// The panel9 + /// + private System.Windows.Forms.Panel panel9; + /// + /// The label9 + /// + private System.Windows.Forms.Label label9; + /// + /// The uc split line h9 + /// + private UCSplitLine_H ucSplitLine_H9; + /// + /// The uc split line v9 + /// + private UCSplitLine_V ucSplitLine_V9; + /// + /// The panel8 + /// + private System.Windows.Forms.Panel panel8; + /// + /// The label8 + /// + private System.Windows.Forms.Label label8; + /// + /// The uc split line h8 + /// + private UCSplitLine_H ucSplitLine_H8; + /// + /// The uc split line v8 + /// + private UCSplitLine_V ucSplitLine_V8; + /// + /// The panel7 + /// + private System.Windows.Forms.Panel panel7; + /// + /// The label7 + /// + private System.Windows.Forms.Label label7; + /// + /// The uc split line h7 + /// + private UCSplitLine_H ucSplitLine_H7; + /// + /// The uc split line v7 + /// + private UCSplitLine_V ucSplitLine_V7; + /// + /// The panel6 + /// + private System.Windows.Forms.Panel panel6; + /// + /// The label6 + /// + private System.Windows.Forms.Label label6; + /// + /// The uc split line h6 + /// + private UCSplitLine_H ucSplitLine_H6; + /// + /// The uc split line v6 + /// + private UCSplitLine_V ucSplitLine_V6; + /// + /// The panel5 + /// + private System.Windows.Forms.Panel panel5; + /// + /// The label5 + /// + private System.Windows.Forms.Label label5; + /// + /// The uc split line h5 + /// + private UCSplitLine_H ucSplitLine_H5; + /// + /// The uc split line v5 + /// + private UCSplitLine_V ucSplitLine_V5; + /// + /// The panel4 + /// + private System.Windows.Forms.Panel panel4; + /// + /// The label4 + /// + private System.Windows.Forms.Label label4; + /// + /// The uc split line h4 + /// + private UCSplitLine_H ucSplitLine_H4; + /// + /// The uc split line v4 + /// + private UCSplitLine_V ucSplitLine_V4; + /// + /// The panel3 + /// + private System.Windows.Forms.Panel panel3; + /// + /// The label3 + /// + private System.Windows.Forms.Label label3; + /// + /// The uc split line h3 + /// + private UCSplitLine_H ucSplitLine_H3; + /// + /// The uc split line v3 + /// + private UCSplitLine_V ucSplitLine_V3; + /// + /// The panel2 + /// + private System.Windows.Forms.Panel panel2; + /// + /// The label2 + /// + private System.Windows.Forms.Label label2; + /// + /// The uc split line h2 + /// + private UCSplitLine_H ucSplitLine_H2; + /// + /// The uc split line v2 + /// + private UCSplitLine_V ucSplitLine_V2; + /// + /// The panel1 + /// + private System.Windows.Forms.Panel panel1; + /// + /// The label1 + /// + private System.Windows.Forms.Label label1; + /// + /// The uc split line h1 + /// + private UCSplitLine_H ucSplitLine_H1; + /// + /// The uc split line v1 + /// + private UCSplitLine_V ucSplitLine_V1; + /// + /// The uc split line V14 + /// + private UCSplitLine_V ucSplitLine_V14; + /// + /// The uc split line V16 + /// + private UCSplitLine_V ucSplitLine_V16; + /// + /// The uc split line H10 + /// + private UCSplitLine_H ucSplitLine_H10; + /// + /// The uc split line H11 + /// + private UCSplitLine_H ucSplitLine_H11; + } +} diff --git a/UsingControl/HZHControls/Controls/KeyBord/UCKeyBorderPay.cs b/UsingControl/HZHControls/Controls/KeyBord/UCKeyBorderPay.cs new file mode 100644 index 0000000..f828184 --- /dev/null +++ b/UsingControl/HZHControls/Controls/KeyBord/UCKeyBorderPay.cs @@ -0,0 +1,306 @@ +// *********************************************************************** +// Assembly : HZH_Controls +// Created : 08-08-2019 +// +// *********************************************************************** +// +// Copyright by Huang Zhenghui(黄正辉) All, QQ group:568015492 QQ:623128629 Email:623128629@qq.com +// +// +// Blog: https://www.cnblogs.com/bfyx +// GitHub:https://github.com/kwwwvagaa/NetWinformControl +// gitee:https://gitee.com/kwwwvagaa/net_winform_custom_control.git +// +// If you use this code, please keep this note. +// *********************************************************************** +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace HZH_Controls.Controls +{ + /// + /// Class UCKeyBorderPay. + /// Implements the + /// + /// + public partial class UCKeyBorderPay : UserControl + { + /// + /// Occurs when [number click]. + /// + [Description("数字点击事件"), Category("自定义")] + public event EventHandler NumClick; + + /// + /// Occurs when [cancel click]. + /// + [Description("取消点击事件"), Category("自定义")] + public event EventHandler CancelClick; + + /// + /// Occurs when [ok click]. + /// + [Description("确定点击事件"), Category("自定义")] + public event EventHandler OKClick; + + /// + /// Occurs when [backspace click]. + /// + [Description("删除点击事件"), Category("自定义")] + public event EventHandler BackspaceClick; + + /// + /// Occurs when [money click]. + /// + [Description("金额点击事件"), Category("自定义")] + public event EventHandler MoneyClick; + /// + /// Initializes a new instance of the class. + /// + public UCKeyBorderPay() + { + InitializeComponent(); + } + + #region 设置快速付款金额 + /// + /// 功能描述:设置快速付款金额 + /// 作  者:HZH + /// 创建日期:2019-03-07 11:41:04 + /// 任务编号:POS + /// + /// SorceMoney + public void SetPayMoney(decimal SorceMoney) + { + List list = new List(); + decimal d = Math.Ceiling(SorceMoney); + if (SorceMoney > 0m) + { + if (SorceMoney < 5m) + { + list.Add(5m); + list.Add(10m); + list.Add(20m); + list.Add(50m); + } + else if (SorceMoney < 10m) + { + list.Add(10m); + list.Add(20m); + list.Add(50m); + list.Add(100m); + } + else + { + int num = Convert.ToInt32(d % 10m); + int num2 = Convert.ToInt32(Math.Floor(d / 10m) % 10m); + int num3 = Convert.ToInt32(Math.Floor(d / 100m)); + int num4; + if (num < 5) + { + num4 = num2 * 10 + 5; + list.Add(num4 + num3 * 100); + num4 = (num2 + 1) * 10; + list.Add(num4 + num3 * 100); + } + else + { + num4 = (num2 + 1) * 10; + list.Add(num4 + num3 * 100); + } + if (num4 >= 0 && num4 < 10) + { + num4 = 10; + if (list.Count < 4) + { + list.Add(num4 + num3 * 100); + } + num4 = 20; + if (list.Count < 4) + { + list.Add(num4 + num3 * 100); + } + num4 = 50; + if (list.Count < 4) + { + list.Add(num4 + num3 * 100); + } + num4 = 100; + if (list.Count < 4) + { + list.Add(num4 + num3 * 100); + } + } + else if (num4 >= 10 && num4 < 20) + { + num4 = 20; + if (list.Count < 4) + { + list.Add(num4 + num3 * 100); + } + num4 = 50; + if (list.Count < 4) + { + list.Add(num4 + num3 * 100); + } + num4 = 100; + if (list.Count < 4) + { + list.Add(num4 + num3 * 100); + } + } + else if (num4 >= 20 && num4 < 50) + { + num4 = 50; + if (list.Count < 4) + { + list.Add(num4 + num3 * 100); + } + num4 = 100; + if (list.Count < 4) + { + list.Add(num4 + num3 * 100); + } + } + else if (num4 < 100) + { + num4 = 100; + if (list.Count < 4) + { + list.Add(num4 + num3 * 100); + } + } + } + } + SetFastMoneyToContrl(list); + } + #endregion + + /// + /// Sets the fast money to contrl. + /// + /// The values. + private void SetFastMoneyToContrl(List values) + { + List