diff --git a/LottoPicker/LottoPicker/App.config b/LottoPicker/LottoPicker/App.config
index 8e15646..4bfa005 100644
--- a/LottoPicker/LottoPicker/App.config
+++ b/LottoPicker/LottoPicker/App.config
@@ -1,6 +1,6 @@
-
+
-
+
-
\ No newline at end of file
+
diff --git a/LottoPicker/LottoPicker/CustomControl/BallSelectControl.cs b/LottoPicker/LottoPicker/CustomControl/BallSelectControl.cs
index 59a47c3..9015d68 100644
--- a/LottoPicker/LottoPicker/CustomControl/BallSelectControl.cs
+++ b/LottoPicker/LottoPicker/CustomControl/BallSelectControl.cs
@@ -34,5 +34,22 @@ namespace LottoPicker.CustomControl
ctrBall.Visible = true;
}
+
+ public int Pick(List alreadySelected)
+ {
+ int index = cboType.SelectedIndex;
+ ctrBall.BallColor = Utils.Palettes[index];
+
+ int num = Utils.GetNumber(index);
+ while (alreadySelected.Contains(num))
+ {
+ num = Utils.GetNumber(index);
+ }
+
+ ctrBall.BallNumber = num.ToString();
+ ctrBall.Visible = true;
+
+ return num;
+ }
}
}
diff --git a/LottoPicker/LottoPicker/Dialog/HistoryDialog.Designer.cs b/LottoPicker/LottoPicker/Dialog/HistoryDialog.Designer.cs
new file mode 100644
index 0000000..a6dca52
--- /dev/null
+++ b/LottoPicker/LottoPicker/Dialog/HistoryDialog.Designer.cs
@@ -0,0 +1,163 @@
+namespace LottoPicker.Dialog
+{
+ partial class HistoryDialog
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(HistoryDialog));
+ this.txtStartNum = new System.Windows.Forms.TextBox();
+ this.txtEndNum = new System.Windows.Forms.TextBox();
+ this.btnStart = new System.Windows.Forms.Button();
+ this.label1 = new System.Windows.Forms.Label();
+ this.label2 = new System.Windows.Forms.Label();
+ this.txtResult = new System.Windows.Forms.TextBox();
+ this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
+ this.panel1 = new System.Windows.Forms.Panel();
+ this.tableLayoutPanel1.SuspendLayout();
+ this.panel1.SuspendLayout();
+ this.SuspendLayout();
+ //
+ // txtStartNum
+ //
+ this.txtStartNum.Location = new System.Drawing.Point(60, 19);
+ this.txtStartNum.Name = "txtStartNum";
+ this.txtStartNum.Size = new System.Drawing.Size(100, 23);
+ this.txtStartNum.TabIndex = 0;
+ this.txtStartNum.Text = "1";
+ this.txtStartNum.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
+ //
+ // txtEndNum
+ //
+ this.txtEndNum.Location = new System.Drawing.Point(212, 19);
+ this.txtEndNum.Name = "txtEndNum";
+ this.txtEndNum.Size = new System.Drawing.Size(100, 23);
+ this.txtEndNum.TabIndex = 0;
+ this.txtEndNum.Text = "20";
+ this.txtEndNum.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
+ //
+ // btnStart
+ //
+ this.btnStart.Location = new System.Drawing.Point(336, 19);
+ this.btnStart.Name = "btnStart";
+ this.btnStart.Size = new System.Drawing.Size(75, 23);
+ this.btnStart.TabIndex = 1;
+ this.btnStart.Text = "Start";
+ this.btnStart.UseVisualStyleBackColor = true;
+ this.btnStart.Click += new System.EventHandler(this.btnStart_Click);
+ //
+ // label1
+ //
+ this.label1.AutoSize = true;
+ this.label1.Location = new System.Drawing.Point(11, 23);
+ this.label1.Name = "label1";
+ this.label1.Size = new System.Drawing.Size(38, 15);
+ this.label1.TabIndex = 2;
+ this.label1.Text = "회차: ";
+ //
+ // label2
+ //
+ this.label2.AutoSize = true;
+ this.label2.Location = new System.Drawing.Point(178, 23);
+ this.label2.Name = "label2";
+ this.label2.Size = new System.Drawing.Size(15, 15);
+ this.label2.TabIndex = 2;
+ this.label2.Text = "~";
+ //
+ // txtResult
+ //
+ this.txtResult.BackColor = System.Drawing.Color.White;
+ this.txtResult.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.txtResult.Location = new System.Drawing.Point(3, 73);
+ this.txtResult.Multiline = true;
+ this.txtResult.Name = "txtResult";
+ this.txtResult.ReadOnly = true;
+ this.txtResult.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
+ this.txtResult.Size = new System.Drawing.Size(419, 317);
+ this.txtResult.TabIndex = 3;
+ //
+ // tableLayoutPanel1
+ //
+ this.tableLayoutPanel1.ColumnCount = 1;
+ this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
+ this.tableLayoutPanel1.Controls.Add(this.panel1, 0, 0);
+ this.tableLayoutPanel1.Controls.Add(this.txtResult, 0, 1);
+ this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0);
+ this.tableLayoutPanel1.Name = "tableLayoutPanel1";
+ this.tableLayoutPanel1.RowCount = 2;
+ this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 70F));
+ this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
+ this.tableLayoutPanel1.Size = new System.Drawing.Size(425, 393);
+ this.tableLayoutPanel1.TabIndex = 4;
+ //
+ // panel1
+ //
+ this.panel1.Controls.Add(this.label1);
+ this.panel1.Controls.Add(this.txtStartNum);
+ this.panel1.Controls.Add(this.label2);
+ this.panel1.Controls.Add(this.txtEndNum);
+ this.panel1.Controls.Add(this.btnStart);
+ this.panel1.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.panel1.Location = new System.Drawing.Point(3, 3);
+ this.panel1.Name = "panel1";
+ this.panel1.Size = new System.Drawing.Size(419, 64);
+ this.panel1.TabIndex = 0;
+ //
+ // HistoryDialog
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.BackColor = System.Drawing.Color.White;
+ this.ClientSize = new System.Drawing.Size(425, 393);
+ this.Controls.Add(this.tableLayoutPanel1);
+ this.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
+ this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
+ this.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
+ this.MaximumSize = new System.Drawing.Size(443, 1500);
+ this.MinimumSize = new System.Drawing.Size(443, 350);
+ this.Name = "HistoryDialog";
+ this.Text = "History";
+ this.tableLayoutPanel1.ResumeLayout(false);
+ this.tableLayoutPanel1.PerformLayout();
+ this.panel1.ResumeLayout(false);
+ this.panel1.PerformLayout();
+ this.ResumeLayout(false);
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.TextBox txtStartNum;
+ private System.Windows.Forms.TextBox txtEndNum;
+ private System.Windows.Forms.Button btnStart;
+ private System.Windows.Forms.Label label1;
+ private System.Windows.Forms.Label label2;
+ private System.Windows.Forms.TextBox txtResult;
+ private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
+ private System.Windows.Forms.Panel panel1;
+ }
+}
\ No newline at end of file
diff --git a/LottoPicker/LottoPicker/Dialog/HistoryDialog.cs b/LottoPicker/LottoPicker/Dialog/HistoryDialog.cs
new file mode 100644
index 0000000..181139b
--- /dev/null
+++ b/LottoPicker/LottoPicker/Dialog/HistoryDialog.cs
@@ -0,0 +1,80 @@
+using LottoPicker.Utility;
+using Newtonsoft.Json.Linq;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace LottoPicker.Dialog
+{
+ public partial class HistoryDialog : Form
+ {
+ public HistoryDialog()
+ {
+ InitializeComponent();
+ }
+
+ private void btnStart_Click(object sender, EventArgs e)
+ {
+ int start = int.Parse(txtStartNum.Text);
+ int end = int.Parse(txtEndNum.Text);
+ if (start > end)
+ {
+ int tmp = start;
+ start = end;
+ end = tmp;
+ }
+
+ List history = new List(6 * (end - start + 1));
+ for (int i = start; i <= end; i++)
+ {
+ history.AddRange(GetHistory(i));
+ }
+
+ history.Sort();
+ Dictionary historyCount = new Dictionary();
+ for (int i = 0; i < history.Count; i++)
+ {
+ string key = history[i].ToString();
+ if (!historyCount.ContainsKey(key))
+ historyCount.Add(key, 0);
+
+ historyCount[key]++;
+ }
+
+ PrintHistory(historyCount);
+ }
+
+ private List GetHistory(int round)
+ {
+ List result = new List(6);
+ string url = $"http://www.dhlottery.co.kr/common.do?method=getLottoNumber&drwNo={round.ToString()}";
+ JObject response = WebAPIUtil.CallRequest(url);
+ result.Add(int.Parse(response["drwtNo1"].ToString()));
+ result.Add(int.Parse(response["drwtNo2"].ToString()));
+ result.Add(int.Parse(response["drwtNo3"].ToString()));
+ result.Add(int.Parse(response["drwtNo4"].ToString()));
+ result.Add(int.Parse(response["drwtNo5"].ToString()));
+ result.Add(int.Parse(response["drwtNo6"].ToString()));
+
+ return result;
+ }
+
+ private void PrintHistory(Dictionary history)
+ {
+ StringBuilder stringBuilder = new StringBuilder();
+ foreach (KeyValuePair pair in history)
+ {
+ string append = $"[{pair.Key}공] → {pair.Value}회";
+ stringBuilder.AppendLine(append);
+ }
+
+ txtResult.AppendText(stringBuilder.ToString());
+ }
+ }
+}
diff --git a/LottoPicker/LottoPicker/Dialog/HistoryDialog.resx b/LottoPicker/LottoPicker/Dialog/HistoryDialog.resx
new file mode 100644
index 0000000..868bc17
--- /dev/null
+++ b/LottoPicker/LottoPicker/Dialog/HistoryDialog.resx
@@ -0,0 +1,406 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+
+
+ 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
+ iv8P78wCc+AH79MAAAAASUVORK5CYII=
+
+
+
\ No newline at end of file
diff --git a/LottoPicker/LottoPicker/LottoPicker.csproj b/LottoPicker/LottoPicker/LottoPicker.csproj
index df3bd2b..41646e5 100644
--- a/LottoPicker/LottoPicker/LottoPicker.csproj
+++ b/LottoPicker/LottoPicker/LottoPicker.csproj
@@ -8,9 +8,10 @@
WinExe
LottoPicker
LottoPicker
- v4.5
+ v4.8
512
true
+
AnyCPU
@@ -35,6 +36,9 @@
lotto.ico
+
+ ..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll
+
@@ -60,6 +64,12 @@
BallSelectControl.cs
+
+ Form
+
+
+ HistoryDialog.cs
+
Form
@@ -69,12 +79,16 @@
+
BallControl.cs
BallSelectControl.cs
+
+ HistoryDialog.cs
+
MainForm.cs
@@ -86,7 +100,9 @@
True
Resources.resx
+ True
+
SettingsSingleFileGenerator
Settings.Designer.cs
diff --git a/LottoPicker/LottoPicker/MainForm.Designer.cs b/LottoPicker/LottoPicker/MainForm.Designer.cs
index 1eb22be..fd978a6 100644
--- a/LottoPicker/LottoPicker/MainForm.Designer.cs
+++ b/LottoPicker/LottoPicker/MainForm.Designer.cs
@@ -29,94 +29,45 @@
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm));
+ this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
+ this.btnGenerate = new System.Windows.Forms.Button();
+ this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel();
+ this.tableLayoutPanel3 = new System.Windows.Forms.TableLayoutPanel();
+ this.btnHistory = new System.Windows.Forms.Button();
this.ballSelectControl1 = new LottoPicker.CustomControl.BallSelectControl();
+ this.ballSelectControl6 = new LottoPicker.CustomControl.BallSelectControl();
this.ballSelectControl2 = new LottoPicker.CustomControl.BallSelectControl();
+ this.ballSelectControl5 = new LottoPicker.CustomControl.BallSelectControl();
this.ballSelectControl3 = new LottoPicker.CustomControl.BallSelectControl();
this.ballSelectControl4 = new LottoPicker.CustomControl.BallSelectControl();
- this.ballSelectControl5 = new LottoPicker.CustomControl.BallSelectControl();
- this.ballSelectControl6 = new LottoPicker.CustomControl.BallSelectControl();
- this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
- this.btnGenerate = new System.Windows.Forms.Button();
- this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel();
this.tableLayoutPanel1.SuspendLayout();
this.tableLayoutPanel2.SuspendLayout();
+ this.tableLayoutPanel3.SuspendLayout();
this.SuspendLayout();
//
- // ballSelectControl1
- //
- this.ballSelectControl1.BackColor = System.Drawing.Color.White;
- this.ballSelectControl1.Dock = System.Windows.Forms.DockStyle.Fill;
- this.ballSelectControl1.Location = new System.Drawing.Point(4, 4);
- this.ballSelectControl1.Name = "ballSelectControl1";
- this.ballSelectControl1.Size = new System.Drawing.Size(217, 269);
- this.ballSelectControl1.TabIndex = 0;
- //
- // ballSelectControl2
- //
- this.ballSelectControl2.BackColor = System.Drawing.Color.White;
- this.ballSelectControl2.Dock = System.Windows.Forms.DockStyle.Fill;
- this.ballSelectControl2.Location = new System.Drawing.Point(228, 4);
- this.ballSelectControl2.Name = "ballSelectControl2";
- this.ballSelectControl2.Size = new System.Drawing.Size(217, 269);
- this.ballSelectControl2.TabIndex = 1;
- //
- // ballSelectControl3
- //
- this.ballSelectControl3.BackColor = System.Drawing.Color.White;
- this.ballSelectControl3.Dock = System.Windows.Forms.DockStyle.Fill;
- this.ballSelectControl3.Location = new System.Drawing.Point(452, 4);
- this.ballSelectControl3.Name = "ballSelectControl3";
- this.ballSelectControl3.Size = new System.Drawing.Size(217, 269);
- this.ballSelectControl3.TabIndex = 2;
- //
- // ballSelectControl4
- //
- this.ballSelectControl4.BackColor = System.Drawing.Color.White;
- this.ballSelectControl4.Dock = System.Windows.Forms.DockStyle.Fill;
- this.ballSelectControl4.Location = new System.Drawing.Point(676, 4);
- this.ballSelectControl4.Name = "ballSelectControl4";
- this.ballSelectControl4.Size = new System.Drawing.Size(217, 269);
- this.ballSelectControl4.TabIndex = 3;
- //
- // ballSelectControl5
- //
- this.ballSelectControl5.BackColor = System.Drawing.Color.White;
- this.ballSelectControl5.Dock = System.Windows.Forms.DockStyle.Fill;
- this.ballSelectControl5.Location = new System.Drawing.Point(900, 4);
- this.ballSelectControl5.Name = "ballSelectControl5";
- this.ballSelectControl5.Size = new System.Drawing.Size(217, 269);
- this.ballSelectControl5.TabIndex = 4;
- //
- // ballSelectControl6
- //
- this.ballSelectControl6.BackColor = System.Drawing.Color.White;
- this.ballSelectControl6.Dock = System.Windows.Forms.DockStyle.Fill;
- this.ballSelectControl6.Location = new System.Drawing.Point(1124, 4);
- this.ballSelectControl6.Name = "ballSelectControl6";
- this.ballSelectControl6.Size = new System.Drawing.Size(223, 269);
- this.ballSelectControl6.TabIndex = 5;
- //
// tableLayoutPanel1
//
this.tableLayoutPanel1.ColumnCount = 1;
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
- this.tableLayoutPanel1.Controls.Add(this.btnGenerate, 0, 1);
- this.tableLayoutPanel1.Controls.Add(this.tableLayoutPanel2, 0, 0);
+ this.tableLayoutPanel1.Controls.Add(this.btnGenerate, 0, 2);
+ this.tableLayoutPanel1.Controls.Add(this.tableLayoutPanel2, 0, 1);
+ this.tableLayoutPanel1.Controls.Add(this.tableLayoutPanel3, 0, 0);
this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0);
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
- this.tableLayoutPanel1.RowCount = 2;
+ this.tableLayoutPanel1.RowCount = 3;
+ this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 40F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 60F));
- this.tableLayoutPanel1.Size = new System.Drawing.Size(1357, 343);
+ this.tableLayoutPanel1.Size = new System.Drawing.Size(1343, 307);
this.tableLayoutPanel1.TabIndex = 3;
//
// btnGenerate
//
this.btnGenerate.Dock = System.Windows.Forms.DockStyle.Fill;
- this.btnGenerate.Location = new System.Drawing.Point(3, 286);
+ this.btnGenerate.Location = new System.Drawing.Point(3, 250);
this.btnGenerate.Name = "btnGenerate";
- this.btnGenerate.Size = new System.Drawing.Size(1351, 54);
+ this.btnGenerate.Size = new System.Drawing.Size(1337, 54);
this.btnGenerate.TabIndex = 3;
this.btnGenerate.Text = "Generate";
this.btnGenerate.UseVisualStyleBackColor = true;
@@ -139,19 +90,98 @@
this.tableLayoutPanel2.Controls.Add(this.ballSelectControl3, 2, 0);
this.tableLayoutPanel2.Controls.Add(this.ballSelectControl4, 3, 0);
this.tableLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Fill;
- this.tableLayoutPanel2.Location = new System.Drawing.Point(3, 3);
+ this.tableLayoutPanel2.Location = new System.Drawing.Point(3, 43);
this.tableLayoutPanel2.Name = "tableLayoutPanel2";
this.tableLayoutPanel2.RowCount = 1;
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
- this.tableLayoutPanel2.Size = new System.Drawing.Size(1351, 277);
+ this.tableLayoutPanel2.Size = new System.Drawing.Size(1337, 201);
this.tableLayoutPanel2.TabIndex = 2;
//
+ // tableLayoutPanel3
+ //
+ this.tableLayoutPanel3.ColumnCount = 2;
+ this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 150F));
+ this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
+ this.tableLayoutPanel3.Controls.Add(this.btnHistory, 0, 0);
+ this.tableLayoutPanel3.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.tableLayoutPanel3.Location = new System.Drawing.Point(3, 3);
+ this.tableLayoutPanel3.Name = "tableLayoutPanel3";
+ this.tableLayoutPanel3.RowCount = 1;
+ this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
+ this.tableLayoutPanel3.Size = new System.Drawing.Size(1337, 34);
+ this.tableLayoutPanel3.TabIndex = 4;
+ //
+ // btnHistory
+ //
+ this.btnHistory.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.btnHistory.Location = new System.Drawing.Point(3, 3);
+ this.btnHistory.Name = "btnHistory";
+ this.btnHistory.Size = new System.Drawing.Size(144, 28);
+ this.btnHistory.TabIndex = 0;
+ this.btnHistory.Text = "History";
+ this.btnHistory.UseVisualStyleBackColor = true;
+ this.btnHistory.Click += new System.EventHandler(this.btnHistory_Click);
+ //
+ // ballSelectControl1
+ //
+ this.ballSelectControl1.BackColor = System.Drawing.Color.White;
+ this.ballSelectControl1.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.ballSelectControl1.Location = new System.Drawing.Point(4, 4);
+ this.ballSelectControl1.Name = "ballSelectControl1";
+ this.ballSelectControl1.Size = new System.Drawing.Size(215, 193);
+ this.ballSelectControl1.TabIndex = 0;
+ //
+ // ballSelectControl6
+ //
+ this.ballSelectControl6.BackColor = System.Drawing.Color.White;
+ this.ballSelectControl6.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.ballSelectControl6.Location = new System.Drawing.Point(1114, 4);
+ this.ballSelectControl6.Name = "ballSelectControl6";
+ this.ballSelectControl6.Size = new System.Drawing.Size(219, 193);
+ this.ballSelectControl6.TabIndex = 5;
+ //
+ // ballSelectControl2
+ //
+ this.ballSelectControl2.BackColor = System.Drawing.Color.White;
+ this.ballSelectControl2.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.ballSelectControl2.Location = new System.Drawing.Point(226, 4);
+ this.ballSelectControl2.Name = "ballSelectControl2";
+ this.ballSelectControl2.Size = new System.Drawing.Size(215, 193);
+ this.ballSelectControl2.TabIndex = 1;
+ //
+ // ballSelectControl5
+ //
+ this.ballSelectControl5.BackColor = System.Drawing.Color.White;
+ this.ballSelectControl5.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.ballSelectControl5.Location = new System.Drawing.Point(892, 4);
+ this.ballSelectControl5.Name = "ballSelectControl5";
+ this.ballSelectControl5.Size = new System.Drawing.Size(215, 193);
+ this.ballSelectControl5.TabIndex = 4;
+ //
+ // ballSelectControl3
+ //
+ this.ballSelectControl3.BackColor = System.Drawing.Color.White;
+ this.ballSelectControl3.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.ballSelectControl3.Location = new System.Drawing.Point(448, 4);
+ this.ballSelectControl3.Name = "ballSelectControl3";
+ this.ballSelectControl3.Size = new System.Drawing.Size(215, 193);
+ this.ballSelectControl3.TabIndex = 2;
+ //
+ // ballSelectControl4
+ //
+ this.ballSelectControl4.BackColor = System.Drawing.Color.White;
+ this.ballSelectControl4.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.ballSelectControl4.Location = new System.Drawing.Point(670, 4);
+ this.ballSelectControl4.Name = "ballSelectControl4";
+ this.ballSelectControl4.Size = new System.Drawing.Size(215, 193);
+ this.ballSelectControl4.TabIndex = 3;
+ //
// MainForm
//
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
this.BackColor = System.Drawing.Color.White;
- this.ClientSize = new System.Drawing.Size(1357, 343);
+ this.ClientSize = new System.Drawing.Size(1343, 307);
this.Controls.Add(this.tableLayoutPanel1);
this.Font = new System.Drawing.Font("맑은 고딕", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
@@ -164,6 +194,7 @@
this.Text = "Lotto Picker";
this.tableLayoutPanel1.ResumeLayout(false);
this.tableLayoutPanel2.ResumeLayout(false);
+ this.tableLayoutPanel3.ResumeLayout(false);
this.ResumeLayout(false);
}
@@ -178,6 +209,8 @@
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2;
private System.Windows.Forms.Button btnGenerate;
+ private System.Windows.Forms.TableLayoutPanel tableLayoutPanel3;
+ private System.Windows.Forms.Button btnHistory;
}
}
diff --git a/LottoPicker/LottoPicker/MainForm.cs b/LottoPicker/LottoPicker/MainForm.cs
index d840a67..0d730d9 100644
--- a/LottoPicker/LottoPicker/MainForm.cs
+++ b/LottoPicker/LottoPicker/MainForm.cs
@@ -1,4 +1,7 @@
-using System;
+using LottoPicker.Dialog;
+using LottoPicker.Utility;
+using Newtonsoft.Json.Linq;
+using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
@@ -20,12 +23,19 @@ namespace LottoPicker
private void btnGenerate_Click(object sender, EventArgs e)
{
- ballSelectControl1.Pick();
- ballSelectControl2.Pick();
- ballSelectControl3.Pick();
- ballSelectControl4.Pick();
- ballSelectControl5.Pick();
- ballSelectControl6.Pick();
+ List selected = new List(6);
+ selected.Add(ballSelectControl1.Pick(selected));
+ selected.Add(ballSelectControl2.Pick(selected));
+ selected.Add(ballSelectControl3.Pick(selected));
+ selected.Add(ballSelectControl4.Pick(selected));
+ selected.Add(ballSelectControl5.Pick(selected));
+ selected.Add(ballSelectControl6.Pick(selected));
+ }
+
+ private void btnHistory_Click(object sender, EventArgs e)
+ {
+ HistoryDialog dlg = new HistoryDialog();
+ dlg.ShowDialog();
}
}
}
diff --git a/LottoPicker/LottoPicker/Properties/Resources.Designer.cs b/LottoPicker/LottoPicker/Properties/Resources.Designer.cs
index bd107fa..32a729f 100644
--- a/LottoPicker/LottoPicker/Properties/Resources.Designer.cs
+++ b/LottoPicker/LottoPicker/Properties/Resources.Designer.cs
@@ -8,62 +8,54 @@
//
//------------------------------------------------------------------------------
-namespace LottoPicker.Properties
-{
-
-
+namespace LottoPicker.Properties {
+ using System;
+
+
///
/// 지역화된 문자열 등을 찾기 위한 강력한 형식의 리소스 클래스입니다.
///
// 이 클래스는 ResGen 또는 Visual Studio와 같은 도구를 통해 StronglyTypedResourceBuilder
// 클래스에서 자동으로 생성되었습니다.
- // 멤버를 추가하거나 제거하려면 .ResX 파일을 편집한 다음 /str 옵션을 사용하여
- // ResGen을 다시 실행하거나 VS 프로젝트를 다시 빌드하십시오.
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+ // 멤버를 추가하거나 제거하려면 .ResX 파일을 편집한 다음 /str 옵션을 사용하여 ResGen을
+ // 다시 실행하거나 VS 프로젝트를 다시 빌드하십시오.
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
- internal class Resources
- {
-
+ internal class Resources {
+
private static global::System.Resources.ResourceManager resourceMan;
-
+
private static global::System.Globalization.CultureInfo resourceCulture;
-
+
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- internal Resources()
- {
+ internal Resources() {
}
-
+
///
/// 이 클래스에서 사용하는 캐시된 ResourceManager 인스턴스를 반환합니다.
///
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- internal static global::System.Resources.ResourceManager ResourceManager
- {
- get
- {
- if ((resourceMan == null))
- {
+ internal static global::System.Resources.ResourceManager ResourceManager {
+ get {
+ if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("LottoPicker.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
-
+
///
/// 이 강력한 형식의 리소스 클래스를 사용하여 모든 리소스 조회에 대해 현재 스레드의 CurrentUICulture 속성을
/// 재정의합니다.
///
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- internal static global::System.Globalization.CultureInfo Culture
- {
- get
- {
+ internal static global::System.Globalization.CultureInfo Culture {
+ get {
return resourceCulture;
}
- set
- {
+ set {
resourceCulture = value;
}
}
diff --git a/LottoPicker/LottoPicker/Properties/Settings.Designer.cs b/LottoPicker/LottoPicker/Properties/Settings.Designer.cs
index 1f2491a..8ba43de 100644
--- a/LottoPicker/LottoPicker/Properties/Settings.Designer.cs
+++ b/LottoPicker/LottoPicker/Properties/Settings.Designer.cs
@@ -1,28 +1,24 @@
//------------------------------------------------------------------------------
//
-// This code was generated by a tool.
-// Runtime Version:4.0.30319.42000
+// 이 코드는 도구를 사용하여 생성되었습니다.
+// 런타임 버전:4.0.30319.42000
//
-// Changes to this file may cause incorrect behavior and will be lost if
-// the code is regenerated.
+// 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면
+// 이러한 변경 내용이 손실됩니다.
//
//------------------------------------------------------------------------------
-namespace LottoPicker.Properties
-{
-
-
+namespace LottoPicker.Properties {
+
+
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
- internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
- {
-
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.5.0.0")]
+ internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
+
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
-
- public static Settings Default
- {
- get
- {
+
+ public static Settings Default {
+ get {
return defaultInstance;
}
}
diff --git a/LottoPicker/LottoPicker/Utility/WebAPIUtil.cs b/LottoPicker/LottoPicker/Utility/WebAPIUtil.cs
new file mode 100644
index 0000000..50c4833
--- /dev/null
+++ b/LottoPicker/LottoPicker/Utility/WebAPIUtil.cs
@@ -0,0 +1,42 @@
+using Newtonsoft.Json.Linq;
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Net;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace LottoPicker.Utility
+{
+ internal class WebAPIUtil
+ {
+ public static JObject CallRequest(string url)
+ {
+ JObject obj;
+
+ try
+ {
+ WebRequest request = WebRequest.Create(url);
+ request.Method = "GET";
+ request.ContentType = "application/json";
+ //request.Headers["user-agent"] = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)";
+ using (WebResponse response = request.GetResponse())
+ using (Stream dataStream = response.GetResponseStream())
+ using (StreamReader reader = new StreamReader(dataStream))
+ {
+ string reponse = reader.ReadToEnd();
+ obj = JObject.Parse(reponse);
+ }
+
+
+ }
+ catch (Exception ex)
+ {
+ throw;
+ }
+
+ return obj;
+ }
+ }
+}
diff --git a/LottoPicker/LottoPicker/packages.config b/LottoPicker/LottoPicker/packages.config
new file mode 100644
index 0000000..0b14af3
--- /dev/null
+++ b/LottoPicker/LottoPicker/packages.config
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file