.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="DeltaAlpha.WebForm1" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head id="Head1" runat="server"> <title></title> <style type="text/css"> td { text-align: center; } .style1 { height: 20px; } </style> </head> <body> <h1> 繪製三角形 </h1> <form id="form1" runat="server"> <div> 請輸入三角形高度: <asp:TextBox ID="txtHeight" runat="server" Width="30px"></asp:TextBox> <asp:DropDownList ID="ddlType" runat="server"> <asp:ListItem Value="L">正左</asp:ListItem> <asp:ListItem Value="R">正右</asp:ListItem> <asp:ListItem Value="C">等腰</asp:ListItem> <asp:ListItem Value="RL">倒左</asp:ListItem> <asp:ListItem Value="RR">倒右</asp:ListItem> <asp:ListItem Value="RC">倒等腰</asp:ListItem> <asp:ListItem Value="2C">背對背等腰</asp:ListItem> <asp:ListItem Value="4C">蝴蝶</asp:ListItem> </asp:DropDownList> <asp:Button ID="btnSubmit" runat="server" Text="確定" OnClick="btnSubmit_Click" /> </div> <table> <tr> <td> <asp:Literal ID="ltDelta" runat="server"></asp:Literal> </td> <td> </td> <td> <asp:Literal ID="ltDelta2" runat="server"></asp:Literal> </td> </tr> <tr> <td class="style1"> <asp:Literal ID="ltDelta3" runat="server"></asp:Literal> </td> <td class="style1"> </td> <td class="style1"> <asp:Literal ID="ltDelta4" runat="server"></asp:Literal> </td> </tr> </table> </form> </body> </html>.aspx.cs
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Text; namespace DeltaAlpha { public partial class WebForm1 : System.Web.UI.Page { private char[] symbols = new char[26 + 26 + 10]; private static int symbolIndex = 0; protected void Page_Load(object sender, EventArgs e) { txtHeight.Focus(); initSymbols(); } private void initSymbols() { char c = '1'; int i = 0; while (c != '9') { symbols[i++] = c; c = (char)(c + 1); } symbols[i++] = '0'; c = 'A'; while (c != 'Z') { symbols[i++] = c; c = (char)(c + 1); } c = 'a'; while (c != 'z') { symbols[i++] = c; c = (char)(c + 1); } } private void resetSymbolIndex() { symbolIndex = 0; } private string currentSymbol() { //return symbols[symbolIndex]; return "<img src='images/skull.png' alt='' />"; } private char nextSymbol() { char c = symbols[symbolIndex]; symbolIndex = (symbolIndex + 1) % symbols.Length; return c; } /// <summary> /// 偏左的直角三角形,第 i 層印 i 個骷髏頭 /// </summary> /// <param name="h">三角形高度</param> /// <returns>HTML</returns> private string deltaLeft(int h) { resetSymbolIndex(); StringBuilder sb = new StringBuilder(); sb.Append("<table border='0'>"); for (int i = 1; i <= h; i++) { sb.Append("<tr>"); for (int j = 1; j <= i; j++) { sb.Append("<td>" + currentSymbol() + "</td>"); } sb.Append("</tr>"); nextSymbol(); } sb.Append("</table>"); return sb.ToString(); } /// <summary> /// 偏右的直角三角形,第 i 層印 (h-i) 個空格和 i 個骷髏頭 /// </summary> /// <param name="h">三角形高度</param> /// <returns>HTML</returns> private string deltaRight(int h) { resetSymbolIndex(); StringBuilder sb = new StringBuilder(); sb.Append("<table border='0'>"); for (int i = 1; i <= h; i++) { sb.Append("<tr>"); for (int j = 1; j <= (h - i); j++) { sb.Append("<td> </td>"); } for (int j = 1; j <= i; j++) { sb.Append("<td>" + currentSymbol() + "</td>"); } sb.Append("</tr>"); nextSymbol(); } sb.Append("</table>"); return sb.ToString(); } /// <summary> /// 正的等腰三角形,第 i 層印 (h-i) 個空格和 (2i-1) 個骷髏頭 /// </summary> /// <param name="h">三角形高度</param> /// <returns>HTML</returns> private string deltaIsosceles(int h) { resetSymbolIndex(); StringBuilder sb = new StringBuilder(); sb.Append("<table border='0'>"); for (int i = 1; i <= h; i++) { sb.Append("<tr>"); for (int j = 1; j <= (h - i); j++) { sb.Append("<td> </td>"); } for (int j = 1; j <= (2 * i - 1); j++) { sb.Append("<td>" + currentSymbol() + "</td>"); } sb.Append("</tr>"); nextSymbol(); } sb.Append("</table>"); return sb.ToString(); } /// <summary> /// 倒的偏左的直角三角形,第 i 層印 (h-i+1) 個骷髏頭 /// </summary> /// <param name="h">三角形高度</param> /// <returns>HTML</returns> private string deltaDownLeft(int h) { resetSymbolIndex(); StringBuilder sb = new StringBuilder(); sb.Append("<table border='0'>"); for (int i = 1; i <= h; i++) { sb.Append("<tr>"); for (int j = 1; j <= (h - i + 1); j++) { sb.Append("<td>" + currentSymbol() + "</td>"); } sb.Append("</tr>"); nextSymbol(); } sb.Append("</table>"); return sb.ToString(); } /// <summary> /// 倒的偏右的直角三角形,第 i 層印 (i-1) 個空格和 (h-i+1) 個骷髏頭 /// </summary> /// <param name="h">三角形高度</param> /// <returns>HTML</returns> private string deltaDownRight(int h) { resetSymbolIndex(); StringBuilder sb = new StringBuilder(); sb.Append("<table border='0'>"); for (int i = 1; i <= h; i++) { sb.Append("<tr>"); for (int j = 1; j <= (i - 1); j++) { sb.Append("<td> </td>"); } for (int j = 1; j <= (h - i + 1); j++) { sb.Append("<td>" + currentSymbol() + "</td>"); } sb.Append("</tr>"); nextSymbol(); } sb.Append("</table>"); return sb.ToString(); } /// <summary> /// 倒的等腰三角形,第 i 層印 (i-1) 個空格和 2(h-i)+1 個骷髏頭 /// </summary> /// <param name="h">三角形高度</param> /// <returns>HTML</returns> private string deltaDownIsosceles(int h) { resetSymbolIndex(); StringBuilder sb = new StringBuilder(); sb.Append("<table border='0'>"); for (int i = 1; i <= h; i++) { sb.Append("<tr>"); for (int j = 1; j <= (i - 1); j++) { sb.Append("<td> </td>"); } for (int j = 1; j <= (2 * (h - i) + 1); j++) { sb.Append("<td>" + currentSymbol() + "</td>"); } sb.Append("</tr>"); nextSymbol(); } sb.Append("</table>"); return sb.ToString(); } /// <summary> /// 背對背等腰三角形,第 i 層印 (h-i) 個空格和 2i 個骷髏頭 /// </summary> /// <param name="h">三角形高度</param> /// <returns>HTML</returns> private string delta2Isosceles(int h) { resetSymbolIndex(); StringBuilder sb = new StringBuilder(); sb.Append("<table border='0'>"); for (int i = 1; i <= h; i++) { sb.Append("<tr>"); for (int j = 1; j <= (h - i); j++) { sb.Append("<td> </td>"); } for (int j = 1; j <= 2 * i; j++) { sb.Append("<td>" + currentSymbol() + "</td>"); } sb.Append("</tr>"); nextSymbol(); } sb.Append("</table>"); return sb.ToString(); } protected void btnSubmit_Click(object sender, EventArgs e) { int h = int.Parse(txtHeight.Text); string type = ddlType.SelectedValue; ltDelta.Text = ltDelta2.Text = ltDelta3.Text = ltDelta4.Text = ""; if (type.Equals("L")) ltDelta.Text = deltaLeft(h); else if (type.Equals("R")) ltDelta.Text = deltaRight(h); else if (type.Equals("C")) ltDelta.Text = deltaIsosceles(h); else if (type.Equals("RL")) ltDelta.Text = deltaDownLeft(h); else if (type.Equals("RR")) ltDelta.Text = deltaDownRight(h); else if (type.Equals("RC")) ltDelta.Text = deltaDownIsosceles(h); else if (type.Equals("2C")) { ltDelta.Text = deltaDownRight(h); ltDelta2.Text = deltaDownLeft(h); } else if (type.Equals("4C")) { ltDelta.Text = deltaDownRight(h); ltDelta2.Text = deltaDownLeft(h); ltDelta3.Text = deltaRight(h); ltDelta4.Text = deltaLeft(h); } txtHeight.Focus(); } } }GCD-OK
.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="GCD.WebForm1" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>兩正整數的最大公因數與最小公倍數</title> <style type="text/css"> div { text-align:center; } </style> </head> <body> <form id="form1" runat="server"> <div> <h1>兩正整數的最大公因數與最小公倍數</h1> <hr /> <br /> <asp:Label ID="Label1" runat="server" Text="第一正整數N: "></asp:Label> <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="TextBox1" ErrorMessage="請輸入N">*</asp:RequiredFieldValidator> <asp:RangeValidator ID="RangeValidator1" runat="server" ControlToValidate="TextBox1" ErrorMessage="N值需大於0" MaximumValue="99999999" MinimumValue="0" Type="Integer">*</asp:RangeValidator> <asp:Label ID="Label2" runat="server" Text="第二正整數M: "></asp:Label> <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox> <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ControlToValidate="TextBox2" ErrorMessage="請輸入M">*</asp:RequiredFieldValidator> <asp:RangeValidator ID="RangeValidator2" runat="server" ControlToValidate="TextBox2" ErrorMessage="M值需大於0" MaximumValue="99999999" MinimumValue="0" Type="Integer">*</asp:RangeValidator> <br /> <asp:ValidationSummary ID="ValidationSummary1" runat="server" HeaderText="以下資料有誤" ShowMessageBox="True" /> <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="送出" /> <asp:Button ID="Button2" runat="server" onclick="Button2_Click" Text="清除" /> <br /> <br /> <asp:Literal ID="Literal1" runat="server"></asp:Literal> </div> </form> </body> </html>.aspx.cs
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace GCD { public partial class WebForm1 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void Button2_Click(object sender, EventArgs e) { TextBox1.Text = ""; TextBox2.Text = ""; } protected void Button1_Click(object sender, EventArgs e) { int n = int.Parse(TextBox1.Text); int m = int.Parse(TextBox2.Text); int c = 1; string str = n + " 與 " + m; int nn=n,mm=m; while (c>0) { c = nn % mm; nn = mm; mm = c; } if (nn == 1) { str += "兩數互質!<br>"; } else { str += "最大公因數是 " + nn + "<br>"; } str += "最小公倍數是 " + m * n / nn; Literal1.Text = str; } } }ListPrime-OK
.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="ListPrime.WebForm1" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>印出小於N的質數</title> <style type="text/css"> h1 { text-align:center; } </style> </head> <body> <form id="form1" runat="server"> <div> <h1>印出小於N的質數</h1> <p> </p> <hr /> <p> <asp:Label ID="Label1" runat="server" Text="請輸入N值: "></asp:Label> <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="送出" /> <asp:Button ID="Button2" runat="server" onclick="Button2_Click" Text="清除" /> <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="TextBox1" ErrorMessage="請輸入"> *</asp:RequiredFieldValidator> <asp:RangeValidator ID="RangeValidator1" runat="server" ControlToValidate="TextBox1" ErrorMessage="須輸入大於等於2的正整數" MaximumValue="9999999" MinimumValue="2" Type="Integer">*</asp:RangeValidator> </p> <asp:ValidationSummary ID="ValidationSummary1" runat="server" /> <asp:Literal ID="Literal1" runat="server"></asp:Literal> </div> </form> </body> </html>.aspx.cs
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace ListPrime { public partial class WebForm1 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void Button2_Click(object sender, EventArgs e) { TextBox1.Text = ""; } protected void Button1_Click(object sender, EventArgs e) { int n = int.Parse(TextBox1.Text); int i, j; int count = 0; bool flag; string str = "比" + n + "小的質數是: "; if (n == 2) { Literal1.Text = "沒有比2小的質數。"; } else { for (i = 2; i < n;i++ ) { for (j = 2, flag = true; j * j <= i &&flag; j++) { if (i % j == 0) flag = false; } if (flag==true) { if (count != 0) str += ", "; str += "" + i; count++; } } str += "<br>以上共計 "+ count + " 個質數。"; Literal1.Text = str; } } } }Login-OK
.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="Login.WebForm1" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>模擬登入畫面</title> <style type="text/css"> div { text-align:center; margin: 1em 10%; background-color:Aqua; } </style> </head> <body> <form id="form1" runat="server"> <div> <h1>模擬登入畫面</h1> <hr /> <asp:Label ID="Label1" runat="server" Text="帳號: "></asp:Label> <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="TextBox1" ErrorMessage="請輸入帳號"></asp:RequiredFieldValidator> <br /> <asp:Label ID="Label2" runat="server" Text="密碼: "></asp:Label> <asp:TextBox ID="TextBox2" runat="server" TextMode="Password"></asp:TextBox> <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ControlToValidate="TextBox2" ErrorMessage="請輸入密碼"></asp:RequiredFieldValidator> <br /> <asp:Button ID="Button1" runat="server" Text="登入" onclick="Button1_Click" /> <asp:Button ID="Button2" runat="server" Text="重設" onclick="Button2_Click" /> <br /> <asp:CompareValidator ID="CompareValidator1" runat="server" ControlToCompare="TextBox2" ControlToValidate="TextBox1"></asp:CompareValidator> </div> </form> </body> </html>.aspx.cs
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace Login { public partial class WebForm1 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void Button2_Click(object sender, EventArgs e) { TextBox1.Text = ""; TextBox2.Text = ""; TextBox1.Focus(); } protected void Button1_Click(object sender, EventArgs e) { if (CompareValidator1.IsValid) { Response.Write("<script type='text/javascript'>alert('歡迎光臨');</script>"); Response.Write("<script type='text/javascript'>self.moveTo(0,0);self.resizeTo(screen.availWidth,screen.availHeight);</script>"); Response.Write("<script type='text/javascript'>window.location.replace('http://www.ywdeng.idv.tw')</script>"); } else { Response.Write("<script type='text/javascript'>alert('帳號或密碼錯誤');</script>"); } } } }MagicMatrix-cheat
演算法筆記 參考:http://openhome.cc/Gossip/AlgorithmGossip/OddArray.htm
.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="MagicMatrix.WebForm1" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>九宮格(加強版)</title> <style type="text/css"> .numberTextBox { text-align:center; } </style> </head> <body> <form id="form1" runat="server"> <div align="center"> <h1> 九宮格(加強版)</h1> <asp:Panel ID="Panel1" runat="server" HorizontalAlign="Center"> 請輸入一個大於等於 3 的奇數: <asp:TextBox ID="TextBox1" runat="server" CssClass="numberTextBox" Width="73px" AutoPostBack="True" OnTextChanged="Button1_Click"></asp:TextBox> <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="顯示" /><br /> <asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder> <asp:Label ID="lblSum" runat="server"></asp:Label> </asp:Panel> <asp:Panel ID="panelError" Visible="false" HorizontalAlign="center" runat="server"> <asp:Label ID="lblMsg" runat="server"></asp:Label> <br /> <asp:Button ID="btnReset" runat="server" Text="確定" OnClick="btnReset_Click" /> </asp:Panel> </div> </form> </body> </html>.aspx.cs
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace MagicMatrix { public partial class WebForm1 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { setFocus(); } } private void setFocus() { this.TextBox1.Focus(); ClientScript.RegisterStartupScript(this.GetType(), "selectDefault", "document.getElementById('" + TextBox1.ClientID + "').select();", true); } private int[,] makeMatrix(int n) { int[,] m = new int[n, n]; int total = n * n; int digit = 1; int x, y; for (y = 0; y < n; y++) for (x = 0; x < n; x++) m[y, x] = 0; x = n / 2; y = n - 1; while (digit <= total) { m[y, x] = digit; int nextX = (x + 1) % n; int nextY = (y + 1) % n; if (m[nextY, nextX] != 0) { y = y - 1; } else { x = nextX; y = nextY; } digit++; } return m; } private void showMatrix(int[,] m) { Table t = new Table(); t.HorizontalAlign = HorizontalAlign.Center; t.BorderStyle = BorderStyle.Solid; int sum = 0; for (int i = 0; i < m.GetLength(0); i++) { sum += m[i, 0]; TableRow row = new TableRow(); for (int j = 0; j < m.GetLength(1); j++) { TableCell cell = new TableCell(); cell.Text = m[i, j].ToString(); cell.BorderStyle = BorderStyle.Solid; cell.HorizontalAlign = HorizontalAlign.Center; cell.VerticalAlign = VerticalAlign.Middle; cell.Width = 40; cell.Height = 40; row.Cells.Add(cell); } t.Rows.Add(row); } lblSum.Text = "總和 = " + sum; this.PlaceHolder1.Controls.Clear(); this.PlaceHolder1.Controls.Add(t); } protected void Button1_Click(object sender, EventArgs e) { lblSum.Text = ""; try { int n = Convert.ToInt32(this.TextBox1.Text.Trim()); if (((n & 0x1) == 1) && (n >= 3)) { int[,] matrix = makeMatrix(n); showMatrix(matrix); setFocus(); } else { showError("請輸入一個大於等於 3 的奇數"); } } catch (Exception) { showError("數字格式錯誤!"); } } private void showError(string msg) { lblMsg.Text = msg; this.Panel1.Visible = false; this.panelError.Visible = true; } protected void btnReset_Click(object sender, EventArgs e) { this.panelError.Visible = false; this.Panel1.Visible = true; setFocus(); } } }Notes-cheat
.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="Ex7_2_Notes.WebForm1" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head id="Head1" runat="server"> <title>留言板範例</title> <style> #wrapper { margin: 1em 10%; padding: 1em; background-color: #FFC; text-align: center; } table { margin: 1em auto; text-align: left; } tr { vertical-align: middle; text-align: left; } tr.top { vertical-align: top; } th { text-align: right; } td { text-align: left; } a { text-decoration: none; } a:link { color: #FFC; } a:visited { color: #FFC; } span.redStar { font-weight: bold; color: Red; } </style> <script type="text/javascript"> function ValidateCaptcha(sender, arg) { var captcha1 = document.getElementById("<%= hfCaptcha.ClientID %>"); if (arg.Value == captcha1.value) { arg.IsValid = true; } else { arg.IsValid = false; } } </script> </head> <body> <form id="form1" runat="server"> <div id="wrapper"> <h1> 留言板</h1> <hr /> <asp:Panel ID="panelList" runat="server" HorizontalAlign="Center"> <asp:Button ID="btnPostNote" runat="server" Text="我要留言" OnClick="btnPostNote_Click" /> <asp:Table ID="tblNotes" runat="server"> </asp:Table> </asp:Panel> <asp:Panel ID="panelPost" runat="server" Visible="false" HorizontalAlign="Center"> <table> <tr> <th> <span class="redStar">*</span> 姓名: </th> <td> <asp:TextBox ID="txtName" runat="server"></asp:TextBox> </td> </tr> <tr> <th> <span class="redStar">*</span> 信箱: </th> <td> <asp:TextBox ID="txtEmail" runat="server" Width="350px"></asp:TextBox> </td> </tr> <tr> <th> 網站: </th> <td> <asp:TextBox ID="txtWebSite" runat="server" Width="350px"></asp:TextBox> </td> </tr> <tr valign="middle"> <th> <span class="redStar">*</span>驗證碼: </th> <td> <asp:TextBox ID="txtCaptcha" runat="server"></asp:TextBox> <asp:Image ID="imgCaptcha" runat="server" ImageAlign="Top" ToolTip="請在驗證欄位內輸入圖中的文字" /> <asp:Button ID="btnCaptcha" runat="server" Text="重新產生" ToolTip="重新產生驗證碼" onclick="btnCaptcha_Click" ValidationGroup="vgCaptcha" /> </td> </tr> <tr class="top"> <th> <span class="redStar">*</span> 留言: </th> <td rowspan="2"> <asp:TextBox ID="txtNote" runat="server" Rows="6" TextMode="MultiLine" Width="350px"></asp:TextBox> </td> </tr> <tr class="top"> <th> <asp:Button ID="btnSubmit" runat="server" Text="送出" OnClick="btnSubmit_Click" ValidationGroup="vgMain" /><br /> <asp:Button ID="btnCancel" runat="server" Text="取消" onclick="btnCancel_Click" ValidationGroup="vgCancel" /> </th> </tr> </table> <asp:HiddenField ID="hfCaptcha" runat="server" /> <asp:RequiredFieldValidator runat="server" ID="rfvName" ControlToValidate="txtName" Display="None" ErrorMessage="請輸入姓名" ForeColor="Red" SetFocusOnError="True" ValidationGroup="vgMain"></asp:RequiredFieldValidator> <asp:RequiredFieldValidator runat="server" ID="rfvEmail" ControlToValidate="txtEmail" ErrorMessage="請輸入 Email" ForeColor="Red" SetFocusOnError="True" Display="None" ValidationGroup="vgMain"></asp:RequiredFieldValidator> <asp:RegularExpressionValidator runat="server" ID="revEmail" ErrorMessage="請輸入正確的 Email!" ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*" ControlToValidate="txtEmail" ForeColor="Red" SetFocusOnError="True" Display="None" ValidationGroup="vgMain"></asp:RegularExpressionValidator> <asp:RegularExpressionValidator runat="server" ID="revWebSite" ErrorMessage="請輸入正確的網站 URL!" ValidationExpression="http(s)?://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?" ControlToValidate="txtWebSite" ForeColor="Red" SetFocusOnError="True" Display="None" ValidationGroup="vgMain"></asp:RegularExpressionValidator> <asp:RequiredFieldValidator runat="server" ID="rfvCaptcha" ControlToValidate="txtCaptcha" Display="None" ForeColor="Red" ValidationGroup="vgMain"></asp:RequiredFieldValidator> <asp:CustomValidator ID="cvCaptcha" runat="server" ControlToValidate="txtCaptcha" ClientValidationFunction="ValidateCaptcha" ErrorMessage="驗證碼不正確!" ValidateEmptyText="true" Display="None" ForeColor="Red" ValidationGroup="vgMain"></asp:CustomValidator> <asp:RequiredFieldValidator ID="rfvNote" runat="server" ControlToValidate="txtNote" ErrorMessage="請輸入留言" ForeColor="Red" SetFocusOnError="True" Display="None" ValidationGroup="vgMain"></asp:RequiredFieldValidator> <asp:ValidationSummary ID="ValidationSummary1" runat="server" ShowMessageBox="True" ShowSummary="False" ForeColor="Red" ValidationGroup="vgMain" /> </asp:Panel> </div> </form> </body> </html>.aspx.cs
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Text; using System.Drawing; using System.Drawing.Imaging; using System.Drawing.Text; using System.IO; namespace Ex7_2_Notes { public partial class WebForm1 : System.Web.UI.Page { private static string[] captchaDigits; private static Random random = new Random(); private const int CAPTCHA_LEN = 6; private const int CAPTCHA_WIDTH = 80; private const int CAPTCHA_HEIGHT = 26; private static List<NoteItem> notesList = new List<NoteItem>(); protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { initCaptcha(); } } private void refreshCaptcha() { string captcha = getCaptchaString(CAPTCHA_LEN); hfCaptcha.Value = captcha; string captchaUrl = getCaptchaImage(captcha); if (captchaUrl != null) { imgCaptcha.ImageUrl = captchaUrl; } } private void initCaptcha() { captchaDigits = new string[35]; int i, j; for (i = 1; i < 10; i++) { captchaDigits[i - 1] = i.ToString(); } char c = 'a'; for (j = 1; j <= 26; i++, j++) { captchaDigits[i - 1] = c.ToString(); c++; } } private string getCaptchaString(int len) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < len; i++) { int n = random.Next(captchaDigits.Length); sb.Append(captchaDigits[n]); } return sb.ToString(); } private string getCaptchaImage(string s) { string imageUrl = "~/images/" + s + ".png"; string serverPath = HttpContext.Current.Server.MapPath("~/images"); string imageFileName = serverPath + "/" + s + ".png"; Bitmap bmp = new Bitmap(CAPTCHA_WIDTH, CAPTCHA_HEIGHT, PixelFormat.Format24bppRgb); Graphics g = Graphics.FromImage(bmp); g.TextRenderingHint = TextRenderingHint.AntiAlias; g.Clear(Color.Orange); g.DrawRectangle(Pens.White, 1, 1, CAPTCHA_WIDTH - 3, CAPTCHA_HEIGHT - 3); g.DrawRectangle(Pens.Gray, 2, 2, CAPTCHA_WIDTH - 3, CAPTCHA_HEIGHT - 3); g.DrawRectangle(Pens.Black, 0, 0, CAPTCHA_WIDTH, CAPTCHA_HEIGHT); g.DrawString(s, new Font("Courier New", 12, FontStyle.Bold), SystemBrushes.WindowText, new PointF(4, 4)); // save to file FileStream objFileStream = null; try { objFileStream = new FileStream(imageFileName, FileMode.OpenOrCreate); BinaryWriter objBinaryWriter = new BinaryWriter(objFileStream); bmp.Save(objFileStream, ImageFormat.Png); } catch (Exception ex) { imageUrl = null; } finally { if (objFileStream != null) objFileStream.Close(); g.Dispose(); bmp.Dispose(); } return imageUrl; } protected void btnPostNote_Click(object sender, EventArgs e) { panelList.Visible = false; panelPost.Visible = true; refreshCaptcha(); txtName.Focus(); } protected void btnSubmit_Click(object sender, EventArgs e) { NoteItem item = new NoteItem(txtName.Text.Trim(), txtEmail.Text.Trim().ToLower(), txtWebSite.Text.Trim(), txtNote.Text.Trim()); notesList.Add(item); tblNotes.Rows.Clear(); foreach (NoteItem i in notesList) { tblNotes.Rows.Add(i.ToTableRow()); } panelList.Visible = true; panelPost.Visible = false; } protected void btnCaptcha_Click(object sender, EventArgs e) { refreshCaptcha(); txtCaptcha.Text = ""; txtCaptcha.Focus(); } protected void btnCancel_Click(object sender, EventArgs e) { txtName.Text = ""; txtEmail.Text = ""; txtWebSite.Text = ""; txtCaptcha.Text = ""; txtNote.Text = ""; panelList.Visible = true; panelPost.Visible = false; } } }ShoppingCart-cheat
.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="ShopingCart.WebForm1" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head id="Head1" runat="server"> <title>加入購物車</title> </head> <body> <h1 align="center"> 選購商品加入購物車</h1> <hr /> <form id="form1" runat="server"> <table align="center" border="0"> <tr align="left"> <th> 產品清單 </th> <td> </td> <th> 我的購物車 </th> </tr> <tr align="left"> <td> <asp:ListBox ID="lbProduct" runat="server" Rows="12" SelectionMode="Multiple" DataTextField="ProductName" DataValueField="ProductID" Width="160px" ValidationGroup="product"></asp:ListBox> </td> <td align="center"> <asp:Button ID="btnAddAll" runat="server" Text="全部加入" onclick="btnAddAll_Click" /> <br /><br /> <asp:Button ID="btnAdd" runat="server" Text="加入" OnClick="btnAdd_Click" ValidationGroup="product" /> <br /><br /> <asp:Button ID="btnRemove" runat="server" Text="移除" OnClick="btnRemove_Click" ValidationGroup="cart" /> <br /><br /> <asp:Button ID="btnRemoveAll" runat="server" Text="全部移除" onclick="btnRemoveAll_Click" /> </td> <td> <asp:ListBox ID="lbCart" runat="server" Rows="12" SelectionMode="Multiple" DataTextField="ProductName" DataValueField="ProductID" Width="160px" ValidationGroup="cart"></asp:ListBox> </td> </tr> </table> <asp:RequiredFieldValidator ID="rfvProduct" runat="server" ErrorMessage="請從產品清單之中至少選擇一項產品!" ControlToValidate="lbProduct" Display="None" SetFocusOnError="True" ValidationGroup="product"></asp:RequiredFieldValidator> <asp:RequiredFieldValidator ID="rfvCart" runat="server" ControlToValidate="lbCart" Display="None" ErrorMessage="請從購物車之中至少選擇一項產品!" SetFocusOnError="True" ValidationGroup="cart"></asp:RequiredFieldValidator> <asp:ValidationSummary ID="ValidationSummary1" runat="server" ShowMessageBox="True" ShowSummary="False" ValidationGroup="product" /> <asp:ValidationSummary ID="ValidationSummary2" runat="server" ShowMessageBox="True" ShowSummary="False" ValidationGroup="cart" /> </form> </body> </html>.aspx.cs
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace ShopingCart { public partial class WebForm1 : System.Web.UI.Page { private List<ProductVO> listProd; // 產品清單 private List<ProductVO> listCart; // 購物清單 protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { loadProduct(); } } /// <summary> /// 從資料庫載入產品 /// </summary> private void loadProduct() { ProductDAO dao = new ProductDAO(); listProd = dao.FindAll(); lbProduct.DataSource = listProd; lbProduct.DataBind(); Session["ProductList"] = listProd; listCart = new List<ProductVO>(); Session["ShoppingCart"] = listCart; updateButtonState(); } /// <summary> /// 更新按鈕的狀態 /// </summary> private void updateButtonState() { btnAdd.Enabled = btnAddAll.Enabled = (listProd != null) && (listProd.Count > 0); btnRemove.Enabled = btnRemoveAll.Enabled = (listCart != null) && (listCart.Count > 0); } /// <summary> /// 移動 /// </summary> /// <param name="lbSrc">來源 ListBox</param> /// <param name="listSrc">來源清單</param> /// <param name="lbDst">目的地 ListBox</param> /// <param name="listDst">目的地清單</param> private void moveSelectedItems(ListBox lbSrc, List<ProductVO> listSrc, ListBox lbDst, List<ProductVO> listDst) { List<ProductVO> xList = new List<ProductVO>(); int[] selected = lbSrc.GetSelectedIndices(); for (int i = 0; i < selected.Length; i++) { ProductVO vo = listSrc[selected[i]]; xList.Add(vo); } foreach (ProductVO vo in xList) { listSrc.Remove(vo); listDst.Add(vo); } lbSrc.DataSource = listSrc; lbSrc.DataBind(); lbDst.DataSource = listDst; lbDst.DataBind(); lbDst.ClearSelection(); foreach (ProductVO vo in xList) { for (int i = 0; i < lbDst.Items.Count; i++) { if (lbDst.Items[i].Value.Equals(vo.ProductID)) { lbDst.Items[i].Selected = true; } } } } /// <summary> /// 按下加入按鈕 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void btnAdd_Click(object sender, EventArgs e) { listProd = (List<ProductVO>)Session["ProductList"]; listCart = (List<ProductVO>)Session["ShoppingCart"]; moveSelectedItems(lbProduct, listProd, lbCart, listCart); Session["ProductList"] = listProd; Session["ShoppingCart"] = listCart; updateButtonState(); } /// <summary> /// 按下移除按鈕 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void btnRemove_Click(object sender, EventArgs e) { listProd = (List<ProductVO>)Session["ProductList"]; listCart = (List<ProductVO>)Session["ShoppingCart"]; moveSelectedItems(lbCart, listCart, lbProduct, listProd); Session["ProductList"] = listProd; Session["ShoppingCart"] = listCart; updateButtonState(); } /// <summary> /// 按下全部加入按鈕 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void btnAddAll_Click(object sender, EventArgs e) { for (int i = 0; i < lbProduct.Items.Count; i++) { lbProduct.Items[i].Selected = true; } btnAdd_Click(sender, e); } /// <summary> /// 按下全部移除按鈕 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void btnRemoveAll_Click(object sender, EventArgs e) { for (int i = 0; i < lbCart.Items.Count; i++) { lbCart.Items[i].Selected = true; } btnRemove_Click(sender, e); } } }SqlQuery-cheat
.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="SqlQuery.WebForm1" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head id="Head1" runat="server"> <title>SQL 查詢</title> <style type="text/css"> #wrapper { margin:1em auto; padding:1em; width:900px; background-color:#FFC; text-align:center; } #input { margin: 0 auto; text-align:left; } #buttons, #result { margin: 1em auto;} table { margin: 0 auto; text-align:left; } tr:nth-child(odd) { background-color:#eeedfc; } tr:nth-child(even) { background-color:#eefcee; } tr:first-child { background-color:#e7e7e7; } td, th { margin:4px; padding:4px; } th { text-align:center } </style> </head> <body> <form id="form1" runat="server"> <div id="wrapper"> <h1>SQL 指令練習</h1> <hr /> <div id="input"> <asp:TextBox ID="txtSQL" runat="server" Rows="10" TextMode="MultiLine" Width="100%"></asp:TextBox> </div> <div id="buttons"> <asp:Button ID="btnExecute" runat="server" Text="執行" OnClick="btnExecute_Click" ToolTip="執行 INSERT, UPDATE, DELETE" /> <asp:Button ID="btnQuery" runat="server" Text="查詢" OnClick="btnQuery_Click" ToolTip="執行 SELECT" /> </div> <div id="result"> <asp:PlaceHolder ID="phResult" runat="server"></asp:PlaceHolder> </div> </div> </form> </body> </html>.aspx.cs
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Data; using System.Data.SqlClient; using System.Drawing; namespace SqlQuery { public partial class WebForm1 : System.Web.UI.Page { private const string ConnStrDatabase1 = @"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;User Instance=True"; protected void Page_Load(object sender, EventArgs e) { } /// <summary> /// 顯示錯誤訊息 /// </summary> /// <param name="msg"></param> private void showError(string msg) { phResult.Controls.Clear(); Label b = new Label(); b.Text = msg; b.ForeColor = Color.Red; phResult.Controls.Add(b); } /// <summary> /// 顯示執行結果 /// </summary> /// <param name="msg"></param> private void showResult(string msg) { phResult.Controls.Clear(); Label b = new Label(); b.Text = msg; b.ForeColor = Color.Blue; phResult.Controls.Add(b); } /// <summary> /// 按下『執行』按鈕,執行 INSERT, UPDATE, DELETE /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void btnExecute_Click(object sender, EventArgs e) { string sql = txtSQL.Text.Trim(); try { using (SqlConnection conn = new SqlConnection(ConnStrDatabase1)) { SqlCommand cmd = new SqlCommand(sql, conn); conn.Open(); int n = cmd.ExecuteNonQuery(); showResult("執行結果:" + n); conn.Close(); } } catch (Exception ex) { showError(ex.ToString()); } } /// <summary> /// 按下『查詢』按鈕,執行 SELECT /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void btnQuery_Click(object sender, EventArgs e) { string sql = txtSQL.Text.Trim(); try { using (SqlConnection conn = new SqlConnection(ConnStrDatabase1)) { SqlCommand cmd = new SqlCommand(sql, conn); conn.Open(); SqlDataAdapter ada = new SqlDataAdapter(cmd); DataSet ds = new DataSet(); ada.Fill(ds); phResult.Controls.Clear(); foreach (DataTable table in ds.Tables) { Label space = new Label(); space.Text = "<p> </p>"; phResult.Controls.Add(space); GridView gv = new GridView(); gv.DataSource = table; gv.DataBind(); phResult.Controls.Add(gv); } } } catch (Exception ex) { showError(ex.ToString()); } } } }TicTacToe-cheat
.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="TicTacToe.WebForm1" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>井字遊戲</title> <link href="StyleSheet.css" rel="stylesheet" type="text/css" /> </head> <body> <form id="form1" runat="server"> <asp:Panel ID="panelWrapper" runat="server" HorizontalAlign="center" Visible="true"> <asp:Panel ID="panelRegister" runat="server" HorizontalAlign="center" Visible="true"> <h1>Tic-Tac-Toe</h1> <hr /> <h1>井字遊戲</h1> <asp:Table ID="Table1" runat="server" HorizontalAlign="Center"> <asp:TableRow ID="TableRow1" runat="server" BackColor="Blue"> <asp:TableCell ID="TableCell1" runat="server" ForeColor="White">藍方姓名:</asp:TableCell> <asp:TableCell ID="TableCell2" runat="server"> <asp:TextBox ID="txtBlue" runat="server" ValidationGroup="GameRegister" /> </asp:TableCell> </asp:TableRow> <asp:TableRow ID="TableRow2" runat="server" BackColor="Red"> <asp:TableCell ID="TableCell3" runat="server" ForeColor="White">紅方姓名:</asp:TableCell> <asp:TableCell ID="TableCell4" runat="server"> <asp:TextBox ID="txtRed" runat="server" ValidationGroup="GameRegister" /> </asp:TableCell> </asp:TableRow> <asp:TableRow ID="TableRow3" runat="server"> <asp:TableCell ID="TableCell5" ColumnSpan="2" runat="server"> <asp:Button ID="btnPlay" Text="開始玩" OnClick="btnPlay_Click" runat="server" ValidationGroup="GameRegister" /> <asp:Button ID="btnReset" Text="清除" OnClick="btnPlay_Click" runat="server" /> </asp:TableCell> </asp:TableRow> </asp:Table> <asp:RequiredFieldValidator ID="rfvBlueName" runat="server" ControlToValidate="txtBlue" ErrorMessage="請輸入藍方姓名!" Display="None" SetFocusOnError="true" ValidationGroup="GameRegister" /> <asp:RequiredFieldValidator ID="rfvRedName" runat="server" ControlToValidate="txtRed" ErrorMessage="請輸入紅方姓名!" Display="None" SetFocusOnError="true" ValidationGroup="GameRegister" /> <asp:CompareValidator ID="cvNames" runat="server" ControlToValidate="txtBlue" ControlToCompare="txtRed" Operator="NotEqual" ErrorMessage="藍方姓名與紅方姓名不可相同!" Display="None" SetFocusOnError="True" ValidationGroup="GameRegister" /> <asp:ValidationSummary ID="vsRegister" runat="server" ForeColor="Red" ShowSummary="false" ShowMessageBox="true" ValidationGroup="GameRegister" /> <asp:Label ID="lblMessage" runat="server" ForeColor="red"></asp:Label> </asp:Panel> <asp:Panel ID="panelPlay" runat="server" HorizontalAlign="center" Visible="false"> <p><asp:Label ID="lblPlayRun" runat="server" Font-Size="Larger" Text="第1回合"></asp:Label></p> <asp:Label ID="lblHint" runat="server"></asp:Label> <table class="solidBorder"> <tr> <td><asp:Button ID="btn00" runat="server" OnClick="btn_Click" Width="40px" Height="40px" Font-Bold="True" Font-Size="Larger" CommandArgument="0,0" /></td> <td><asp:Button ID="btn01" runat="server" OnClick="btn_Click" Width="40px" Height="40px" Font-Bold="True" Font-Size="Larger" CommandArgument="0,1" /></td> <td><asp:Button ID="btn02" runat="server" OnClick="btn_Click" Width="40px" Height="40px" Font-Bold="True" Font-Size="Larger" CommandArgument="0,2" /></td> </tr> <tr> <td><asp:Button ID="btn10" runat="server" OnClick="btn_Click" Width="40px" Height="40px" Font-Bold="True" Font-Size="Larger" CommandArgument="1,0" /></td> <td><asp:Button ID="btn11" runat="server" OnClick="btn_Click" Width="40px" Height="40px" Font-Bold="True" Font-Size="Larger" CommandArgument="1,1" /></td> <td><asp:Button ID="btn12" runat="server" OnClick="btn_Click" Width="40px" Height="40px" Font-Bold="True" Font-Size="Larger" CommandArgument="1,2" /></td> </tr> <tr> <td><asp:Button ID="btn20" runat="server" OnClick="btn_Click" Width="40px" Height="40px" Font-Bold="True" Font-Size="Larger" CommandArgument="2,0" /></td> <td><asp:Button ID="btn21" runat="server" OnClick="btn_Click" Width="40px" Height="40px" Font-Bold="True" Font-Size="Larger" CommandArgument="2,1" /></td> <td><asp:Button ID="btn22" runat="server" OnClick="btn_Click" Width="40px" Height="40px" Font-Bold="True" Font-Size="Larger" CommandArgument="2,2" /></td> </tr> </table> <asp:Button ID="btnResult" runat="server" Text="看結果" Visible="false" OnClick="btnResult_Click" /> <br /> <asp:Literal ID="litLog" runat="server"></asp:Literal> </asp:Panel> <asp:Panel ID="panelResult" runat="server" HorizontalAlign="center" Visible="false"> <table> <tr> <td class="textAlignRight">藍方勝: </td> <td><asp:Label ID="lblBlueWins" runat="server"></asp:Label></td> <td> 次 </td> </tr> <tr> <td class="textAlignRight">紅方勝: </td> <td><asp:Label ID="lblRedWins" runat="server"></asp:Label></td> <td> 次 </td> </tr> <tr> <td class="textAlignRight">平手: </td> <td><asp:Label ID="lblDue" runat="server"></asp:Label></td> <td> 次 </td> </tr> </table> <asp:Button ID="btnReplay" runat="server" Text="再玩一次" OnClick="btnReplay_Click" /> <asp:Button ID="btnRestart" runat="server" Text="重新開始" OnClick="btnRestart_Click" /> </asp:Panel> </asp:Panel> </form> </body> </html>.aspx.cs
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Drawing; using System.Text; namespace TicTacToe { public partial class WebForm1 : System.Web.UI.Page { private const int MATRIX_DIM = 3; // 井字棋盤尺寸:3x3 private int turn = 1; // 輪到那一方? 0=藍方; 1=紅方 private int[,] matrix = null; // 井字棋盤 private Button[] buttons = null; // 井字棋盤中的按鈕 private string[] symbol = { "O", "X" }; // 雙方的符號 0=藍方(O); 1=紅方(X) private Color[] color = { Color.Blue, Color.Red }; // 雙方顏色 0=藍方; 1=紅方 private int blueWins = 0; // 藍方贏的累計次數 private int redWins = 0; // 紅方贏的累計次數 private int runCount = 0; // 目前遊戲進行到第幾個回合? private int stepCount = 0; // 本回合遊戲進行到第幾個步驟? private StringBuilder log; // 本回合遊戲歷程紀錄 protected void Page_Load(object sender, EventArgs e) { buttons = new Button[]{btn00,btn01,btn02, btn10,btn11,btn12, btn20,btn21,btn22}; if (!IsPostBack) { resetAll(); } else { restoreFromSession(); } } private void resetAll() { cleanup(); runCount = 0; blueWins = 0; redWins = 0; txtBlue.Text = ""; txtRed.Text = ""; saveToSession(); } private void saveToSession() { Session["matrix"] = matrix; Session["turn"] = turn; Session["stepCount"] = stepCount; Session["runCount"] = runCount; Session["blueWins"] = blueWins; Session["redWins"] = redWins; Session["log"] = log; } private void restoreFromSession() { matrix = (int[,])Session["matrix"]; turn = (int)Session["turn"]; stepCount = (int)Session["stepCount"]; runCount = (int)Session["runCount"]; blueWins = (int)Session["blueWins"]; redWins = (int)Session["redWins"]; log = (StringBuilder)Session["log"]; } private void cleanup() { matrix = new int[MATRIX_DIM, MATRIX_DIM]; for (int i = 0; i < MATRIX_DIM; i++) { for (int j = 0; j < MATRIX_DIM; j++) { matrix[i, j] = -1; } } for (int i = 0; i < buttons.Length; i++) { buttons[i].Text = " "; buttons[i].BackColor = Color.White; buttons[i].Enabled = true; } btnResult.Visible = false; turn = 1; stepCount = 0; log = new StringBuilder(); litLog.Text = ""; } private void disableCells() { for (int i = 0; i < buttons.Length; i++) buttons[i].Enabled = false; } private void takeTurn() { stepCount++; turn = 1 - turn; if (turn == 0) { lblHint.Text = "輪到藍方(" + txtBlue.Text + ")"; lblHint.ForeColor = Color.Blue; } else { lblHint.Text = "輪到紅方(" + txtRed.Text + ")"; lblHint.ForeColor = Color.Red; } } protected void btnPlay_Click(object sender, EventArgs e) { if (sender == btnPlay) { if (txtBlue.Text.Trim().Length < 1) { lblMessage.Text = "請輸入藍方姓名!"; } else if (txtRed.Text.Trim().Length < 1) { lblMessage.Text = "請輸入紅方姓名!"; } else { panelRegister.Visible = false; panelPlay.Visible = true; takeTurn(); runCount = 1; lblPlayRun.Text = "第 " + runCount + " 回合"; } } else if (sender == btnReset) { resetAll(); } saveToSession(); } private int analysis() { for (int i = 0; i < 3; i++) { if ((matrix[i, 0] >= 0) && (matrix[i, 0] == matrix[i, 1]) && (matrix[i, 1] == matrix[i, 2])) { return matrix[i, 0]; } } for (int i = 0; i < 3; i++) { if ((matrix[0, i] >= 0) && (matrix[0, i] == matrix[1, i]) && (matrix[1, i] == matrix[2, i])) { return matrix[0, i]; } } if ((matrix[0, 0] >= 0) && (matrix[0, 0] == matrix[1, 1]) && (matrix[1, 1] == matrix[2, 2])) { return matrix[0, 0]; } if ((matrix[0, 2] >= 0) && (matrix[0, 2] == matrix[1, 1]) && (matrix[1, 1] == matrix[2, 0])) { return matrix[0, 2]; } return -1; } private void judge() { int n = analysis(); if (n >= 0) { if (n == 0) { lblHint.Text = "藍方勝!"; lblHint.ForeColor = Color.Blue; blueWins++; } else { lblHint.Text = "紅方勝!"; lblHint.ForeColor = Color.Red; redWins++; } btnResult.Visible = true; disableCells(); } else if (stepCount == 9) { lblHint.Text = "雙方平手!"; btnResult.Visible = true; disableCells(); } else { takeTurn(); btnResult.Visible = false; } } private void logStep(int row, int col, Button btn) { log.Append("<br />步驟 " + stepCount + ":" + row + "," + col + "," + (turn == 0 ? "藍" : "紅") + "," + symbol[turn]); litLog.Text = log.ToString(); matrix[row, col] = turn; btn.Enabled = false; btn.Text = symbol[matrix[row, col]]; btn.BackColor = color[matrix[row, col]]; judge(); } protected void btn_Click(object sender, EventArgs e) { Button btn = sender as Button; if (btn == null) return; char[] sep = { ',' }; string[] tokens = btn.CommandArgument.Split(sep); int row = int.Parse(tokens[0]); int col = int.Parse(tokens[1]); logStep(row, col, btn); saveToSession(); } protected void btnResult_Click(object sender, EventArgs e) { panelPlay.Visible = false; panelResult.Visible = true; lblBlueWins.Text = blueWins.ToString(); lblRedWins.Text = redWins.ToString(); int due = runCount - (blueWins + redWins); lblDue.Text = due.ToString(); } protected void btnReplay_Click(object sender, EventArgs e) { panelResult.Visible = false; panelPlay.Visible = true; cleanup(); takeTurn(); runCount++; lblPlayRun.Text = "第 " + runCount + " 回合"; saveToSession(); } protected void btnRestart_Click(object sender, EventArgs e) { panelResult.Visible = false; panelRegister.Visible = true; resetAll(); saveToSession(); } } }UnitConvert-OKhtml
.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="UnitConvert.WebForm1" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>單位轉換</title> <style type="text/css"> div { text-align:center; } </style> </head> <body> <form id="form1" runat="server"> <div> <img src="tiger.jpg" alt="" align="right"/> <h1>單位轉換</h1> <h5 style="color:Red">(小數點第2 位以下四捨五入)</h5> <hr /> <asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True"> <asp:ListItem Value="0">攝氏溫度轉華氏溫度</asp:ListItem> <asp:ListItem Value="1">華氏溫度攝氏溫度</asp:ListItem> </asp:DropDownList> <br /> <asp:Label ID="lb1" runat="server" Text="攝氏溫度"></asp:Label> <asp:TextBox ID="tb1" runat="server"></asp:TextBox> <asp:Label ID="lb2" runat="server" Text="→ 華氏溫度"></asp:Label> <asp:TextBox ID="tb2" runat="server" ReadOnly="True"></asp:TextBox> <br /> <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="tb1" ErrorMessage="RequiredFieldValidator">請輸入</asp:RequiredFieldValidator> <br /> <asp:RangeValidator ID="RangeValidator1" runat="server" ControlToValidate="tb1" ErrorMessage="RangeValidator" Type="Double">請輸入數字</asp:RangeValidator> <br /> <asp:Button ID="Button1" runat="server" Text="轉換" onclick="Button1_Click" /> <br /> <span style="color:Green"> <asp:Literal ID="Literal1" runat="server"></asp:Literal> </span> </div> </form> </body> </html>.aspx.cs
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace UnitConvert { public partial class WebForm1 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { string type = DropDownList1.SelectedValue; tb1.Text = ""; tb2.Text = ""; if (type == "0") { lb1.Text = "攝氏溫度"; lb2.Text = "→ 華氏溫度"; Literal1.Text = "華氏溫度 = 攝氏溫度 * 9 / 5 + 32"; } else { lb1.Text = "華氏溫度"; lb2.Text = "→ 攝氏溫度"; Literal1.Text = "攝氏溫度 = (華氏溫度 - 32 ) * 5 / 9"; } } protected void Button1_Click(object sender, EventArgs e) { double temp = double.Parse(tb1.Text); string type = DropDownList1.SelectedValue; if (type == "0") { tb2.Text = "" + Math.Round(temp * 9 / 5 + 32, 2); } else { tb2.Text = "" + Math.Round((temp - 32) * 5 / 9, 2); } } } }