using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.Drawing; using System.Globalization; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using WindowsFormsCore.Domain; using WindowsFormsCore.Operations; namespace WindowsFormsCore { public enum LNum { x1 = 1, x2 = 2, x3 = 3, x4 = 4, x5 = 5, x6 = 6, x7 = 7, x8 = 8, x9 = 9, x10 = 10, x11 = 11, x12 = 12, x13 = 13, x14 = 14, x15 = 15, x16 = 16, x17 = 17, x18 = 18, x19 = 19, x20 = 20, x21 = 21, x22 = 22, x23 = 23, x24 = 24, x25 = 25, x26 = 26, x27 = 27, x28 = 28, x29 = 29, x30 = 30, x31 = 31, x32 = 32, x33 = 33, x34 = 34, x35 = 35 } public partial class frmLottoView : Form { Random rnd = new CryptoRandom(DateTime.Now.DayOfYear); private Lotto lotto; private List clicked; private bool clearing; private TextBox[] txtBGrp1 = new TextBox[7]; private TextBox[] txtBGrp2 = new TextBox[7]; public frmLottoView() { InitializeComponent(); lotto = new Lotto(rnd); ClearChks(); for (int i = 0; i < txtBGrp1.Count(); i++) { txtBGrp1[i] = (TextBox)this.Controls["txtNr" + (i + 1).ToString()]; txtBGrp2[i] = (TextBox)this.Controls["txtNr2" + (i + 1).ToString()]; } RefreshListView(); LoadListFromDB(); } private void btnGenerate_Click(object sender, EventArgs e) { var ansver = lotto.RandomRad(); for (int i = 0; i < txtBGrp1.Count(); i++) { txtBGrp1[i].Text = ansver[i]; } } private void ClearInFields(TextBox[] zz) { foreach(var tx in zz) { tx.Text = ""; } } private string randomNum() { return Enum.GetName(typeof(LNum), rnd.Next((int)LNum.x1, (int)LNum.x35)); } private void btnGenMotNr_Click(object sender, EventArgs e) { lblIndicator.BackColor = SystemColors.Control; lblIndicator.Text = " "; List jmfList = new List(); for (int i = 0; i < txtBGrp1.Count(); i++) { txtBGrp2[i].Text = string.IsNullOrEmpty(txtNr1.Text) ? "" : lotto.AntiCircularValue(int.Parse(txtBGrp1[i].Text)).ToString(); jmfList.Add(txtBGrp2[i].Text); } jmfList.Sort(); var prev = string.Empty; foreach (var str in jmfList) { if (str == prev) { lblIndicator.BackColor = Color.Red; lblIndicator.Text = str; break; } prev = str; } } private void btnTest_Click(object sender, EventArgs e) { LoadListFromDB(); //var tstIn = decimal.Parse(txtTestIn.Text); //txtTestOut.Text = $"number for angle {tstIn} = {lotto.GetNumberByAngle(tstIn)}"; } private void chk_CheckedChanged(object sender, EventArgs e) { if (!clearing) { var clickTxt = ((CheckBox)sender).Text; if (clicked.Any(c => c == clickTxt)) { clicked.Remove(clickTxt); clicked.ToList().ForEach(x => Debug.Write($"{x},")); Debug.WriteLine(""); } else { clicked.Add(clickTxt); } if (clicked.Count() > 6) { for (int i = 0; i < 7; i++) { txtBGrp1[i].Text = clicked[i]; } ClearChks(); } } } private void ClearChks() { clearing = true; foreach (var chk in gpbInmata.Controls) { if (chk.GetType() == typeof(CheckBox)) { ((CheckBox)chk).Checked = false; } } clicked = new List(); clearing = false; } private void btnClear_Click(object sender, EventArgs e) { ClearChks(); gpbInmata.Refresh(); } private void Text_TextChanged(object sender, EventArgs e) { var n = 0; var nochange = false; if (!int.TryParse(((TextBox)sender).Text, out n)) { if (nochange) { nochange = false; return; } var lngd = ((TextBox)sender).Text.Length; if (lngd > 1) { var repl = ((TextBox)sender).Text.Substring(0, lngd - 1); ((TextBox)sender).Text = repl; ((TextBox)sender).SelectionStart = lngd-1; ((TextBox)sender).SelectionLength = 0; } else ((TextBox)sender).Text = string.Empty; nochange = true; } } private void Text_TextChanged(object sender, KeyEventArgs e) { var n = 0; if (!int.TryParse(((TextBox)sender).Text, out n)) { var lngd = ((TextBox)sender).Text.Length; ((TextBox)sender).Text = ((TextBox)sender).Text.Substring(0, lngd - 1); } } private void AddNumbersToList(TextBox[] txtBox) { RefreshListView(); if (txtBox.Any(tx => tx.Text.Length == 0)) { return; } if (SaveGeneratedRow(txtBox)) { AddOneRowToListView(txtBox); } else { MessageBox.Show("Rad existerar redan", "Saving Lottorow", MessageBoxButtons.OK); } } private void LoadListFromDB() { var rows = DBRepo.ReadAllNumberRow(); if (rows.Any()) { lvRows.Items.Clear(); } foreach(var row in rows) { var txtBxArr = new [] { row.Number0.ToString(), row.Number1.ToString(), row.Number2.ToString(), row.Number3.ToString(), row.Number4.ToString(), row.Number5.ToString(), row.Number6.ToString() }; AddOneRowToListView(txtBxArr); } } private void AddOneRowToListView(string[] txtBoxArr) { ListViewItem lvRow = new ListViewItem(txtBoxArr[0]); for (int i = 1; i < txtBoxArr.Length; i++) { lvRow.SubItems.Add(txtBoxArr[i]); } lvRows.Items.Add(lvRow); } private void AddOneRowToListView(TextBox[] txtBoxArr) { ListViewItem lvRow = new ListViewItem(txtBoxArr[0].Text); for (int i = 1; i < txtBoxArr.Length; i++) { lvRow.SubItems.Add(txtBoxArr[i].Text); } lvRows.Items.Add(lvRow); } private void RefreshListView() { var colWidth = lvRows.Width / 7.5; for (int i = 0; i < lvRows.Columns.Count; i++) { lvRows.Columns[i].Width = (int)Math.Round(colWidth); } lvRows.Refresh(); } private bool SaveGeneratedRow(TextBox[] rowTab) { var row = new NumberRow(); row.Number0 = byte.Parse(rowTab[0].Text); row.Number1 = byte.Parse(rowTab[1].Text); row.Number2 = byte.Parse(rowTab[2].Text); row.Number3 = byte.Parse(rowTab[3].Text); row.Number4 = byte.Parse(rowTab[4].Text); row.Number5 = byte.Parse(rowTab[5].Text); row.Number6 = byte.Parse(rowTab[6].Text); return DBRepo.SaveNumberRow(row); } private void btnDwn_Click(object sender, EventArgs e) { AddNumbersToList(txtBGrp1); ClearInFields(txtBGrp1); } private void btnDown2_Click(object sender, EventArgs e) { AddNumbersToList(txtBGrp2); ClearInFields(txtBGrp2); } private void btnlose_Click(object sender, EventArgs e) { this.Close(); } private void lvRows_DrawColumnHeader(object sender, DrawListViewColumnHeaderEventArgs e) { using (var sf = new StringFormat()) { sf.Alignment = StringAlignment.Center; using (var headerFont = new Font("Microsoft Sans Serif", 9, FontStyle.Bold)) { e.Graphics.FillRectangle(Brushes.AliceBlue, e.Bounds); e.Graphics.DrawString(e.Header.Text, headerFont, Brushes.Black, e.Bounds, sf); } } } } }