├── pic └── index.png ├── CalculatorApp ├── ico.ico ├── App.config ├── Properties │ ├── Settings.settings │ ├── AssemblyInfo.cs │ ├── Settings.Designer.cs │ ├── Resources.Designer.cs │ ├── app.manifest │ └── Resources.resx ├── Program.cs ├── Calculation.cs ├── CalculatorApp.csproj ├── Form1.cs ├── Form1.Designer.cs └── Form1.resx ├── LICENSE ├── CalculatorApp.sln ├── README.md ├── .gitattributes └── .gitignore /pic/index.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itning/CalculatorApp/master/pic/index.png -------------------------------------------------------------------------------- /CalculatorApp/ico.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/itning/CalculatorApp/master/CalculatorApp/ico.ico -------------------------------------------------------------------------------- /CalculatorApp/App.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /CalculatorApp/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /CalculatorApp/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | using System.Windows.Forms; 6 | 7 | namespace CalculatorApp 8 | { 9 | static class Program 10 | { 11 | /// 12 | /// 应用程序的主入口点。 13 | /// 14 | [STAThread] 15 | static void Main() 16 | { 17 | Application.EnableVisualStyles(); 18 | Application.SetCompatibleTextRenderingDefault(false); 19 | Application.Run(new Form1()); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 a1837634447 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /CalculatorApp/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // 有关程序集的一般信息由以下 6 | // 控制。更改这些特性值可修改 7 | // 与程序集关联的信息。 8 | [assembly: AssemblyTitle("CalculatorApp")] 9 | [assembly: AssemblyDescription("计算器程序")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("itning")] 12 | [assembly: AssemblyProduct("CalculatorApp")] 13 | [assembly: AssemblyCopyright("Copyright © 2018")] 14 | [assembly: AssemblyTrademark("itning")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // 将 ComVisible 设置为 false 会使此程序集中的类型 18 | //对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型 19 | //请将此类型的 ComVisible 特性设置为 true。 20 | [assembly: ComVisible(false)] 21 | 22 | // 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID 23 | [assembly: Guid("7fc7e131-28d8-47d7-89a1-eb29c317797f")] 24 | 25 | // 程序集的版本信息由下列四个值组成: 26 | // 27 | // 主版本 28 | // 次版本 29 | // 生成号 30 | // 修订号 31 | // 32 | // 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号 33 | // 方法是按如下所示使用“*”: : 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /CalculatorApp.sln: -------------------------------------------------------------------------------- 1 | 2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 15 4 | VisualStudioVersion = 15.0.28307.136 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CalculatorApp", "CalculatorApp\CalculatorApp.csproj", "{7FC7E131-28D8-47D7-89A1-EB29C317797F}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Release|Any CPU = Release|Any CPU 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {7FC7E131-28D8-47D7-89A1-EB29C317797F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 15 | {7FC7E131-28D8-47D7-89A1-EB29C317797F}.Debug|Any CPU.Build.0 = Debug|Any CPU 16 | {7FC7E131-28D8-47D7-89A1-EB29C317797F}.Release|Any CPU.ActiveCfg = Release|Any CPU 17 | {7FC7E131-28D8-47D7-89A1-EB29C317797F}.Release|Any CPU.Build.0 = Release|Any CPU 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | GlobalSection(ExtensibilityGlobals) = postSolution 23 | SolutionGuid = {789077F5-9130-4B42-8B94-239BF120A35C} 24 | EndGlobalSection 25 | EndGlobal 26 | -------------------------------------------------------------------------------- /CalculatorApp/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace CalculatorApp.Properties 12 | { 13 | 14 | 15 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 16 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] 17 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase 18 | { 19 | 20 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 21 | 22 | public static Settings Default 23 | { 24 | get 25 | { 26 | return defaultInstance; 27 | } 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # CalculatorApp 2 | 3 | 使用C# 编写的计算器程序 4 | 5 | [![GitHub stars](https://img.shields.io/github/stars/itning/CalculatorApp.svg?style=social&label=Stars)](https://github.com/itning/CalculatorApp/stargazers) 6 | [![GitHub forks](https://img.shields.io/github/forks/itning/CalculatorApp.svg?style=social&label=Fork)](https://github.com/itning/CalculatorApp/network/members) 7 | [![GitHub watchers](https://img.shields.io/github/watchers/itning/CalculatorApp.svg?style=social&label=Watch)](https://github.com/itning/CalculatorApp/watchers) 8 | [![GitHub followers](https://img.shields.io/github/followers/itning.svg?style=social&label=Follow)](https://github.com/itning?tab=followers) 9 | 10 | [![GitHub issues](https://img.shields.io/github/issues/itning/CalculatorApp.svg)](https://github.com/itning/CalculatorApp/issues) 11 | [![GitHub license](https://img.shields.io/github/license/itning/CalculatorApp.svg)](https://github.com/itning/CalculatorApp/blob/master/LICENSE) 12 | [![GitHub last commit](https://img.shields.io/github/last-commit/itning/CalculatorApp.svg)](https://github.com/itning/CalculatorApp/commits) 13 | [![GitHub release](https://img.shields.io/github/release/itning/CalculatorApp.svg)](https://github.com/itning/CalculatorApp/releases) 14 | [![GitHub repo size in bytes](https://img.shields.io/github/repo-size/itning/CalculatorApp.svg)](https://github.com/itning/CalculatorApp) 15 | [![HitCount](http://hits.dwyl.io/itning/CalculatorApp.svg)](http://hits.dwyl.io/itning/CalculatorApp) 16 | [![language](https://img.shields.io/badge/language-C%23-green.svg)](https://github.com/itning/CalculatorApp) 17 | 18 | ## 截图 19 | 20 | ![](https://github.com/itning/CalculatorApp/blob/master/pic/index.png) 21 | -------------------------------------------------------------------------------- /CalculatorApp/Properties/Resources.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // 此代码由工具生成。 4 | // 运行时版本: 4.0.30319.42000 5 | // 6 | // 对此文件的更改可能导致不正确的行为,如果 7 | // 重新生成代码,则所做更改将丢失。 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace CalculatorApp.Properties 12 | { 13 | 14 | 15 | /// 16 | /// 强类型资源类,用于查找本地化字符串等。 17 | /// 18 | // 此类是由 StronglyTypedResourceBuilder 19 | // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 20 | // 若要添加或删除成员,请编辑 .ResX 文件,然后重新运行 ResGen 21 | // (以 /str 作为命令选项),或重新生成 VS 项目。 22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | internal class Resources 26 | { 27 | 28 | private static global::System.Resources.ResourceManager resourceMan; 29 | 30 | private static global::System.Globalization.CultureInfo resourceCulture; 31 | 32 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 33 | internal Resources() 34 | { 35 | } 36 | 37 | /// 38 | /// 返回此类使用的缓存 ResourceManager 实例。 39 | /// 40 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 41 | internal static global::System.Resources.ResourceManager ResourceManager 42 | { 43 | get 44 | { 45 | if ((resourceMan == null)) 46 | { 47 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("CalculatorApp.Properties.Resources", typeof(Resources).Assembly); 48 | resourceMan = temp; 49 | } 50 | return resourceMan; 51 | } 52 | } 53 | 54 | /// 55 | /// 覆盖当前线程的 CurrentUICulture 属性 56 | /// 使用此强类型的资源类的资源查找。 57 | /// 58 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 59 | internal static global::System.Globalization.CultureInfo Culture 60 | { 61 | get 62 | { 63 | return resourceCulture; 64 | } 65 | set 66 | { 67 | resourceCulture = value; 68 | } 69 | } 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | ############################################################################### 2 | # Set default behavior to automatically normalize line endings. 3 | ############################################################################### 4 | * text=auto 5 | 6 | ############################################################################### 7 | # Set default behavior for command prompt diff. 8 | # 9 | # This is need for earlier builds of msysgit that does not have it on by 10 | # default for csharp files. 11 | # Note: This is only used by command line 12 | ############################################################################### 13 | #*.cs diff=csharp 14 | 15 | ############################################################################### 16 | # Set the merge driver for project and solution files 17 | # 18 | # Merging from the command prompt will add diff markers to the files if there 19 | # are conflicts (Merging from VS is not affected by the settings below, in VS 20 | # the diff markers are never inserted). Diff markers may cause the following 21 | # file extensions to fail to load in VS. An alternative would be to treat 22 | # these files as binary and thus will always conflict and require user 23 | # intervention with every merge. To do so, just uncomment the entries below 24 | ############################################################################### 25 | #*.sln merge=binary 26 | #*.csproj merge=binary 27 | #*.vbproj merge=binary 28 | #*.vcxproj merge=binary 29 | #*.vcproj merge=binary 30 | #*.dbproj merge=binary 31 | #*.fsproj merge=binary 32 | #*.lsproj merge=binary 33 | #*.wixproj merge=binary 34 | #*.modelproj merge=binary 35 | #*.sqlproj merge=binary 36 | #*.wwaproj merge=binary 37 | 38 | ############################################################################### 39 | # behavior for image files 40 | # 41 | # image files are treated as binary by default. 42 | ############################################################################### 43 | #*.jpg binary 44 | #*.png binary 45 | #*.gif binary 46 | 47 | ############################################################################### 48 | # diff behavior for common document formats 49 | # 50 | # Convert binary document formats to text before diffing them. This feature 51 | # is only available from the command line. Turn it on by uncommenting the 52 | # entries below. 53 | ############################################################################### 54 | #*.doc diff=astextplain 55 | #*.DOC diff=astextplain 56 | #*.docx diff=astextplain 57 | #*.DOCX diff=astextplain 58 | #*.dot diff=astextplain 59 | #*.DOT diff=astextplain 60 | #*.pdf diff=astextplain 61 | #*.PDF diff=astextplain 62 | #*.rtf diff=astextplain 63 | #*.RTF diff=astextplain 64 | -------------------------------------------------------------------------------- /CalculatorApp/Properties/app.manifest: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 47 | 54 | 55 | 69 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ## Ignore Visual Studio temporary files, build results, and 2 | ## files generated by popular Visual Studio add-ons. 3 | 4 | # User-specific files 5 | *.suo 6 | *.user 7 | *.userosscache 8 | *.sln.docstates 9 | 10 | # User-specific files (MonoDevelop/Xamarin Studio) 11 | *.userprefs 12 | 13 | # Build results 14 | [Dd]ebug/ 15 | [Dd]ebugPublic/ 16 | [Rr]elease/ 17 | [Rr]eleases/ 18 | x64/ 19 | x86/ 20 | bld/ 21 | [Bb]in/ 22 | [Oo]bj/ 23 | [Ll]og/ 24 | 25 | # Visual Studio 2015 cache/options directory 26 | .vs/ 27 | # Uncomment if you have tasks that create the project's static files in wwwroot 28 | #wwwroot/ 29 | 30 | # MSTest test Results 31 | [Tt]est[Rr]esult*/ 32 | [Bb]uild[Ll]og.* 33 | 34 | # NUNIT 35 | *.VisualState.xml 36 | TestResult.xml 37 | 38 | # Build Results of an ATL Project 39 | [Dd]ebugPS/ 40 | [Rr]eleasePS/ 41 | dlldata.c 42 | 43 | # DNX 44 | project.lock.json 45 | project.fragment.lock.json 46 | artifacts/ 47 | 48 | *_i.c 49 | *_p.c 50 | *_i.h 51 | *.ilk 52 | *.meta 53 | *.obj 54 | *.pch 55 | *.pdb 56 | *.pgc 57 | *.pgd 58 | *.rsp 59 | *.sbr 60 | *.tlb 61 | *.tli 62 | *.tlh 63 | *.tmp 64 | *.tmp_proj 65 | *.log 66 | *.vspscc 67 | *.vssscc 68 | .builds 69 | *.pidb 70 | *.svclog 71 | *.scc 72 | 73 | # Chutzpah Test files 74 | _Chutzpah* 75 | 76 | # Visual C++ cache files 77 | ipch/ 78 | *.aps 79 | *.ncb 80 | *.opendb 81 | *.opensdf 82 | *.sdf 83 | *.cachefile 84 | *.VC.db 85 | *.VC.VC.opendb 86 | 87 | # Visual Studio profiler 88 | *.psess 89 | *.vsp 90 | *.vspx 91 | *.sap 92 | 93 | # TFS 2012 Local Workspace 94 | $tf/ 95 | 96 | # Guidance Automation Toolkit 97 | *.gpState 98 | 99 | # ReSharper is a .NET coding add-in 100 | _ReSharper*/ 101 | *.[Rr]e[Ss]harper 102 | *.DotSettings.user 103 | 104 | # JustCode is a .NET coding add-in 105 | .JustCode 106 | 107 | # TeamCity is a build add-in 108 | _TeamCity* 109 | 110 | # DotCover is a Code Coverage Tool 111 | *.dotCover 112 | 113 | # NCrunch 114 | _NCrunch_* 115 | .*crunch*.local.xml 116 | nCrunchTemp_* 117 | 118 | # MightyMoose 119 | *.mm.* 120 | AutoTest.Net/ 121 | 122 | # Web workbench (sass) 123 | .sass-cache/ 124 | 125 | # Installshield output folder 126 | [Ee]xpress/ 127 | 128 | # DocProject is a documentation generator add-in 129 | DocProject/buildhelp/ 130 | DocProject/Help/*.HxT 131 | DocProject/Help/*.HxC 132 | DocProject/Help/*.hhc 133 | DocProject/Help/*.hhk 134 | DocProject/Help/*.hhp 135 | DocProject/Help/Html2 136 | DocProject/Help/html 137 | 138 | # Click-Once directory 139 | publish/ 140 | 141 | # Publish Web Output 142 | *.[Pp]ublish.xml 143 | *.azurePubxml 144 | # TODO: Comment the next line if you want to checkin your web deploy settings 145 | # but database connection strings (with potential passwords) will be unencrypted 146 | #*.pubxml 147 | *.publishproj 148 | 149 | # Microsoft Azure Web App publish settings. Comment the next line if you want to 150 | # checkin your Azure Web App publish settings, but sensitive information contained 151 | # in these scripts will be unencrypted 152 | PublishScripts/ 153 | 154 | # NuGet Packages 155 | *.nupkg 156 | # The packages folder can be ignored because of Package Restore 157 | **/packages/* 158 | # except build/, which is used as an MSBuild target. 159 | !**/packages/build/ 160 | # Uncomment if necessary however generally it will be regenerated when needed 161 | #!**/packages/repositories.config 162 | # NuGet v3's project.json files produces more ignoreable files 163 | *.nuget.props 164 | *.nuget.targets 165 | 166 | # Microsoft Azure Build Output 167 | csx/ 168 | *.build.csdef 169 | 170 | # Microsoft Azure Emulator 171 | ecf/ 172 | rcf/ 173 | 174 | # Windows Store app package directories and files 175 | AppPackages/ 176 | BundleArtifacts/ 177 | Package.StoreAssociation.xml 178 | _pkginfo.txt 179 | 180 | # Visual Studio cache files 181 | # files ending in .cache can be ignored 182 | *.[Cc]ache 183 | # but keep track of directories ending in .cache 184 | !*.[Cc]ache/ 185 | 186 | # Others 187 | ClientBin/ 188 | ~$* 189 | *~ 190 | *.dbmdl 191 | *.dbproj.schemaview 192 | *.jfm 193 | *.pfx 194 | *.publishsettings 195 | node_modules/ 196 | orleans.codegen.cs 197 | 198 | # Since there are multiple workflows, uncomment next line to ignore bower_components 199 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) 200 | #bower_components/ 201 | 202 | # RIA/Silverlight projects 203 | Generated_Code/ 204 | 205 | # Backup & report files from converting an old project file 206 | # to a newer Visual Studio version. Backup files are not needed, 207 | # because we have git ;-) 208 | _UpgradeReport_Files/ 209 | Backup*/ 210 | UpgradeLog*.XML 211 | UpgradeLog*.htm 212 | 213 | # SQL Server files 214 | *.mdf 215 | *.ldf 216 | 217 | # Business Intelligence projects 218 | *.rdl.data 219 | *.bim.layout 220 | *.bim_*.settings 221 | 222 | # Microsoft Fakes 223 | FakesAssemblies/ 224 | 225 | # GhostDoc plugin setting file 226 | *.GhostDoc.xml 227 | 228 | # Node.js Tools for Visual Studio 229 | .ntvs_analysis.dat 230 | 231 | # Visual Studio 6 build log 232 | *.plg 233 | 234 | # Visual Studio 6 workspace options file 235 | *.opt 236 | 237 | # Visual Studio LightSwitch build output 238 | **/*.HTMLClient/GeneratedArtifacts 239 | **/*.DesktopClient/GeneratedArtifacts 240 | **/*.DesktopClient/ModelManifest.xml 241 | **/*.Server/GeneratedArtifacts 242 | **/*.Server/ModelManifest.xml 243 | _Pvt_Extensions 244 | 245 | # Paket dependency manager 246 | .paket/paket.exe 247 | paket-files/ 248 | 249 | # FAKE - F# Make 250 | .fake/ 251 | 252 | # JetBrains Rider 253 | .idea/ 254 | *.sln.iml 255 | 256 | # CodeRush 257 | .cr/ 258 | 259 | # Python Tools for Visual Studio (PTVS) 260 | __pycache__/ 261 | *.pyc -------------------------------------------------------------------------------- /CalculatorApp/Properties/Resources.resx: -------------------------------------------------------------------------------- 1 | 2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | text/microsoft-resx 107 | 108 | 109 | 2.0 110 | 111 | 112 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 113 | 114 | 115 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | -------------------------------------------------------------------------------- /CalculatorApp/Calculation.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Text.RegularExpressions; 7 | using System.Threading.Tasks; 8 | 9 | namespace CalculatorApp 10 | { 11 | /// 12 | /// 计算核心算法 13 | /// 14 | class Calculation 15 | { 16 | /// 17 | /// 静态只读实例 18 | /// 19 | private readonly static Calculation c = new Calculation(); 20 | 21 | /// 22 | /// 私有化构造方法(单例) 23 | /// 24 | private Calculation() 25 | { 26 | 27 | } 28 | 29 | /// 30 | /// 提供公共静态获取器 31 | /// 32 | /// Calculation实例 33 | public static Calculation GetCalculation() 34 | { 35 | return c; 36 | } 37 | 38 | /// 39 | /// 给定字符串,返回运算结果 40 | /// 41 | /// 要计算的字符串 42 | /// 算术结果 43 | public double Result(string str) 44 | { 45 | List ops = GetOps(str); 46 | List num = GetNum(str); 47 | 48 | // 先乘除再加减 49 | for (int i = 0; i < ops.Count; i++) 50 | { 51 | if (ops[i].Contains("*") || ops[i].Contains("/")) 52 | { 53 | String op = ops[i]; 54 | ops.RemoveAt(i); 55 | if (op.Equals("*")) 56 | { 57 | //从数字集合取对应和后面一位数字 58 | double d1 = num[i]; 59 | num.RemoveAt(i); 60 | double d2 = num[i]; 61 | num.RemoveAt(i); 62 | 63 | double number = d1 * d2; 64 | //再加上 65 | num.Insert(i, number); 66 | } 67 | if (op.Equals("/")) 68 | { 69 | double d1 = num[i]; 70 | num.RemoveAt(i); 71 | double d2 = num[i]; 72 | num.RemoveAt(i); 73 | double number = d1 / d2; 74 | num.Insert(i, number); 75 | } 76 | //刚刚移掉两个,却又刚加上一个新数,所以i要--,因为i++, 77 | //所以才能取到,如果不加那么虽然貌似正常,但是如果如8*3/3,*/连在一起就报错了;因为连着的两个if; 78 | i--; 79 | } 80 | } 81 | //到+-,按顺序的所以就用while()了 82 | while (ops.Count != 0) 83 | { 84 | String op = ops[0]; 85 | ops.RemoveAt(0); 86 | double d1 = num[0]; 87 | num.RemoveAt(0); 88 | double d2 = num[0]; 89 | num.RemoveAt(0); 90 | 91 | if (op.Equals("+")) 92 | { 93 | double number = d1 + d2; 94 | //再加入 95 | num.Insert(0, number); 96 | } 97 | if (op.Equals("-")) 98 | { 99 | double number = d1 - d2; 100 | num.Insert(0, number); 101 | } 102 | } 103 | return num[0]; 104 | } 105 | 106 | /// 107 | /// 获取符号 1.首位 和 * /后面 的-变成@,其他的-不用 108 | /// 109 | /// 字符串 110 | /// 符号集合 111 | private List GetNum(string str) 112 | { 113 | // -变成@ 114 | str = Change(str); 115 | List list = new List(); 116 | 117 | String[] split = Regex.Split(str, "[\\+\\-\\*/]"); 118 | for (int i = 0; i < split.Length; i++) 119 | { // @3,5,@4,9,@3 120 | String s = split[i]; 121 | // 再把@变成- 122 | if (s.Contains("@")) 123 | { 124 | s = '-' + s.Substring(1); 125 | } 126 | list.Add(Double.Parse(s)); 127 | } 128 | 129 | return list; 130 | } 131 | 132 | /// 133 | /// 将负数的负号变成@ 134 | /// 135 | /// 字符串 136 | /// 变换完的字符串 137 | private string Change(string str) 138 | { 139 | char[] chars = str.ToCharArray(); 140 | for (int i = 0; i < chars.Length; i++) 141 | { 142 | // @3+5*-4-9/-3 143 | if (i == 0 && chars[i] == '-') 144 | { 145 | str = '@' + str.Substring(i + 1); 146 | } 147 | // @3+5*@4-9/@3 148 | if (chars[i] == '*' && chars[i + 1] == '-' || chars[i] == '/' && chars[i + 1] == '-') 149 | { 150 | str = str.Substring(0, i + 1) + '@' + str.Substring(i + 2); 151 | } 152 | } 153 | return str; 154 | } 155 | 156 | /// 157 | /// 获取符号 158 | /// 159 | /// 字符串 160 | /// 符号集合 161 | private List GetOps(String str) 162 | { 163 | List list = new List(); 164 | // @变- 165 | str = Change(str); 166 | // @3+5*@4-9/@3 167 | String[] split = Regex.Split(str, "[0-9\\.@]"); // 表示0-9包括小数和@ 168 | for (int i = 0; i < split.Length; i++) 169 | { 170 | if (split[i].Contains("+") || split[i].Contains("-") || split[i].Contains("*") || split[i].Contains("/")) 171 | { 172 | list.Add(split[i]); 173 | } 174 | } 175 | return list; 176 | } 177 | } 178 | } 179 | -------------------------------------------------------------------------------- /CalculatorApp/CalculatorApp.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {7FC7E131-28D8-47D7-89A1-EB29C317797F} 8 | WinExe 9 | CalculatorApp 10 | CalculatorApp 11 | v4.6.1 12 | 512 13 | true 14 | true 15 | false 16 | publish\ 17 | true 18 | Disk 19 | false 20 | Foreground 21 | 7 22 | Days 23 | false 24 | false 25 | true 26 | http://itning.top 27 | http://itning.top 28 | itning 29 | 1 30 | 1.0.0.%2a 31 | false 32 | true 33 | true 34 | 35 | 36 | AnyCPU 37 | true 38 | full 39 | false 40 | bin\Debug\ 41 | DEBUG;TRACE 42 | prompt 43 | 4 44 | 45 | 46 | AnyCPU 47 | pdbonly 48 | true 49 | bin\Release\ 50 | TRACE 51 | prompt 52 | 4 53 | 54 | 55 | ico.ico 56 | 57 | 58 | F06D3CC3C3B45A31892C91FE89F56AC89420D3E9 59 | 60 | 61 | CalculatorApp_TemporaryKey.pfx 62 | 63 | 64 | true 65 | 66 | 67 | LocalIntranet 68 | 69 | 70 | Properties\app.manifest 71 | 72 | 73 | true 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | Form 92 | 93 | 94 | Form1.cs 95 | 96 | 97 | 98 | 99 | Form1.cs 100 | 101 | 102 | ResXFileCodeGenerator 103 | Resources.Designer.cs 104 | Designer 105 | 106 | 107 | True 108 | Resources.resx 109 | 110 | 111 | 112 | 113 | SettingsSingleFileGenerator 114 | Settings.Designer.cs 115 | 116 | 117 | True 118 | Settings.settings 119 | True 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | False 131 | Microsoft .NET Framework 4.6.1 %28x86 和 x64%29 132 | true 133 | 134 | 135 | False 136 | .NET Framework 3.5 SP1 137 | false 138 | 139 | 140 | 141 | -------------------------------------------------------------------------------- /CalculatorApp/Form1.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.ComponentModel; 4 | using System.Data; 5 | using System.Drawing; 6 | using System.Drawing.Drawing2D; 7 | using System.Linq; 8 | using System.Text; 9 | using System.Threading.Tasks; 10 | using System.Windows.Forms; 11 | 12 | namespace CalculatorApp 13 | { 14 | public partial class Form1 : Form 15 | { 16 | /// 17 | /// 显示的字符串 18 | /// 19 | private string showStr = string.Empty; 20 | 21 | public Form1() 22 | { 23 | InitializeComponent(); 24 | } 25 | 26 | /// 27 | /// 按钮0点击事件 28 | /// 29 | /// 事件源 30 | /// 不包含事件数据的对象 31 | private void Btn0_Click(object sender, EventArgs e) 32 | { 33 | if (showStr != string.Empty) 34 | { 35 | UpdateStrAndBox("0"); 36 | 37 | } 38 | else if (!IsLastStrOperator()) 39 | { 40 | UpdateStrAndBox("0"); 41 | } 42 | } 43 | 44 | /// 45 | /// 按钮1点击事件 46 | /// 47 | /// 事件源 48 | /// 不包含事件数据的对象 49 | private void Btn1_Click(object sender, EventArgs e) 50 | { 51 | UpdateStrAndBox("1"); 52 | } 53 | 54 | /// 55 | /// 按钮2点击事件 56 | /// 57 | /// 事件源 58 | /// 不包含事件数据的对象 59 | private void Btn2_Click(object sender, EventArgs e) 60 | { 61 | UpdateStrAndBox("2"); 62 | } 63 | 64 | /// 65 | /// 按钮3点击事件 66 | /// 67 | /// 事件源 68 | /// 不包含事件数据的对象 69 | private void Btn3_Click(object sender, EventArgs e) 70 | { 71 | UpdateStrAndBox("3"); 72 | } 73 | 74 | /// 75 | /// 按钮4点击事件 76 | /// 77 | /// 事件源 78 | /// 不包含事件数据的对象 79 | private void Btn4_Click(object sender, EventArgs e) 80 | { 81 | UpdateStrAndBox("4"); 82 | } 83 | 84 | /// 85 | /// 按钮5点击事件 86 | /// 87 | /// 事件源 88 | /// 不包含事件数据的对象 89 | private void Btn5_Click(object sender, EventArgs e) 90 | { 91 | UpdateStrAndBox("5"); 92 | } 93 | 94 | /// 95 | /// 按钮6点击事件 96 | /// 97 | /// 事件源 98 | /// 不包含事件数据的对象 99 | private void Btn6_Click(object sender, EventArgs e) 100 | { 101 | UpdateStrAndBox("6"); 102 | } 103 | 104 | /// 105 | /// 按钮7点击事件 106 | /// 107 | /// 事件源 108 | /// 不包含事件数据的对象 109 | private void Btn7_Click(object sender, EventArgs e) 110 | { 111 | UpdateStrAndBox("7"); 112 | } 113 | 114 | /// 115 | /// 按钮8点击事件 116 | /// 117 | /// 事件源 118 | /// 不包含事件数据的对象 119 | private void Btn8_Click(object sender, EventArgs e) 120 | { 121 | UpdateStrAndBox("8"); 122 | } 123 | 124 | /// 125 | /// 按钮9点击事件 126 | /// 127 | /// 事件源 128 | /// 不包含事件数据的对象 129 | private void Btn9_Click(object sender, EventArgs e) 130 | { 131 | UpdateStrAndBox("9"); 132 | } 133 | 134 | /// 135 | /// 按钮+点击事件 136 | /// 137 | /// 事件源 138 | /// 不包含事件数据的对象 139 | private void Btnjia_Click(object sender, EventArgs e) 140 | { 141 | if (showStr != string.Empty && !IsLastStrOperator()) 142 | { 143 | UpdateStrAndBox("+"); 144 | } 145 | } 146 | 147 | /// 148 | /// 按钮-点击事件 149 | /// 150 | /// 事件源 151 | /// 不包含事件数据的对象 152 | private void Btnjian_Click(object sender, EventArgs e) 153 | { 154 | if (showStr != string.Empty && !IsLastStrOperator()) 155 | { 156 | UpdateStrAndBox("-"); 157 | } 158 | } 159 | 160 | /// 161 | /// 按钮*点击事件 162 | /// 163 | /// 事件源 164 | /// 不包含事件数据的对象 165 | private void Btncheng_Click(object sender, EventArgs e) 166 | { 167 | if (showStr != string.Empty && !IsLastStrOperator()) 168 | { 169 | UpdateStrAndBox("*"); 170 | } 171 | } 172 | 173 | /// 174 | /// 按钮/点击事件 175 | /// 176 | /// 事件源 177 | /// 不包含事件数据的对象 178 | private void Btnchu_Click(object sender, EventArgs e) 179 | { 180 | if (showStr != string.Empty && !IsLastStrOperator()) 181 | { 182 | UpdateStrAndBox("/"); 183 | } 184 | } 185 | 186 | /// 187 | /// 按钮C点击事件 188 | /// 189 | /// 事件源 190 | /// 不包含事件数据的对象 191 | private void Btnc_Click(object sender, EventArgs e) 192 | { 193 | ShowBox.Focus(); 194 | if (showStr == string.Empty) 195 | { 196 | ShowBox.Text = "0"; 197 | ShowBox.Select(ShowBox.Text.Length, 0); 198 | ShowBox.ScrollToCaret(); 199 | return; 200 | } 201 | showStr = showStr.Substring(0, showStr.Length - 1); 202 | if (string.Equals(showStr, string.Empty)) 203 | { 204 | showStr = "0"; 205 | } 206 | ShowBox.Text = showStr; 207 | ShowBox.Select(ShowBox.Text.Length, 0); 208 | ShowBox.ScrollToCaret(); 209 | } 210 | 211 | /// 212 | /// 按钮.点击事件 213 | /// 214 | /// 事件源 215 | /// 不包含事件数据的对象 216 | private void Btndian_Click(object sender, EventArgs e) 217 | { 218 | if (showStr == string.Empty) 219 | { 220 | UpdateStrAndBox("0."); 221 | return; 222 | } 223 | char[] cs = { '+', '-', '*', '/' }; 224 | int index = showStr.LastIndexOfAny(cs); 225 | //没有找到 226 | if (index == -1 && !showStr.Contains(".")) 227 | { 228 | UpdateStrAndBox("."); 229 | return; 230 | } 231 | if (index != -1 && showStr.IndexOf(".", index) == -1 && !IsLastStrOperator()) 232 | { 233 | UpdateStrAndBox("."); 234 | } 235 | } 236 | 237 | /// 238 | /// 按钮Enter点击事件 239 | /// 240 | /// 事件源 241 | /// 不包含事件数据的对象 242 | private void Btnenter_Click(object sender, EventArgs e) 243 | { 244 | ShowBox.Focus(); 245 | if (showStr.IndexOfAny(new char[] { '+', '-', '*', '/' }) == -1) 246 | { 247 | return; 248 | } 249 | try 250 | { 251 | double result = Calculation.GetCalculation().Result(showStr); 252 | showStr = string.Empty; 253 | ShowBox.Text = result.ToString(); 254 | ShowBox.Select(ShowBox.Text.Length, 0); 255 | ShowBox.ScrollToCaret(); 256 | } 257 | catch (Exception) 258 | { 259 | return; 260 | } 261 | 262 | } 263 | 264 | /// 265 | /// 更新showStrShowBox.Text值 266 | /// 267 | /// 更新该成员的值 268 | /// 要更新的字符串 269 | private void UpdateStrAndBox(string str) 270 | { 271 | ShowBox.Focus(); 272 | if (showStr == "0" && str != ".") 273 | { 274 | showStr = str; 275 | } 276 | else 277 | { 278 | showStr += str; 279 | } 280 | ShowBox.Text = showStr; 281 | ShowBox.Select(ShowBox.Text.Length, 0); 282 | ShowBox.ScrollToCaret(); 283 | } 284 | 285 | /// 286 | /// 验证showStr成员中的上一个字符是否为操作符(+,-,*,/) 287 | /// 288 | /// 如果是操作符返回true否则返回false 289 | private bool IsLastStrOperator() 290 | { 291 | if (showStr.Length == 0) 292 | { 293 | return false; 294 | } 295 | switch (showStr[showStr.Length - 1]) 296 | { 297 | case '+': 298 | case '-': 299 | case '*': 300 | case '/': 301 | { 302 | return true; 303 | } 304 | } 305 | return false; 306 | } 307 | 308 | /// 309 | /// 窗体键盘按下事件 310 | /// 311 | /// 事件源 312 | /// 不包含事件数据的对象 313 | private void Form1_KeyDown(object sender, KeyEventArgs e) 314 | { 315 | switch (e.KeyCode) 316 | { 317 | case Keys.NumPad0: 318 | { 319 | this.Btn0_Click(null, null); 320 | break; 321 | } 322 | case Keys.NumPad1: 323 | { 324 | this.Btn1_Click(null, null); 325 | break; 326 | } 327 | case Keys.NumPad2: 328 | { 329 | this.Btn2_Click(null, null); 330 | break; 331 | } 332 | case Keys.NumPad3: 333 | { 334 | this.Btn3_Click(null, null); 335 | break; 336 | } 337 | case Keys.NumPad4: 338 | { 339 | this.Btn4_Click(null, null); 340 | break; 341 | } 342 | 343 | case Keys.NumPad5: 344 | { 345 | this.Btn5_Click(null, null); 346 | break; 347 | } 348 | case Keys.NumPad6: 349 | { 350 | this.Btn6_Click(null, null); 351 | break; 352 | } 353 | case Keys.NumPad7: 354 | { 355 | this.Btn7_Click(null, null); 356 | break; 357 | } 358 | case Keys.NumPad8: 359 | { 360 | this.Btn8_Click(null, null); 361 | break; 362 | } 363 | case Keys.NumPad9: 364 | { 365 | this.Btn9_Click(null, null); 366 | break; 367 | } 368 | case Keys.Add: 369 | { 370 | this.Btnjia_Click(null, null); 371 | break; 372 | } 373 | case Keys.Subtract: 374 | { 375 | this.Btnjian_Click(null, null); 376 | break; 377 | } 378 | case Keys.Multiply: 379 | { 380 | this.Btncheng_Click(null, null); 381 | break; 382 | } 383 | case Keys.Divide: 384 | { 385 | this.Btnchu_Click(null, null); 386 | break; 387 | } 388 | case Keys.Decimal: 389 | { 390 | this.Btndian_Click(null, null); 391 | break; 392 | } 393 | case Keys.Back: 394 | case Keys.Delete: 395 | { 396 | this.Btnc_Click(null, null); 397 | break; 398 | } 399 | case Keys.Return: 400 | { 401 | this.Btnenter_Click(null, null); 402 | break; 403 | } 404 | } 405 | } 406 | } 407 | } 408 | -------------------------------------------------------------------------------- /CalculatorApp/Form1.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace CalculatorApp 2 | { 3 | partial class Form1 4 | { 5 | /// 6 | /// 必需的设计器变量。 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// 清理所有正在使用的资源。 12 | /// 13 | /// 如果应释放托管资源,为 true;否则为 false。 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region Windows 窗体设计器生成的代码 24 | 25 | /// 26 | /// 设计器支持所需的方法 - 不要修改 27 | /// 使用代码编辑器修改此方法的内容。 28 | /// 29 | private void InitializeComponent() 30 | { 31 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1)); 32 | this.Btn7 = new System.Windows.Forms.Button(); 33 | this.Btn8 = new System.Windows.Forms.Button(); 34 | this.Btn9 = new System.Windows.Forms.Button(); 35 | this.Btn4 = new System.Windows.Forms.Button(); 36 | this.Btn5 = new System.Windows.Forms.Button(); 37 | this.Btn6 = new System.Windows.Forms.Button(); 38 | this.Btn1 = new System.Windows.Forms.Button(); 39 | this.Btn2 = new System.Windows.Forms.Button(); 40 | this.Btn3 = new System.Windows.Forms.Button(); 41 | this.Btndian = new System.Windows.Forms.Button(); 42 | this.Btnenter = new System.Windows.Forms.Button(); 43 | this.Btn0 = new System.Windows.Forms.Button(); 44 | this.Btnchu = new System.Windows.Forms.Button(); 45 | this.Btnjian = new System.Windows.Forms.Button(); 46 | this.Btncheng = new System.Windows.Forms.Button(); 47 | this.Btnjia = new System.Windows.Forms.Button(); 48 | this.ShowBox = new System.Windows.Forms.TextBox(); 49 | this.Btnc = new System.Windows.Forms.Button(); 50 | this.SuspendLayout(); 51 | // 52 | // Btn7 53 | // 54 | this.Btn7.Location = new System.Drawing.Point(12, 115); 55 | this.Btn7.Name = "Btn7"; 56 | this.Btn7.Size = new System.Drawing.Size(115, 50); 57 | this.Btn7.TabIndex = 1; 58 | this.Btn7.TabStop = false; 59 | this.Btn7.Text = "7"; 60 | this.Btn7.UseVisualStyleBackColor = true; 61 | this.Btn7.Click += new System.EventHandler(this.Btn7_Click); 62 | // 63 | // Btn8 64 | // 65 | this.Btn8.Location = new System.Drawing.Point(133, 115); 66 | this.Btn8.Name = "Btn8"; 67 | this.Btn8.Size = new System.Drawing.Size(115, 50); 68 | this.Btn8.TabIndex = 1; 69 | this.Btn8.TabStop = false; 70 | this.Btn8.Text = "8"; 71 | this.Btn8.UseVisualStyleBackColor = true; 72 | this.Btn8.Click += new System.EventHandler(this.Btn8_Click); 73 | // 74 | // Btn9 75 | // 76 | this.Btn9.Location = new System.Drawing.Point(254, 115); 77 | this.Btn9.Name = "Btn9"; 78 | this.Btn9.Size = new System.Drawing.Size(115, 50); 79 | this.Btn9.TabIndex = 1; 80 | this.Btn9.TabStop = false; 81 | this.Btn9.Text = "9"; 82 | this.Btn9.UseVisualStyleBackColor = true; 83 | this.Btn9.Click += new System.EventHandler(this.Btn9_Click); 84 | // 85 | // Btn4 86 | // 87 | this.Btn4.Location = new System.Drawing.Point(12, 171); 88 | this.Btn4.Name = "Btn4"; 89 | this.Btn4.Size = new System.Drawing.Size(115, 50); 90 | this.Btn4.TabIndex = 1; 91 | this.Btn4.TabStop = false; 92 | this.Btn4.Text = "4"; 93 | this.Btn4.UseVisualStyleBackColor = true; 94 | this.Btn4.Click += new System.EventHandler(this.Btn4_Click); 95 | // 96 | // Btn5 97 | // 98 | this.Btn5.Location = new System.Drawing.Point(133, 171); 99 | this.Btn5.Name = "Btn5"; 100 | this.Btn5.Size = new System.Drawing.Size(115, 50); 101 | this.Btn5.TabIndex = 1; 102 | this.Btn5.TabStop = false; 103 | this.Btn5.Text = "5"; 104 | this.Btn5.UseVisualStyleBackColor = true; 105 | this.Btn5.Click += new System.EventHandler(this.Btn5_Click); 106 | // 107 | // Btn6 108 | // 109 | this.Btn6.Location = new System.Drawing.Point(254, 171); 110 | this.Btn6.Name = "Btn6"; 111 | this.Btn6.Size = new System.Drawing.Size(115, 50); 112 | this.Btn6.TabIndex = 1; 113 | this.Btn6.TabStop = false; 114 | this.Btn6.Text = "6"; 115 | this.Btn6.UseVisualStyleBackColor = true; 116 | this.Btn6.Click += new System.EventHandler(this.Btn6_Click); 117 | // 118 | // Btn1 119 | // 120 | this.Btn1.Location = new System.Drawing.Point(12, 227); 121 | this.Btn1.Name = "Btn1"; 122 | this.Btn1.Size = new System.Drawing.Size(115, 50); 123 | this.Btn1.TabIndex = 1; 124 | this.Btn1.TabStop = false; 125 | this.Btn1.Text = "1"; 126 | this.Btn1.UseVisualStyleBackColor = true; 127 | this.Btn1.Click += new System.EventHandler(this.Btn1_Click); 128 | // 129 | // Btn2 130 | // 131 | this.Btn2.Location = new System.Drawing.Point(133, 227); 132 | this.Btn2.Name = "Btn2"; 133 | this.Btn2.Size = new System.Drawing.Size(115, 50); 134 | this.Btn2.TabIndex = 1; 135 | this.Btn2.TabStop = false; 136 | this.Btn2.Text = "2"; 137 | this.Btn2.UseVisualStyleBackColor = true; 138 | this.Btn2.Click += new System.EventHandler(this.Btn2_Click); 139 | // 140 | // Btn3 141 | // 142 | this.Btn3.Location = new System.Drawing.Point(254, 227); 143 | this.Btn3.Name = "Btn3"; 144 | this.Btn3.Size = new System.Drawing.Size(115, 50); 145 | this.Btn3.TabIndex = 1; 146 | this.Btn3.TabStop = false; 147 | this.Btn3.Text = "3"; 148 | this.Btn3.UseVisualStyleBackColor = true; 149 | this.Btn3.Click += new System.EventHandler(this.Btn3_Click); 150 | // 151 | // Btndian 152 | // 153 | this.Btndian.Location = new System.Drawing.Point(254, 283); 154 | this.Btndian.Name = "Btndian"; 155 | this.Btndian.Size = new System.Drawing.Size(115, 50); 156 | this.Btndian.TabIndex = 1; 157 | this.Btndian.TabStop = false; 158 | this.Btndian.Text = "."; 159 | this.Btndian.UseVisualStyleBackColor = true; 160 | this.Btndian.Click += new System.EventHandler(this.Btndian_Click); 161 | // 162 | // Btnenter 163 | // 164 | this.Btnenter.Location = new System.Drawing.Point(375, 224); 165 | this.Btnenter.Name = "Btnenter"; 166 | this.Btnenter.Size = new System.Drawing.Size(115, 109); 167 | this.Btnenter.TabIndex = 1; 168 | this.Btnenter.TabStop = false; 169 | this.Btnenter.Text = "Enter"; 170 | this.Btnenter.UseVisualStyleBackColor = true; 171 | this.Btnenter.Click += new System.EventHandler(this.Btnenter_Click); 172 | // 173 | // Btn0 174 | // 175 | this.Btn0.Location = new System.Drawing.Point(12, 283); 176 | this.Btn0.Name = "Btn0"; 177 | this.Btn0.Size = new System.Drawing.Size(236, 50); 178 | this.Btn0.TabIndex = 1; 179 | this.Btn0.TabStop = false; 180 | this.Btn0.Text = "0"; 181 | this.Btn0.UseVisualStyleBackColor = true; 182 | this.Btn0.Click += new System.EventHandler(this.Btn0_Click); 183 | // 184 | // Btnchu 185 | // 186 | this.Btnchu.Location = new System.Drawing.Point(133, 59); 187 | this.Btnchu.Name = "Btnchu"; 188 | this.Btnchu.Size = new System.Drawing.Size(115, 50); 189 | this.Btnchu.TabIndex = 1; 190 | this.Btnchu.TabStop = false; 191 | this.Btnchu.Text = "/"; 192 | this.Btnchu.UseVisualStyleBackColor = true; 193 | this.Btnchu.Click += new System.EventHandler(this.Btnchu_Click); 194 | // 195 | // Btnjian 196 | // 197 | this.Btnjian.Location = new System.Drawing.Point(375, 59); 198 | this.Btnjian.Name = "Btnjian"; 199 | this.Btnjian.Size = new System.Drawing.Size(115, 50); 200 | this.Btnjian.TabIndex = 1; 201 | this.Btnjian.TabStop = false; 202 | this.Btnjian.Text = "-"; 203 | this.Btnjian.UseVisualStyleBackColor = true; 204 | this.Btnjian.Click += new System.EventHandler(this.Btnjian_Click); 205 | // 206 | // Btncheng 207 | // 208 | this.Btncheng.Location = new System.Drawing.Point(254, 59); 209 | this.Btncheng.Name = "Btncheng"; 210 | this.Btncheng.Size = new System.Drawing.Size(115, 50); 211 | this.Btncheng.TabIndex = 1; 212 | this.Btncheng.TabStop = false; 213 | this.Btncheng.Text = "*"; 214 | this.Btncheng.UseVisualStyleBackColor = true; 215 | this.Btncheng.Click += new System.EventHandler(this.Btncheng_Click); 216 | // 217 | // Btnjia 218 | // 219 | this.Btnjia.Location = new System.Drawing.Point(375, 115); 220 | this.Btnjia.Name = "Btnjia"; 221 | this.Btnjia.Size = new System.Drawing.Size(115, 106); 222 | this.Btnjia.TabIndex = 1; 223 | this.Btnjia.TabStop = false; 224 | this.Btnjia.Text = "+"; 225 | this.Btnjia.UseVisualStyleBackColor = true; 226 | this.Btnjia.Click += new System.EventHandler(this.Btnjia_Click); 227 | // 228 | // ShowBox 229 | // 230 | this.ShowBox.CausesValidation = false; 231 | this.ShowBox.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); 232 | this.ShowBox.Location = new System.Drawing.Point(12, 12); 233 | this.ShowBox.Name = "ShowBox"; 234 | this.ShowBox.ReadOnly = true; 235 | this.ShowBox.ShortcutsEnabled = false; 236 | this.ShowBox.Size = new System.Drawing.Size(478, 41); 237 | this.ShowBox.TabIndex = 1; 238 | this.ShowBox.TabStop = false; 239 | this.ShowBox.Text = "0"; 240 | this.ShowBox.TextAlign = System.Windows.Forms.HorizontalAlignment.Right; 241 | // 242 | // Btnc 243 | // 244 | this.Btnc.CausesValidation = false; 245 | this.Btnc.Location = new System.Drawing.Point(12, 59); 246 | this.Btnc.Name = "Btnc"; 247 | this.Btnc.Size = new System.Drawing.Size(115, 50); 248 | this.Btnc.TabIndex = 1; 249 | this.Btnc.TabStop = false; 250 | this.Btnc.Text = "C"; 251 | this.Btnc.UseVisualStyleBackColor = true; 252 | this.Btnc.Click += new System.EventHandler(this.Btnc_Click); 253 | // 254 | // Form1 255 | // 256 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); 257 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 258 | this.ClientSize = new System.Drawing.Size(506, 344); 259 | this.Controls.Add(this.Btnc); 260 | this.Controls.Add(this.ShowBox); 261 | this.Controls.Add(this.Btnjia); 262 | this.Controls.Add(this.Btncheng); 263 | this.Controls.Add(this.Btnjian); 264 | this.Controls.Add(this.Btnchu); 265 | this.Controls.Add(this.Btn0); 266 | this.Controls.Add(this.Btnenter); 267 | this.Controls.Add(this.Btndian); 268 | this.Controls.Add(this.Btn3); 269 | this.Controls.Add(this.Btn2); 270 | this.Controls.Add(this.Btn1); 271 | this.Controls.Add(this.Btn6); 272 | this.Controls.Add(this.Btn5); 273 | this.Controls.Add(this.Btn4); 274 | this.Controls.Add(this.Btn9); 275 | this.Controls.Add(this.Btn8); 276 | this.Controls.Add(this.Btn7); 277 | this.Cursor = System.Windows.Forms.Cursors.Default; 278 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; 279 | this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); 280 | this.KeyPreview = true; 281 | this.MaximizeBox = false; 282 | this.Name = "Form1"; 283 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; 284 | this.Text = "计算器 by itning"; 285 | this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.Form1_KeyDown); 286 | this.ResumeLayout(false); 287 | this.PerformLayout(); 288 | 289 | } 290 | 291 | #endregion 292 | 293 | private System.Windows.Forms.Button Btn7; 294 | private System.Windows.Forms.Button Btn8; 295 | private System.Windows.Forms.Button Btn9; 296 | private System.Windows.Forms.Button Btn4; 297 | private System.Windows.Forms.Button Btn5; 298 | private System.Windows.Forms.Button Btn6; 299 | private System.Windows.Forms.Button Btn1; 300 | private System.Windows.Forms.Button Btn2; 301 | private System.Windows.Forms.Button Btn3; 302 | private System.Windows.Forms.Button Btndian; 303 | private System.Windows.Forms.Button Btnenter; 304 | private System.Windows.Forms.Button Btn0; 305 | private System.Windows.Forms.Button Btnchu; 306 | private System.Windows.Forms.Button Btnjian; 307 | private System.Windows.Forms.Button Btncheng; 308 | private System.Windows.Forms.Button Btnjia; 309 | private System.Windows.Forms.TextBox ShowBox; 310 | private System.Windows.Forms.Button Btnc; 311 | } 312 | } 313 | 314 | -------------------------------------------------------------------------------- /CalculatorApp/Form1.resx: -------------------------------------------------------------------------------- 1 | 2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | 121 | 122 | 123 | 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 229 | 230 | 231 | --------------------------------------------------------------------------------