From 0eb6a7a733a6152c457d391e9e71a80c485eaf97 Mon Sep 17 00:00:00 2001 From: Paul Williams Date: Sat, 1 Apr 2023 11:11:49 -0400 Subject: [PATCH] New Version (1.1.1) - Fixes #30. Added support for new TCG+ CSV file format (deck recipe links and SMS Auth columns). - Changed Version Number on Splash Screen to read the one in the assembly info instead of hard-coding it - Prevents any member with number 0000000986 from being added to the master list of players. - Rearranged Player Name and Member Name fields so that the player name is first. - Fixed Team ID# and made it not editable. (Had no effect on the save file.) - Fixed #29 : "DELETE" button to instead change a pre-registered player status to "Absent on Day of Event", will still prompt an information screen. Additionally, the Tournament List will now always refresh after hitting the DELETE button. - Resolves #31: Program will now reuse the last used directory by saving it into the registry. - Resolves #28: Extraneous penalty removed. --- TCG+ Registration Helper/App.config | 3 + TCG+ Registration Helper/File Handling.vb | 16 +- .../My Project/AssemblyInfo.vb | 4 +- .../My Project/Resources.Designer.vb | 20 + .../My Project/Resources.resx | 20 +- .../My Project/Settings.Designer.vb | 14 +- .../My Project/Settings.settings | 3 + TCG+ Registration Helper/PlayerInfo.vb | 4 +- .../Registration - Individual.Designer.vb | 342 ++++++++++-------- .../Registration - Individual.resx | 109 +++++- .../Registration - Individual.vb | 208 ++++++++--- .../Resources/green-check-mark.png | Bin 0 -> 19072 bytes .../Resources/red-cross-mark.png | Bin 0 -> 113952 bytes .../Splash Screen.Designer.vb | 20 +- TCG+ Registration Helper/Splash Screen.vb | 3 + TCG+ Registration Helper/StatusDictionary.vb | 24 +- .../TCG+ Registration Helper.vbproj | 3 + .../Tournament - Penalty Detail.vb | 8 + .../Tournament - Penalty Form.Designer.vb | 98 ++--- .../Tournament - Penalty Form.vb | 4 +- .../frmMainMenu.Designer.vb | 16 +- TCG+ Registration Helper/frmMainMenu.vb | 12 +- 22 files changed, 637 insertions(+), 294 deletions(-) create mode 100644 TCG+ Registration Helper/Resources/green-check-mark.png create mode 100644 TCG+ Registration Helper/Resources/red-cross-mark.png diff --git a/TCG+ Registration Helper/App.config b/TCG+ Registration Helper/App.config index 2de7fe0..12cc24e 100644 --- a/TCG+ Registration Helper/App.config +++ b/TCG+ Registration Helper/App.config @@ -13,6 +13,9 @@ True + + + \ No newline at end of file diff --git a/TCG+ Registration Helper/File Handling.vb b/TCG+ Registration Helper/File Handling.vb index 50d8e42..39b2c9c 100644 --- a/TCG+ Registration Helper/File Handling.vb +++ b/TCG+ Registration Helper/File Handling.vb @@ -25,7 +25,8 @@ .MembershipNumber = player.Descendants("MemberNumber").Value, .FirstName = player.Descendants("PlayerFirstName").Value, .LastName = player.Descendants("PlayerLastName").Value, - .SeatOrder = player.Descendants("SeatOrder").Value} + .SeatOrder = player.Descendants("SeatOrder").Value, + .DeckRecipe = player.Descendants("DeckRecipe").Value} tpPlayer.FormatNumber() Select Case tpPlayer.SeatOrder @@ -186,11 +187,13 @@ .PlayerA = New PlayerInfo With { .MembershipNumber = currentRow(5), .MembershipName = currentRow(6), - .SeatOrder = currentRow(7) + .SeatOrder = currentRow(7), + .DeckRecipe = currentRow(9) }, .PlayerB = New PlayerInfo, .PlayerC = New PlayerInfo, - .Memo = currentRow(8)}) + .Memo = currentRow(8), + .SMSAuth = currentRow(10)}) End Select End If @@ -212,7 +215,10 @@ Dim target As XElement = xdoc.Descendants("Player").FirstOrDefault(Function(x) x.Element("MembershipNo").Value = strMemberID) - If strMemberID <> "GUEST99999" And Not String.IsNullOrWhiteSpace(strMemberID) Then + ' 0000000986 is an INVALID Member ID. Some TCG+ created files contain this number. + ' This number SHOULD NOT BE ALLOWED to be saved as a regular player. (It will causes an error message when imported.) + + If (strMemberID <> "GUEST99999" And strMemberID <> "0000000986") And Not String.IsNullOrWhiteSpace(strMemberID) Then If IsNothing(target) Then ' This should mean we have a NEW element. Dim newPlayer As XElement = New XElement("Player") @@ -243,7 +249,7 @@ Dim target As XElement = xdoc.Descendants("Player").FirstOrDefault(Function(x) x.Element("MembershipNo").Value = strMemberID) - If strMemberID <> "GUEST99999" And Not String.IsNullOrWhiteSpace(strMemberID) Then + If (strMemberID <> "GUEST99999" And strMemberID <> "0000000986") And Not String.IsNullOrWhiteSpace(strMemberID) Then If IsNothing(target) Then ' This should mean we have a NEW element. Dim newPlayer As XElement = New XElement("Player") diff --git a/TCG+ Registration Helper/My Project/AssemblyInfo.vb b/TCG+ Registration Helper/My Project/AssemblyInfo.vb index 9325c47..488bae7 100644 --- a/TCG+ Registration Helper/My Project/AssemblyInfo.vb +++ b/TCG+ Registration Helper/My Project/AssemblyInfo.vb @@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices ' by using the '*' as shown below: ' - - + + diff --git a/TCG+ Registration Helper/My Project/Resources.Designer.vb b/TCG+ Registration Helper/My Project/Resources.Designer.vb index 12a7b85..67f3ee8 100644 --- a/TCG+ Registration Helper/My Project/Resources.Designer.vb +++ b/TCG+ Registration Helper/My Project/Resources.Designer.vb @@ -59,5 +59,25 @@ Namespace My.Resources resourceCulture = value End Set End Property + + ''' + ''' Looks up a localized resource of type System.Drawing.Bitmap. + ''' + Friend ReadOnly Property green_check_mark() As System.Drawing.Bitmap + Get + Dim obj As Object = ResourceManager.GetObject("green_check_mark", resourceCulture) + Return CType(obj,System.Drawing.Bitmap) + End Get + End Property + + ''' + ''' Looks up a localized resource of type System.Drawing.Bitmap. + ''' + Friend ReadOnly Property red_cross_mark() As System.Drawing.Bitmap + Get + Dim obj As Object = ResourceManager.GetObject("red_cross_mark", resourceCulture) + Return CType(obj,System.Drawing.Bitmap) + End Get + End Property End Module End Namespace diff --git a/TCG+ Registration Helper/My Project/Resources.resx b/TCG+ Registration Helper/My Project/Resources.resx index af7dbeb..e651e5f 100644 --- a/TCG+ Registration Helper/My Project/Resources.resx +++ b/TCG+ Registration Helper/My Project/Resources.resx @@ -46,7 +46,7 @@ mimetype: application/x-microsoft.net.object.binary.base64 value : The object must be serialized with - : System.Serialization.Formatters.Binary.BinaryFormatter + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter : and then encoded with base64 encoding. mimetype: application/x-microsoft.net.object.soap.base64 @@ -60,6 +60,7 @@ : and then encoded with base64 encoding. --> + @@ -68,9 +69,10 @@ - + + @@ -85,9 +87,10 @@ - + + @@ -109,9 +112,16 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ..\Resources\green-check-mark.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\red-cross-mark.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + \ No newline at end of file diff --git a/TCG+ Registration Helper/My Project/Settings.Designer.vb b/TCG+ Registration Helper/My Project/Settings.Designer.vb index 9a48315..09cc68a 100644 --- a/TCG+ Registration Helper/My Project/Settings.Designer.vb +++ b/TCG+ Registration Helper/My Project/Settings.Designer.vb @@ -15,7 +15,7 @@ Option Explicit On Namespace My _ Partial Friend NotInheritable Class MySettings Inherits Global.System.Configuration.ApplicationSettingsBase @@ -65,6 +65,18 @@ Namespace My Me("PlayerNameFull") = value End Set End Property + + _ + Public Property LastUsedDirectory() As String + Get + Return CType(Me("LastUsedDirectory"),String) + End Get + Set + Me("LastUsedDirectory") = value + End Set + End Property End Class End Namespace diff --git a/TCG+ Registration Helper/My Project/Settings.settings b/TCG+ Registration Helper/My Project/Settings.settings index 0cbc3d3..ae83d0c 100644 --- a/TCG+ Registration Helper/My Project/Settings.settings +++ b/TCG+ Registration Helper/My Project/Settings.settings @@ -5,5 +5,8 @@ True + + + \ No newline at end of file diff --git a/TCG+ Registration Helper/PlayerInfo.vb b/TCG+ Registration Helper/PlayerInfo.vb index a441b2a..81c78d8 100644 --- a/TCG+ Registration Helper/PlayerInfo.vb +++ b/TCG+ Registration Helper/PlayerInfo.vb @@ -4,6 +4,7 @@ Public Property MembershipNumber As String Public Property MembershipName As String = "" Public Property SeatOrder As String = "A" + Public Property DeckRecipe As String = "" Public Property SearchHelper As String Get @@ -88,7 +89,7 @@ Public Class TournamentPlayer Public Property Status As Integer = 0 Public Property ByeRounds As Integer #If DEBUG Then - Public Property TeamID As Integer = 0 + Public Property TeamID As Integer = 10 #Else Public Property TeamID As Integer = 0 #End If @@ -101,6 +102,7 @@ Public Class TournamentTeam : Inherits TournamentPlayer Public PlayerA As PlayerInfo Public PlayerB As PlayerInfo Public PlayerC As PlayerInfo + Public SMSAuth As String = "" ' Okay, I need to check each member of this team to make sure that the number checked, isn't already in a team. diff --git a/TCG+ Registration Helper/Registration - Individual.Designer.vb b/TCG+ Registration Helper/Registration - Individual.Designer.vb index 72b485d..3165aaa 100644 --- a/TCG+ Registration Helper/Registration - Individual.Designer.vb +++ b/TCG+ Registration Helper/Registration - Individual.Designer.vb @@ -23,12 +23,12 @@ Partial Class frmIndividual Private Sub InitializeComponent() Me.components = New System.ComponentModel.Container() - Dim DataGridViewCellStyle13 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle() - Dim DataGridViewCellStyle14 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle() - Dim DataGridViewCellStyle15 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle() - Dim DataGridViewCellStyle16 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle() - Dim DataGridViewCellStyle17 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle() - Dim DataGridViewCellStyle18 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle() + Dim DataGridViewCellStyle1 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle() + Dim DataGridViewCellStyle2 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle() + Dim DataGridViewCellStyle3 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle() + Dim DataGridViewCellStyle4 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle() + Dim DataGridViewCellStyle5 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle() + Dim DataGridViewCellStyle6 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle() Me.GroupBox1 = New System.Windows.Forms.GroupBox() Me.btnClear = New System.Windows.Forms.Button() Me.btnAddPlayer = New System.Windows.Forms.Button() @@ -59,14 +59,6 @@ Partial Class frmIndividual Me.ChangePlayerDetails0ToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.DeletePlayerToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.dgvPlayers = New System.Windows.Forms.DataGridView() - Me.dgcListIndex = New System.Windows.Forms.DataGridViewTextBoxColumn() - Me.dgcSelect = New System.Windows.Forms.DataGridViewCheckBoxColumn() - Me.dgcIndex = New System.Windows.Forms.DataGridViewTextBoxColumn() - Me.dgcTeamId = New System.Windows.Forms.DataGridViewTextBoxColumn() - Me.dgcMembershipNo = New System.Windows.Forms.DataGridViewTextBoxColumn() - Me.dgcNickname = New System.Windows.Forms.DataGridViewTextBoxColumn() - Me.dgcByesCount = New System.Windows.Forms.DataGridViewTextBoxColumn() - Me.dgcStatus = New System.Windows.Forms.DataGridViewTextBoxColumn() Me.cbSelectAll = New System.Windows.Forms.CheckBox() Me.ToolTip1 = New System.Windows.Forms.ToolTip(Me.components) Me.Panel3 = New System.Windows.Forms.Panel() @@ -88,12 +80,14 @@ Partial Class frmIndividual Me.CommaSeparatedValuesFilecsvToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.TournamentXMLxmlToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripMenuItem1 = New System.Windows.Forms.ToolStripMenuItem() - Me.ToolStripMenuItem2 = New System.Windows.Forms.ToolStripMenuItem() - Me.ToolStripMenuItem3 = New System.Windows.Forms.ToolStripMenuItem() + Me.CommaSeparatedValuesFilecsvToolStripMenuItem1 = New System.Windows.Forms.ToolStripMenuItem() + Me.TournamentXMLxmlToolStripMenuItem1 = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripSeparator1 = New System.Windows.Forms.ToolStripSeparator() Me.TournamentToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.PenaltiesToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.StaffJudgesToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() + Me.ToolStripSeparator2 = New System.Windows.Forms.ToolStripSeparator() + Me.FullNameEntryToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.SaveFileDialogCSV = New System.Windows.Forms.SaveFileDialog() Me.SaveFileDialogXML = New System.Windows.Forms.SaveFileDialog() Me.AddFromCSVToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() @@ -117,8 +111,17 @@ Partial Class frmIndividual Me.AdvanceElectedToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.ParticipatingInTournamentToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.DroppedToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() - Me.ToolStripSeparator2 = New System.Windows.Forms.ToolStripSeparator() - Me.FullNameEntryToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() + Me.dgcListIndex = New System.Windows.Forms.DataGridViewTextBoxColumn() + Me.dgcSelect = New System.Windows.Forms.DataGridViewCheckBoxColumn() + Me.dgcIndex = New System.Windows.Forms.DataGridViewTextBoxColumn() + Me.dgcTeamId = New System.Windows.Forms.DataGridViewTextBoxColumn() + Me.dgcMembershipNo = New System.Windows.Forms.DataGridViewTextBoxColumn() + Me.dgcNickname = New System.Windows.Forms.DataGridViewTextBoxColumn() + Me.dgcStatus = New System.Windows.Forms.DataGridViewTextBoxColumn() + Me.ToolStripSeparator4 = New System.Windows.Forms.ToolStripSeparator() + Me.tsmiPlayerName = New System.Windows.Forms.ToolStripMenuItem() + Me.AddPlayerToTournamentToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() + Me.WaitingListShufflerToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.GroupBox1.SuspendLayout() Me.Panel1.SuspendLayout() Me.GroupBox2.SuspendLayout() @@ -162,16 +165,16 @@ Partial Class frmIndividual Me.btnClear.Location = New System.Drawing.Point(397, 21) Me.btnClear.Name = "btnClear" Me.btnClear.Size = New System.Drawing.Size(92, 29) - Me.btnClear.TabIndex = 7 + Me.btnClear.TabIndex = 2 Me.btnClear.Text = "Clear" Me.btnClear.UseVisualStyleBackColor = True ' 'btnAddPlayer ' - Me.btnAddPlayer.Location = New System.Drawing.Point(165, 241) + Me.btnAddPlayer.Location = New System.Drawing.Point(165, 238) Me.btnAddPlayer.Name = "btnAddPlayer" Me.btnAddPlayer.Size = New System.Drawing.Size(159, 29) - Me.btnAddPlayer.TabIndex = 6 + Me.btnAddPlayer.TabIndex = 13 Me.btnAddPlayer.Text = "Add Player to Tournament" Me.btnAddPlayer.UseVisualStyleBackColor = True ' @@ -180,31 +183,31 @@ Partial Class frmIndividual Me.cboStatus.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList Me.cboStatus.Font = New System.Drawing.Font("Segoe UI", 11.0!) Me.cboStatus.FormattingEnabled = True - Me.cboStatus.Location = New System.Drawing.Point(213, 207) + Me.cboStatus.Location = New System.Drawing.Point(213, 204) Me.cboStatus.Name = "cboStatus" Me.cboStatus.Size = New System.Drawing.Size(276, 28) - Me.cboStatus.TabIndex = 5 + Me.cboStatus.TabIndex = 12 ' 'Label6 ' Me.Label6.AutoSize = True Me.Label6.Font = New System.Drawing.Font("Segoe UI", 10.0!) Me.Label6.ForeColor = System.Drawing.SystemColors.ControlText - Me.Label6.Location = New System.Drawing.Point(20, 212) + Me.Label6.Location = New System.Drawing.Point(20, 209) Me.Label6.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0) Me.Label6.Name = "Label6" Me.Label6.Size = New System.Drawing.Size(47, 19) - Me.Label6.TabIndex = 13 + Me.Label6.TabIndex = 11 Me.Label6.Text = "Status" ' 'Panel1 ' Me.Panel1.Controls.Add(Me.rbByes_1) Me.Panel1.Controls.Add(Me.rbByes_0) - Me.Panel1.Location = New System.Drawing.Point(213, 172) + Me.Panel1.Location = New System.Drawing.Point(213, 169) Me.Panel1.Name = "Panel1" Me.Panel1.Size = New System.Drawing.Size(276, 29) - Me.Panel1.TabIndex = 4 + Me.Panel1.TabIndex = 10 ' 'rbByes_1 ' @@ -233,11 +236,11 @@ Partial Class frmIndividual Me.Label5.AutoSize = True Me.Label5.Font = New System.Drawing.Font("Segoe UI", 10.0!) Me.Label5.ForeColor = System.Drawing.SystemColors.ControlText - Me.Label5.Location = New System.Drawing.Point(20, 177) + Me.Label5.Location = New System.Drawing.Point(20, 174) Me.Label5.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0) Me.Label5.Name = "Label5" Me.Label5.Size = New System.Drawing.Size(96, 19) - Me.Label5.TabIndex = 12 + Me.Label5.TabIndex = 9 Me.Label5.Text = "Assigned Byes" ' 'Label4 @@ -245,63 +248,63 @@ Partial Class frmIndividual Me.Label4.AutoSize = True Me.Label4.Font = New System.Drawing.Font("Segoe UI", 10.0!) Me.Label4.ForeColor = System.Drawing.SystemColors.ControlText - Me.Label4.Location = New System.Drawing.Point(20, 141) + Me.Label4.Location = New System.Drawing.Point(18, 62) Me.Label4.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0) Me.Label4.Name = "Label4" Me.Label4.Size = New System.Drawing.Size(148, 19) - Me.Label4.TabIndex = 11 + Me.Label4.TabIndex = 3 Me.Label4.Text = "Player Member Name*" ' 'txtPlayerNickname ' Me.txtPlayerNickname.Font = New System.Drawing.Font("Microsoft Sans Serif", 14.0!) - Me.txtPlayerNickname.Location = New System.Drawing.Point(213, 136) + Me.txtPlayerNickname.Location = New System.Drawing.Point(211, 57) Me.txtPlayerNickname.Margin = New System.Windows.Forms.Padding(4) Me.txtPlayerNickname.Name = "txtPlayerNickname" Me.txtPlayerNickname.Size = New System.Drawing.Size(276, 29) - Me.txtPlayerNickname.TabIndex = 3 + Me.txtPlayerNickname.TabIndex = 4 ' 'Label3 ' Me.Label3.AutoSize = True Me.Label3.Font = New System.Drawing.Font("Segoe UI", 10.0!) Me.Label3.ForeColor = System.Drawing.SystemColors.ControlText - Me.Label3.Location = New System.Drawing.Point(20, 104) + Me.Label3.Location = New System.Drawing.Point(20, 138) Me.Label3.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0) Me.Label3.Name = "Label3" Me.Label3.Size = New System.Drawing.Size(115, 19) - Me.Label3.TabIndex = 10 + Me.Label3.TabIndex = 7 Me.Label3.Text = "Player Last Name" ' 'txtPlayerLastName ' Me.txtPlayerLastName.Font = New System.Drawing.Font("Microsoft Sans Serif", 14.0!) - Me.txtPlayerLastName.Location = New System.Drawing.Point(213, 99) + Me.txtPlayerLastName.Location = New System.Drawing.Point(213, 133) Me.txtPlayerLastName.Margin = New System.Windows.Forms.Padding(4) Me.txtPlayerLastName.Name = "txtPlayerLastName" Me.txtPlayerLastName.Size = New System.Drawing.Size(276, 29) - Me.txtPlayerLastName.TabIndex = 2 + Me.txtPlayerLastName.TabIndex = 8 ' 'Label2 ' Me.Label2.AutoSize = True Me.Label2.Font = New System.Drawing.Font("Segoe UI", 10.0!) Me.Label2.ForeColor = System.Drawing.SystemColors.ControlText - Me.Label2.Location = New System.Drawing.Point(20, 65) + Me.Label2.Location = New System.Drawing.Point(20, 99) Me.Label2.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0) Me.Label2.Name = "Label2" Me.Label2.Size = New System.Drawing.Size(116, 19) - Me.Label2.TabIndex = 9 + Me.Label2.TabIndex = 5 Me.Label2.Text = "Player First Name" ' 'txtPlayerFirstName ' Me.txtPlayerFirstName.Font = New System.Drawing.Font("Microsoft Sans Serif", 14.0!) - Me.txtPlayerFirstName.Location = New System.Drawing.Point(213, 60) + Me.txtPlayerFirstName.Location = New System.Drawing.Point(213, 94) Me.txtPlayerFirstName.Margin = New System.Windows.Forms.Padding(4) Me.txtPlayerFirstName.Name = "txtPlayerFirstName" Me.txtPlayerFirstName.Size = New System.Drawing.Size(276, 29) - Me.txtPlayerFirstName.TabIndex = 1 + Me.txtPlayerFirstName.TabIndex = 6 ' 'Label1 ' @@ -312,7 +315,7 @@ Partial Class frmIndividual Me.Label1.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0) Me.Label1.Name = "Label1" Me.Label1.Size = New System.Drawing.Size(185, 19) - Me.Label1.TabIndex = 8 + Me.Label1.TabIndex = 0 Me.Label1.Text = "TCG+ Membership Number*" ' 'txtMemberNo @@ -323,7 +326,7 @@ Partial Class frmIndividual Me.txtMemberNo.MaxLength = 10 Me.txtMemberNo.Name = "txtMemberNo" Me.txtMemberNo.Size = New System.Drawing.Size(177, 29) - Me.txtMemberNo.TabIndex = 0 + Me.txtMemberNo.TabIndex = 1 Me.txtMemberNo.TextAlign = System.Windows.Forms.HorizontalAlignment.Center ' 'GroupBox2 @@ -455,99 +458,29 @@ Partial Class frmIndividual Or System.Windows.Forms.AnchorStyles.Left) _ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) Me.dgvPlayers.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill - Me.dgvPlayers.AutoSizeRowsMode = System.Windows.Forms.DataGridViewAutoSizeRowsMode.AllCells Me.dgvPlayers.ClipboardCopyMode = System.Windows.Forms.DataGridViewClipboardCopyMode.Disable - DataGridViewCellStyle13.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft - DataGridViewCellStyle13.BackColor = System.Drawing.SystemColors.Control - DataGridViewCellStyle13.Font = New System.Drawing.Font("Segoe UI", 9.0!) - DataGridViewCellStyle13.ForeColor = System.Drawing.SystemColors.WindowText - DataGridViewCellStyle13.SelectionBackColor = System.Drawing.SystemColors.Control - DataGridViewCellStyle13.SelectionForeColor = System.Drawing.SystemColors.WindowText - DataGridViewCellStyle13.WrapMode = System.Windows.Forms.DataGridViewTriState.[True] - Me.dgvPlayers.ColumnHeadersDefaultCellStyle = DataGridViewCellStyle13 - Me.dgvPlayers.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize - Me.dgvPlayers.Columns.AddRange(New System.Windows.Forms.DataGridViewColumn() {Me.dgcListIndex, Me.dgcSelect, Me.dgcIndex, Me.dgcTeamId, Me.dgcMembershipNo, Me.dgcNickname, Me.dgcByesCount, Me.dgcStatus}) + DataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft + DataGridViewCellStyle1.BackColor = System.Drawing.SystemColors.Control + DataGridViewCellStyle1.Font = New System.Drawing.Font("Segoe UI", 9.0!) + DataGridViewCellStyle1.ForeColor = System.Drawing.SystemColors.WindowText + DataGridViewCellStyle1.SelectionBackColor = System.Drawing.SystemColors.Control + DataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.WindowText + DataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.[True] + Me.dgvPlayers.ColumnHeadersDefaultCellStyle = DataGridViewCellStyle1 + Me.dgvPlayers.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.DisableResizing + Me.dgvPlayers.Columns.AddRange(New System.Windows.Forms.DataGridViewColumn() {Me.dgcListIndex, Me.dgcSelect, Me.dgcIndex, Me.dgcTeamId, Me.dgcMembershipNo, Me.dgcNickname, Me.dgcStatus}) Me.dgvPlayers.EditMode = System.Windows.Forms.DataGridViewEditMode.EditOnKeystroke Me.dgvPlayers.EnableHeadersVisualStyles = False Me.dgvPlayers.Location = New System.Drawing.Point(516, 37) Me.dgvPlayers.MultiSelect = False Me.dgvPlayers.Name = "dgvPlayers" Me.dgvPlayers.RowHeadersVisible = False - Me.dgvPlayers.RowTemplate.Height = 90 + Me.dgvPlayers.RowTemplate.Height = 44 Me.dgvPlayers.ScrollBars = System.Windows.Forms.ScrollBars.Vertical Me.dgvPlayers.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect Me.dgvPlayers.Size = New System.Drawing.Size(731, 539) Me.dgvPlayers.TabIndex = 3 ' - 'dgcListIndex - ' - Me.dgcListIndex.HeaderText = "lstPlayerID" - Me.dgcListIndex.Name = "dgcListIndex" - Me.dgcListIndex.ReadOnly = True - Me.dgcListIndex.Visible = False - ' - 'dgcSelect - ' - Me.dgcSelect.FalseValue = "0" - Me.dgcSelect.FillWeight = 25.0! - Me.dgcSelect.HeaderText = "" - Me.dgcSelect.Name = "dgcSelect" - Me.dgcSelect.TrueValue = "1" - ' - 'dgcIndex - ' - DataGridViewCellStyle14.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter - Me.dgcIndex.DefaultCellStyle = DataGridViewCellStyle14 - Me.dgcIndex.FillWeight = 25.0! - Me.dgcIndex.HeaderText = "#" - Me.dgcIndex.Name = "dgcIndex" - ' - 'dgcTeamId - ' - DataGridViewCellStyle15.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter - Me.dgcTeamId.DefaultCellStyle = DataGridViewCellStyle15 - Me.dgcTeamId.FillWeight = 75.0! - Me.dgcTeamId.HeaderText = "Team ID#" - Me.dgcTeamId.Name = "dgcTeamId" - ' - 'dgcMembershipNo - ' - DataGridViewCellStyle16.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter - DataGridViewCellStyle16.Font = New System.Drawing.Font("Courier New", 9.75!) - Me.dgcMembershipNo.DefaultCellStyle = DataGridViewCellStyle16 - Me.dgcMembershipNo.FillWeight = 80.0! - Me.dgcMembershipNo.HeaderText = "Membership Number" - Me.dgcMembershipNo.Name = "dgcMembershipNo" - Me.dgcMembershipNo.ReadOnly = True - ' - 'dgcNickname - ' - DataGridViewCellStyle17.WrapMode = System.Windows.Forms.DataGridViewTriState.[True] - Me.dgcNickname.DefaultCellStyle = DataGridViewCellStyle17 - Me.dgcNickname.FillWeight = 140.0! - Me.dgcNickname.HeaderText = "Nickname (Player Name)" - Me.dgcNickname.Name = "dgcNickname" - Me.dgcNickname.ReadOnly = True - ' - 'dgcByesCount - ' - DataGridViewCellStyle18.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter - DataGridViewCellStyle18.Font = New System.Drawing.Font("Microsoft Sans Serif", 12.0!) - Me.dgcByesCount.DefaultCellStyle = DataGridViewCellStyle18 - Me.dgcByesCount.FillWeight = 60.0! - Me.dgcByesCount.HeaderText = "First Round Bye" - Me.dgcByesCount.Name = "dgcByesCount" - Me.dgcByesCount.ReadOnly = True - ' - 'dgcStatus - ' - Me.dgcStatus.FillWeight = 120.0! - Me.dgcStatus.HeaderText = "Status" - Me.dgcStatus.Name = "dgcStatus" - Me.dgcStatus.ReadOnly = True - Me.dgcStatus.Resizable = System.Windows.Forms.DataGridViewTriState.[True] - Me.dgcStatus.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable - ' 'cbSelectAll ' Me.cbSelectAll.AutoSize = True @@ -709,23 +642,23 @@ Partial Class frmIndividual ' 'ToolStripMenuItem1 ' - Me.ToolStripMenuItem1.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.ToolStripMenuItem2, Me.ToolStripMenuItem3}) + Me.ToolStripMenuItem1.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.CommaSeparatedValuesFilecsvToolStripMenuItem1, Me.TournamentXMLxmlToolStripMenuItem1}) Me.ToolStripMenuItem1.MergeAction = System.Windows.Forms.MergeAction.Replace Me.ToolStripMenuItem1.Name = "ToolStripMenuItem1" Me.ToolStripMenuItem1.Size = New System.Drawing.Size(180, 22) Me.ToolStripMenuItem1.Text = "S&ave Copy As..." ' - 'ToolStripMenuItem2 + 'CommaSeparatedValuesFilecsvToolStripMenuItem1 ' - Me.ToolStripMenuItem2.Name = "ToolStripMenuItem2" - Me.ToolStripMenuItem2.Size = New System.Drawing.Size(262, 22) - Me.ToolStripMenuItem2.Text = "&Comma-Separated Values File (.csv)" + Me.CommaSeparatedValuesFilecsvToolStripMenuItem1.Name = "CommaSeparatedValuesFilecsvToolStripMenuItem1" + Me.CommaSeparatedValuesFilecsvToolStripMenuItem1.Size = New System.Drawing.Size(262, 22) + Me.CommaSeparatedValuesFilecsvToolStripMenuItem1.Text = "&Comma-Separated Values File (.csv)" ' - 'ToolStripMenuItem3 + 'TournamentXMLxmlToolStripMenuItem1 ' - Me.ToolStripMenuItem3.Name = "ToolStripMenuItem3" - Me.ToolStripMenuItem3.Size = New System.Drawing.Size(262, 22) - Me.ToolStripMenuItem3.Text = "Tournament XML (.xml)" + Me.TournamentXMLxmlToolStripMenuItem1.Name = "TournamentXMLxmlToolStripMenuItem1" + Me.TournamentXMLxmlToolStripMenuItem1.Size = New System.Drawing.Size(262, 22) + Me.TournamentXMLxmlToolStripMenuItem1.Text = "Tournament XML (.xml)" ' 'ToolStripSeparator1 ' @@ -736,7 +669,7 @@ Partial Class frmIndividual ' 'TournamentToolStripMenuItem ' - Me.TournamentToolStripMenuItem.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.PenaltiesToolStripMenuItem, Me.StaffJudgesToolStripMenuItem, Me.ToolStripSeparator2, Me.FullNameEntryToolStripMenuItem}) + Me.TournamentToolStripMenuItem.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.PenaltiesToolStripMenuItem, Me.StaffJudgesToolStripMenuItem, Me.WaitingListShufflerToolStripMenuItem, Me.ToolStripSeparator2, Me.FullNameEntryToolStripMenuItem}) Me.TournamentToolStripMenuItem.MergeAction = System.Windows.Forms.MergeAction.Replace Me.TournamentToolStripMenuItem.Name = "TournamentToolStripMenuItem" Me.TournamentToolStripMenuItem.Size = New System.Drawing.Size(83, 20) @@ -745,15 +678,28 @@ Partial Class frmIndividual 'PenaltiesToolStripMenuItem ' Me.PenaltiesToolStripMenuItem.Name = "PenaltiesToolStripMenuItem" - Me.PenaltiesToolStripMenuItem.Size = New System.Drawing.Size(193, 22) + Me.PenaltiesToolStripMenuItem.Size = New System.Drawing.Size(200, 22) Me.PenaltiesToolStripMenuItem.Text = "&Penalties" ' 'StaffJudgesToolStripMenuItem ' Me.StaffJudgesToolStripMenuItem.Name = "StaffJudgesToolStripMenuItem" - Me.StaffJudgesToolStripMenuItem.Size = New System.Drawing.Size(193, 22) + Me.StaffJudgesToolStripMenuItem.Size = New System.Drawing.Size(200, 22) Me.StaffJudgesToolStripMenuItem.Text = "&Staff/Judges" ' + 'ToolStripSeparator2 + ' + Me.ToolStripSeparator2.Name = "ToolStripSeparator2" + Me.ToolStripSeparator2.Size = New System.Drawing.Size(197, 6) + ' + 'FullNameEntryToolStripMenuItem + ' + Me.FullNameEntryToolStripMenuItem.Checked = True + Me.FullNameEntryToolStripMenuItem.CheckState = System.Windows.Forms.CheckState.Checked + Me.FullNameEntryToolStripMenuItem.Name = "FullNameEntryToolStripMenuItem" + Me.FullNameEntryToolStripMenuItem.Size = New System.Drawing.Size(200, 22) + Me.FullNameEntryToolStripMenuItem.Text = "&Full Player Name Entry" + ' 'SaveFileDialogCSV ' Me.SaveFileDialogCSV.DefaultExt = "csv" @@ -798,33 +744,33 @@ Partial Class frmIndividual ' 'cmsTournamentList ' - Me.cmsTournamentList.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.ChangeMembershipNumberToolStripMenuItem, Me.ChangeTeamIDToolStripMenuItem, Me.DeletePlayerFromTournamentToolStripMenuItem, Me.ChangePlayerStatusToToolStripMenuItem}) + Me.cmsTournamentList.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.tsmiPlayerName, Me.AddPlayerToTournamentToolStripMenuItem, Me.ToolStripSeparator4, Me.ChangeMembershipNumberToolStripMenuItem, Me.ChangeTeamIDToolStripMenuItem, Me.DeletePlayerFromTournamentToolStripMenuItem, Me.ChangePlayerStatusToToolStripMenuItem}) Me.cmsTournamentList.Name = "cmsTournamentList" - Me.cmsTournamentList.Size = New System.Drawing.Size(241, 92) + Me.cmsTournamentList.Size = New System.Drawing.Size(272, 142) ' 'ChangeMembershipNumberToolStripMenuItem ' Me.ChangeMembershipNumberToolStripMenuItem.Name = "ChangeMembershipNumberToolStripMenuItem" - Me.ChangeMembershipNumberToolStripMenuItem.Size = New System.Drawing.Size(240, 22) + Me.ChangeMembershipNumberToolStripMenuItem.Size = New System.Drawing.Size(271, 22) Me.ChangeMembershipNumberToolStripMenuItem.Text = "Change &Membership Number" ' 'ChangeTeamIDToolStripMenuItem ' Me.ChangeTeamIDToolStripMenuItem.Name = "ChangeTeamIDToolStripMenuItem" - Me.ChangeTeamIDToolStripMenuItem.Size = New System.Drawing.Size(240, 22) + Me.ChangeTeamIDToolStripMenuItem.Size = New System.Drawing.Size(271, 22) Me.ChangeTeamIDToolStripMenuItem.Text = "Change &TeamID" ' 'DeletePlayerFromTournamentToolStripMenuItem ' Me.DeletePlayerFromTournamentToolStripMenuItem.Name = "DeletePlayerFromTournamentToolStripMenuItem" - Me.DeletePlayerFromTournamentToolStripMenuItem.Size = New System.Drawing.Size(240, 22) + Me.DeletePlayerFromTournamentToolStripMenuItem.Size = New System.Drawing.Size(271, 22) Me.DeletePlayerFromTournamentToolStripMenuItem.Text = "Delete Player From Tournament" ' 'ChangePlayerStatusToToolStripMenuItem ' Me.ChangePlayerStatusToToolStripMenuItem.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.AppliedToolStripMenuItem, Me.SuccessfulToolStripMenuItem, Me.WaitingListToolStripMenuItem, Me.UnsuccessfulToolStripMenuItem, Me.CancelledToolStripMenuItem, Me.SelectedCheckedInToolStripMenuItem, Me.WaitingForCancellationCheckedInToolStripMenuItem, Me.AbsentOnDayOfEventToolStripMenuItem, Me.AdvanceElectedToolStripMenuItem, Me.ParticipatingInTournamentToolStripMenuItem, Me.DroppedToolStripMenuItem}) Me.ChangePlayerStatusToToolStripMenuItem.Name = "ChangePlayerStatusToToolStripMenuItem" - Me.ChangePlayerStatusToToolStripMenuItem.Size = New System.Drawing.Size(240, 22) + Me.ChangePlayerStatusToToolStripMenuItem.Size = New System.Drawing.Size(271, 22) Me.ChangePlayerStatusToToolStripMenuItem.Text = "Change Player Status To" ' 'AppliedToolStripMenuItem @@ -893,18 +839,95 @@ Partial Class frmIndividual Me.DroppedToolStripMenuItem.Size = New System.Drawing.Size(275, 22) Me.DroppedToolStripMenuItem.Text = "&Dropped" ' - 'ToolStripSeparator2 + 'dgcListIndex ' - Me.ToolStripSeparator2.Name = "ToolStripSeparator2" - Me.ToolStripSeparator2.Size = New System.Drawing.Size(190, 6) + Me.dgcListIndex.HeaderText = "lstPlayerID" + Me.dgcListIndex.Name = "dgcListIndex" + Me.dgcListIndex.ReadOnly = True + Me.dgcListIndex.Visible = False ' - 'FullNameEntryToolStripMenuItem + 'dgcSelect ' - Me.FullNameEntryToolStripMenuItem.Checked = True - Me.FullNameEntryToolStripMenuItem.CheckState = System.Windows.Forms.CheckState.Checked - Me.FullNameEntryToolStripMenuItem.Name = "FullNameEntryToolStripMenuItem" - Me.FullNameEntryToolStripMenuItem.Size = New System.Drawing.Size(193, 22) - Me.FullNameEntryToolStripMenuItem.Text = "&Full Player Name Entry" + Me.dgcSelect.FalseValue = "0" + Me.dgcSelect.FillWeight = 25.0! + Me.dgcSelect.HeaderText = "" + Me.dgcSelect.Name = "dgcSelect" + Me.dgcSelect.TrueValue = "1" + ' + 'dgcIndex + ' + DataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter + Me.dgcIndex.DefaultCellStyle = DataGridViewCellStyle2 + Me.dgcIndex.FillWeight = 25.0! + Me.dgcIndex.HeaderText = "#" + Me.dgcIndex.Name = "dgcIndex" + Me.dgcIndex.ReadOnly = True + ' + 'dgcTeamId + ' + DataGridViewCellStyle3.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter + Me.dgcTeamId.DefaultCellStyle = DataGridViewCellStyle3 + Me.dgcTeamId.FillWeight = 75.0! + Me.dgcTeamId.HeaderText = "Team ID#" + Me.dgcTeamId.Name = "dgcTeamId" + Me.dgcTeamId.ReadOnly = True + ' + 'dgcMembershipNo + ' + DataGridViewCellStyle4.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter + DataGridViewCellStyle4.Font = New System.Drawing.Font("Courier New", 9.75!) + Me.dgcMembershipNo.DefaultCellStyle = DataGridViewCellStyle4 + Me.dgcMembershipNo.FillWeight = 80.0! + Me.dgcMembershipNo.HeaderText = "Membership Number" + Me.dgcMembershipNo.Name = "dgcMembershipNo" + Me.dgcMembershipNo.ReadOnly = True + ' + 'dgcNickname + ' + DataGridViewCellStyle5.WrapMode = System.Windows.Forms.DataGridViewTriState.[True] + Me.dgcNickname.DefaultCellStyle = DataGridViewCellStyle5 + Me.dgcNickname.FillWeight = 140.0! + Me.dgcNickname.HeaderText = "Nickname (Player Name)" + Me.dgcNickname.Name = "dgcNickname" + Me.dgcNickname.ReadOnly = True + ' + 'dgcStatus + ' + DataGridViewCellStyle6.WrapMode = System.Windows.Forms.DataGridViewTriState.[True] + Me.dgcStatus.DefaultCellStyle = DataGridViewCellStyle6 + Me.dgcStatus.FillWeight = 120.0! + Me.dgcStatus.HeaderText = "Status" + Me.dgcStatus.Name = "dgcStatus" + Me.dgcStatus.ReadOnly = True + Me.dgcStatus.Resizable = System.Windows.Forms.DataGridViewTriState.[True] + Me.dgcStatus.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable + ' + 'ToolStripSeparator4 + ' + Me.ToolStripSeparator4.Name = "ToolStripSeparator4" + Me.ToolStripSeparator4.Size = New System.Drawing.Size(268, 6) + ' + 'tsmiPlayerName + ' + Me.tsmiPlayerName.Enabled = False + Me.tsmiPlayerName.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Bold) + Me.tsmiPlayerName.Name = "tsmiPlayerName" + Me.tsmiPlayerName.Size = New System.Drawing.Size(271, 22) + Me.tsmiPlayerName.Text = "{0}" + ' + 'AddPlayerToTournamentToolStripMenuItem + ' + Me.AddPlayerToTournamentToolStripMenuItem.Image = Global.retched.TCGRegManager.My.Resources.Resources.green_check_mark + Me.AddPlayerToTournamentToolStripMenuItem.Name = "AddPlayerToTournamentToolStripMenuItem" + Me.AddPlayerToTournamentToolStripMenuItem.Size = New System.Drawing.Size(271, 22) + Me.AddPlayerToTournamentToolStripMenuItem.Text = "&Add Player to Tournament / Check-In" + ' + 'WaitingListShufflerToolStripMenuItem + ' + Me.WaitingListShufflerToolStripMenuItem.Name = "WaitingListShufflerToolStripMenuItem" + Me.WaitingListShufflerToolStripMenuItem.Size = New System.Drawing.Size(200, 22) + Me.WaitingListShufflerToolStripMenuItem.Text = "&Build Tournament Pools" + Me.WaitingListShufflerToolStripMenuItem.Visible = False ' 'frmIndividual ' @@ -994,8 +1017,6 @@ Partial Class frmIndividual Friend WithEvents PenaltiesToolStripMenuItem As ToolStripMenuItem Friend WithEvents StaffJudgesToolStripMenuItem As ToolStripMenuItem Friend WithEvents ToolStripMenuItem1 As ToolStripMenuItem - Friend WithEvents ToolStripMenuItem2 As ToolStripMenuItem - Friend WithEvents ToolStripMenuItem3 As ToolStripMenuItem Friend WithEvents ToolStripSeparator3 As ToolStripSeparator Friend WithEvents SaveFileDialogCSV As SaveFileDialog Friend WithEvents SaveFileDialogXML As SaveFileDialog @@ -1024,16 +1045,21 @@ Partial Class frmIndividual Friend WithEvents AdvanceElectedToolStripMenuItem As ToolStripMenuItem Friend WithEvents ParticipatingInTournamentToolStripMenuItem As ToolStripMenuItem Friend WithEvents DroppedToolStripMenuItem As ToolStripMenuItem + Friend WithEvents ChangeTeamIDToolStripMenuItem As ToolStripMenuItem + Friend WithEvents ChangeMembershipNumberToolStripMenuItem As ToolStripMenuItem + Friend WithEvents ToolStripSeparator2 As ToolStripSeparator + Friend WithEvents FullNameEntryToolStripMenuItem As ToolStripMenuItem + Friend WithEvents CommaSeparatedValuesFilecsvToolStripMenuItem1 As ToolStripMenuItem + Friend WithEvents TournamentXMLxmlToolStripMenuItem1 As ToolStripMenuItem Friend WithEvents dgcListIndex As DataGridViewTextBoxColumn Friend WithEvents dgcSelect As DataGridViewCheckBoxColumn Friend WithEvents dgcIndex As DataGridViewTextBoxColumn Friend WithEvents dgcTeamId As DataGridViewTextBoxColumn Friend WithEvents dgcMembershipNo As DataGridViewTextBoxColumn Friend WithEvents dgcNickname As DataGridViewTextBoxColumn - Friend WithEvents dgcByesCount As DataGridViewTextBoxColumn Friend WithEvents dgcStatus As DataGridViewTextBoxColumn - Friend WithEvents ChangeTeamIDToolStripMenuItem As ToolStripMenuItem - Friend WithEvents ChangeMembershipNumberToolStripMenuItem As ToolStripMenuItem - Friend WithEvents ToolStripSeparator2 As ToolStripSeparator - Friend WithEvents FullNameEntryToolStripMenuItem As ToolStripMenuItem + Friend WithEvents tsmiPlayerName As ToolStripMenuItem + Friend WithEvents AddPlayerToTournamentToolStripMenuItem As ToolStripMenuItem + Friend WithEvents ToolStripSeparator4 As ToolStripSeparator + Friend WithEvents WaitingListShufflerToolStripMenuItem As ToolStripMenuItem End Class diff --git a/TCG+ Registration Helper/Registration - Individual.resx b/TCG+ Registration Helper/Registration - Individual.resx index 35112b9..073131f 100644 --- a/TCG+ Registration Helper/Registration - Individual.resx +++ b/TCG+ Registration Helper/Registration - Individual.resx @@ -117,27 +117,129 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + True + 116, 17 + + True + True True - + True 17, 17 + + True + + + True + + + True + + + True + + + True + 240, 17 + + True + 357, 17 + + True + 472, 17 @@ -151,9 +253,12 @@ 922, 17 - 1079, 17 + 1083, 17 1239, 17 + + True + \ No newline at end of file diff --git a/TCG+ Registration Helper/Registration - Individual.vb b/TCG+ Registration Helper/Registration - Individual.vb index 5d28966..98fa0d3 100644 --- a/TCG+ Registration Helper/Registration - Individual.vb +++ b/TCG+ Registration Helper/Registration - Individual.vb @@ -1,4 +1,6 @@ -Public Class frmIndividual +Imports System.Drawing.Drawing2D + +Public Class frmIndividual Public Property txtXMLFileName As String Public Property txtCSVFileName As String @@ -57,6 +59,9 @@ ' Add New Players to Global Player List AddNewPlayersFromImportCSV() MessageBox.Show("CSV File Loaded Sucessfully") + + My.Settings.LastUsedDirectory = Path.GetDirectoryName(txtCSVFileName) + My.Settings.Save() Else MessageBox.Show("There is no valid Membership data contained within the file." & Environment.NewLine & Environment.NewLine & "Are you trying to read a standings file?" & Environment.NewLine & Environment.NewLine & "Please double check the file and make sure you are using CSV Export from the ""My Event Details"" page and NOT from the Rankings page and try again.", "Invalid CSV File", MessageBoxButtons.OK, MessageBoxIcon.Error) End If @@ -74,6 +79,9 @@ tslFileName.Text = "File Name: " & txtXMLFileName tslFileName.Visible = True MessageBox.Show("XML File Loaded Sucessfully") + + My.Settings.LastUsedDirectory = Path.GetDirectoryName(txtXMLFileName) + My.Settings.Save() End If ' Load from XML and put names into Datatable @@ -120,6 +128,9 @@ UpdateAllPlayerXML(team.PlayerA.MembershipNumber, team.PlayerA.MembershipName) Next + ' If any player has a number of 0000000986, alert the user that the upload + ' will fail since that is an invalid number. + ' Since a new team was made, we should update the "Global Player List" on the form. LoadPlayersListFromXML() @@ -130,6 +141,8 @@ If String.IsNullOrEmpty(txtMemberNo.Text.Trim) Or String.IsNullOrEmpty(txtPlayerNickname.Text.Trim) Then MessageBox.Show("You must enter at LEAST a Membership Number and a Nickname.", "Invalid Entrant", MessageBoxButtons.OK, MessageBoxIcon.Error) + ElseIf txtMemberNo.Text = "0000000986" Then + MessageBox.Show("CAUTION! The number that you have entered/updated is an invalid TCG+ Membership Number. Using this number in your CSV upload will cause your upload to fail. Please consider having the player recreate their TCG+ account with a new number and delete this number off of your player roster.", "Invalid TCG+ Membership Number Entered", MessageBoxButtons.OK, MessageBoxIcon.Exclamation) Else ' Add Player to Tournament List, check to make sure they AREN'T in the list already ' Again we're only working with Player A as this is a solo event. @@ -212,7 +225,7 @@ Dim result As PlayerInfo = lstPlayers.Find(Function(x) x.MembershipNumber = team.PlayerA.MembershipNumber) If IsNothing(result) Then - dgvPlayers.Rows.Add(lstTournTeams.IndexOf(team), False, lstTournTeams.IndexOf(team) + 1, team.TeamID, team.PlayerA.MembershipNumber, team.PlayerA.SummaryName, IIf(team.ByeRounds, "Yes", "No"), _status.Item(team.Status)) + dgvPlayers.Rows.Add(lstTournTeams.IndexOf(team), False, lstTournTeams.IndexOf(team) + 1, team.TeamID, team.PlayerA.MembershipNumber, team.PlayerA.SummaryName, _status.Item(team.Status)) Else ' We found a matching team ' That means we copy that team's info over to the tournament team info @@ -220,7 +233,19 @@ team.PlayerA.FirstName = result.FirstName team.PlayerA.MembershipName = result.MembershipName - dgvPlayers.Rows.Add(lstTournTeams.IndexOf(team), False, lstTournTeams.IndexOf(team) + 1, team.TeamID, team.PlayerA.MembershipNumber, team.PlayerA.SummaryName, IIf(team.ByeRounds, "Yes", "No"), _status.Item(team.Status)) + Dim index As Integer = dgvPlayers.Rows.Add() + + With dgvPlayers.Rows(index) + .Cells("dgcListIndex").Value = lstTournTeams.IndexOf(team) + .Cells("dgcSelect").Value = False + .Cells("dgcIndex").Value = lstTournTeams.IndexOf(team) + 1 + .Cells("dgcTeamId").Value = team.TeamID + .Cells("dgcMembershipNo").Value = team.PlayerA.MembershipNumber + .Cells("dgcNickname").Value = team.PlayerA.SummaryName + .Cells("dgcStatus").Value = _status.Item(team.Status) & IIf(team.ByeRounds, Environment.NewLine & "First Round Bye", "") + End With + + 'dgvPlayers.Rows.Add() End If Next @@ -339,6 +364,9 @@ ' Find the team whose info matches FindPlayerFromList(txtMemberNo.Text) + + If txtMemberNo.Text = "0000000986" Then MessageBox.Show("CAUTION! The number that you have entered/updated is an invalid TCG+ Membership Number. Using this number in your CSV upload will cause your upload to fail. Please consider having the player recreate their TCG+ account with a new number and delete this number off of your player roster.", "Invalid TCG+ Membership Number Entered", MessageBoxButtons.OK, MessageBoxIcon.Exclamation) + End If End Sub @@ -397,6 +425,9 @@ tourn.Cells("dgcSelect").Value = 0 End If Next + + ' Clear checkbox at the top of the player list. + cbSelectAll.Checked = False End Sub Private Sub cbSelectAll_CheckedChanged(sender As Object, e As EventArgs) Handles cbSelectAll.CheckedChanged @@ -466,6 +497,7 @@ End If End Sub + Private Sub DeletePlayerToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles DeletePlayerToolStripMenuItem.Click If MessageBox.Show("Are you ABSOLUTELY sure that you want to delete this player from the local database?" & System.Environment.NewLine & System.Environment.NewLine & "This will not remove them from the current tournament file nor any tournaments that are later loaded. This also will not remove them from a tournament that the player is registered for on Bandai TCG+." & Environment.NewLine & Environment.NewLine & "This will not prevent the player from being added back to the database if you update the status above.", "Delete This Player?", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = DialogResult.Yes Then @@ -511,10 +543,10 @@ Next If intCount > 0 Then - If MessageBox.Show(String.Format("You are about to delete {0} player(s) from this tournament." & Environment.NewLine & Environment.NewLine & "Are you sure you want to proceed?", intCount), "Deleting Multiple Players", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = DialogResult.Yes Then + If MessageBox.Show(String.Format("You are about to delete/drop {0} player(s) from this tournament." & Environment.NewLine & Environment.NewLine & "Are you sure you want to proceed?", intCount), "Deleting Multiple Players", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = DialogResult.Yes Then For Each row In dgvPlayers.Rows - If row.Cells(1).Value = True Then - Dim intListIndex As Integer = row.Cells(0).Value + If row.Cells("dgcSelect").Value = True Then + Dim intListIndex As Integer = row.Cells("dgcListIndex").Value If lstTournTeams(intListIndex).TeamID = 0 Then ' Remove the team from the list. @@ -525,9 +557,12 @@ Else ' Can't delete the team, make an error lstErrors.Add(lstTournTeams(intListIndex)) + + ' Instead of deleting them, change the player to "Absent on Day of Event". + lstTournTeams(intListIndex).Status = 8 End If - row.Cells(1).Value = False + row.Cells("dgcSelect").Value = False End If Next @@ -540,11 +575,14 @@ Next - MessageBox.Show(String.Format("Deleted {0} players from the tournament roster." & Environment.NewLine & Environment.NewLine & "But {1} player(s) could not be deleted. Either the player pre-registered or was enrolled through the TCG+ app. To remove these players from the pairings, set their status to ANYTHING but ""Participating in Tournament""." & Environment.NewLine & Environment.NewLine & "Players not removed:" & Environment.NewLine & strErrors, intCount - lstErrors.Count, lstErrors.Count), "Deleted Players", MessageBoxButtons.OK, MessageBoxIcon.Information) + MessageBox.Show(String.Format("Deleted {0} players from the tournament roster." & Environment.NewLine & Environment.NewLine & "But {1} player(s) could not be deleted and were dropped instead. Either the player pre-registered or was enrolled through TCG+. To remove these players from the pairings, this player was set to ""Absent on Day of Event""." & Environment.NewLine & Environment.NewLine & "Players withdrawn:" & Environment.NewLine & strErrors, intCount - lstErrors.Count, lstErrors.Count), "Deleted Players", MessageBoxButtons.OK, MessageBoxIcon.Information) Else MessageBox.Show(String.Format("Succesfully deleted {0} players from tournament roster.", intCount), "Deleted players with no errors", MessageBoxButtons.OK, MessageBoxIcon.Asterisk) End If End If + + ' Rebuild the Tournament List whether or not the list was successfully changed. + BuildTournamentList() ElseIf dgvPlayers.SelectedRows.Count = 1 Then Dim intLstID As Integer = dgvPlayers.SelectedRows(0).Cells(0).Value @@ -552,12 +590,13 @@ MessageBox.Show("Cannot delete this player." & Environment.NewLine & Environment.NewLine & "Either the player pre-registered or was enrolled through the TCG+ app. To remove this player from the pairings, set their status to ANYTHING but ""Participating in Tournament"".", "Cannot delete pre-registered player", MessageBoxButtons.OK, MessageBoxIcon.Error) Else lstTournTeams.RemoveAt(intLstID) - - BuildTournamentList() End If - + ' Rebuild the Tournament List whether or not the list was successfully changed. + BuildTournamentList() End If + + dgvPlayers.ClearSelection() End Sub @@ -569,10 +608,22 @@ Private Sub CommaSeparatedValuesFilecsvToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles CommaSeparatedValuesFilecsvToolStripMenuItem.Click Dim FileName As String + + Dim blnHasInvalidPlayerNumber As Boolean = False + If Not String.IsNullOrWhiteSpace(txtCSVFileName) AndAlso My.Computer.FileSystem.FileExists(txtCSVFileName) Then - FileName = txtCSVFileName + SaveFileDialogCSV.InitialDirectory = Path.GetDirectoryName(txtCSVFileName) + ElseIf Not String.IsNullOrWhiteSpace(My.Settings.LastUsedDirectory) Then + SaveFileDialogCSV.InitialDirectory = My.Settings.LastUsedDirectory Else SaveFileDialogCSV.InitialDirectory = My.Computer.FileSystem.SpecialDirectories.MyDocuments + End If + + + If Not String.IsNullOrWhiteSpace(txtCSVFileName) AndAlso My.Computer.FileSystem.FileExists(txtCSVFileName) Then + FileName = txtCSVFileName + Else + SaveFileDialogCSV.ShowDialog(Me) FileName = SaveFileDialogCSV.FileName @@ -584,7 +635,7 @@ txtCSVFileName = FileName Using csvDoc As IO.StreamWriter = My.Computer.FileSystem.OpenTextFileWriter(FileName, False) - csvDoc.WriteLine("""Team ID"",""Team Name"",""Win Point"",""Status"",""Bye Count"",""Membership Number - 1"",""Player Name - 1"",""Seat Order - 1"",""Memo""") + csvDoc.WriteLine("""Team ID"",""Team Name"",""Win Point"",""Status"",""Bye Count"",""Membership Number - 1"",""Player Name - 1"",""Seat Order - 1"",""Memo"",""Deck Recipe - 1"", ""SMS Auth""") csvDoc.WriteLine("""Required ※Please set the value to 0 for new registrations."",""Optional ※Required for team competitions only"",""Uneditable @@ -603,21 +654,22 @@ No change in value will have any effect."",""Required 1: 1 Round Bye Optional ※When not entered"",""Required"",""Uneditable -No change in value will have any effect."",""Required""") +No change in value will have any effect."",""Required +※Please set the seat order(A/B/C).""") For Each team In lstTournTeams - If team.Status <> 9999 Then - csvDoc.Write("""" & team.TeamID & """,") - csvDoc.Write("""" & team.TeamName & """,") - csvDoc.Write("""" & """,") - csvDoc.Write("""" & team.Status & """,") - csvDoc.Write("""" & team.ByeRounds & """,") - csvDoc.Write("""" & team.PlayerA.MembershipNumber & """,") - csvDoc.Write("""" & team.PlayerA.MembershipName & """,") - csvDoc.Write("""" & team.PlayerA.SeatOrder & """,") - csvDoc.Write("""" & IIf(My.Settings.PlayerNameFull, team.PlayerA.PlayerFullName, "") & """") - csvDoc.Write(Environment.NewLine) - End If + csvDoc.Write("""" & team.TeamID & """,") + csvDoc.Write("""" & team.TeamName & """,") + csvDoc.Write("""" & """,") + csvDoc.Write("""" & team.Status & """,") + csvDoc.Write("""" & team.ByeRounds & """,") + csvDoc.Write("""" & team.PlayerA.MembershipNumber & """,") + csvDoc.Write("""" & team.PlayerA.MembershipName & """,") + csvDoc.Write("""" & team.PlayerA.SeatOrder & """,") + csvDoc.Write("""" & IIf(My.Settings.PlayerNameFull, team.PlayerA.PlayerFullName, "") & """,") + csvDoc.Write("""" & team.PlayerA.DeckRecipe & """,") + csvDoc.Write("""" & team.SMSAuth & """") + csvDoc.Write(Environment.NewLine) Next csvDoc.Close() @@ -625,20 +677,30 @@ No change in value will have any effect."",""Required""") tslFileName.Text = "File Name: " & txtCSVFileName tslFileName.Visible = True + + My.Settings.LastUsedDirectory = Path.GetDirectoryName(txtCSVFileName) + My.Settings.Save() + 'MessageBox.Show("Last Path Used: " & Path.GetDirectoryName(txtCSVFileName)) + MessageBox.Show("CSV Export Complete." & Environment.NewLine & Environment.NewLine & "File Saved to:" & Environment.NewLine & txtCSVFileName, "CSV Export Complete", MessageBoxButtons.OK, MessageBoxIcon.Information) End If End Sub - Private Sub ToolStripMenuItem2_Click(sender As Object, e As EventArgs) Handles ToolStripMenuItem2.Click + Private Sub CommaSeparatedValuesFilecsvToolStripMenuItem1_Click(sender As Object, e As EventArgs) Handles CommaSeparatedValuesFilecsvToolStripMenuItem1.Click ' No check for a file, this one will ALWAYS generate a prompt. - - SaveFileDialogCSV.InitialDirectory = My.Computer.FileSystem.SpecialDirectories.MyDocuments + If Not String.IsNullOrWhiteSpace(txtCSVFileName) AndAlso My.Computer.FileSystem.FileExists(txtCSVFileName) Then + SaveFileDialogCSV.InitialDirectory = Path.GetDirectoryName(txtCSVFileName) + ElseIf Not String.IsNullOrWhiteSpace(My.Settings.LastUsedDirectory) Then + SaveFileDialogCSV.InitialDirectory = My.Settings.LastUsedDirectory + Else + SaveFileDialogCSV.InitialDirectory = My.Computer.FileSystem.SpecialDirectories.MyDocuments + End If If SaveFileDialogCSV.ShowDialog(Me) = DialogResult.OK Then Dim FileName As String = SaveFileDialogCSV.FileName Using csvDoc As IO.StreamWriter = My.Computer.FileSystem.OpenTextFileWriter(FileName, False) - csvDoc.WriteLine("""Team ID"",""Team Name"",""Win Point"",""Status"",""Bye Count"",""Membership Number - 1"",""Player Name - 1"",""Seat Order - 1"",""Memo""") + csvDoc.WriteLine("""Team ID"",""Team Name"",""Win Point"",""Status"",""Bye Count"",""Membership Number - 1"",""Player Name - 1"",""Seat Order - 1"",""Memo"", ""Deck Recipe - 1"", ""SMS Auth""") csvDoc.WriteLine("""Required ※Please set the value to 0 for new registrations."",""Optional ※Required for team competitions only"",""Uneditable @@ -660,18 +722,18 @@ Optional No change in value will have any effect."",""Required""") For Each player In lstTournTeams - If player.Status <> 9999 Then - csvDoc.Write("""" & player.TeamID & """,") - csvDoc.Write("""" & player.TeamName & """,") - csvDoc.Write("""" & """,") - csvDoc.Write("""" & player.Status & """,") - csvDoc.Write("""" & player.ByeRounds & """,") - csvDoc.Write("""" & player.PlayerA.MembershipNumber & """,") - csvDoc.Write("""" & player.PlayerA.MembershipName & """,") - csvDoc.Write("""" & player.PlayerA.SeatOrder & """,") - csvDoc.Write("""" & IIf(My.Settings.PlayerNameFull, player.PlayerA.PlayerFullName, "") & """") - csvDoc.Write(Environment.NewLine) - End If + csvDoc.Write("""" & player.TeamID & """,") + csvDoc.Write("""" & player.TeamName & """,") + csvDoc.Write("""" & """,") + csvDoc.Write("""" & player.Status & """,") + csvDoc.Write("""" & player.ByeRounds & """,") + csvDoc.Write("""" & player.PlayerA.MembershipNumber & """,") + csvDoc.Write("""" & player.PlayerA.MembershipName & """,") + csvDoc.Write("""" & player.PlayerA.SeatOrder & """,") + csvDoc.Write("""" & IIf(My.Settings.PlayerNameFull, player.PlayerA.PlayerFullName, "") & """,") + csvDoc.Write("""" & player.PlayerA.DeckRecipe & """,") + csvDoc.Write("""" & player.SMSAuth & """") + csvDoc.Write(Environment.NewLine) Next csvDoc.Close() @@ -680,6 +742,11 @@ No change in value will have any effect."",""Required""") tslFileName.Text = "File Name: " & txtCSVFileName tslFileName.Visible = True + + My.Settings.LastUsedDirectory = Path.GetDirectoryName(txtCSVFileName) + My.Settings.Save() + 'MessageBox.Show("Last Path Used: " & Path.GetDirectoryName(txtCSVFileName)) + MessageBox.Show("CSV Export Complete." & Environment.NewLine & Environment.NewLine & "File Saved to:" & Environment.NewLine & txtCSVFileName, "CSV Export Complete", MessageBoxButtons.OK, MessageBoxIcon.Information) End If End Sub @@ -688,10 +755,18 @@ No change in value will have any effect."",""Required""") Dim FileName As String + + If Not String.IsNullOrWhiteSpace(txtCSVFileName) AndAlso My.Computer.FileSystem.FileExists(txtCSVFileName) Then + SaveFileDialogXML.InitialDirectory = Path.GetDirectoryName(txtCSVFileName) + ElseIf Not String.IsNullOrWhiteSpace(My.Settings.LastUsedDirectory) Then + SaveFileDialogXML.InitialDirectory = My.Settings.LastUsedDirectory + Else + SaveFileDialogXML.InitialDirectory = My.Computer.FileSystem.SpecialDirectories.MyDocuments + End If + If Not String.IsNullOrWhiteSpace(txtXMLFileName) AndAlso My.Computer.FileSystem.FileExists(txtXMLFileName) Then FileName = txtXMLFileName Else - SaveFileDialogXML.InitialDirectory = My.Computer.FileSystem.SpecialDirectories.MyDocuments SaveFileDialogXML.ShowDialog(Me) FileName = SaveFileDialogXML.FileName End If @@ -729,7 +804,8 @@ No change in value will have any effect."",""Required""") New XElement("MemberName", team.PlayerA.MembershipName), New XElement("PlayerFirstName", team.PlayerA.FirstName), New XElement("PlayerLastName", team.PlayerA.LastName), - New XElement("SeatOrder", "A"))))) + New XElement("SeatOrder", "A"), + New XElement("DeckRecipe", team.PlayerA.DeckRecipe))))) Next 'tournament.Add(playerNode) @@ -765,13 +841,23 @@ No change in value will have any effect."",""Required""") xDoc.Save(txtXMLFileName) tslFileName.Text = "File Name: " & txtXMLFileName tslFileName.Visible = True + + My.Settings.LastUsedDirectory = Path.GetDirectoryName(txtXMLFileName) + My.Settings.Save() + MessageBox.Show("XML Export Complete." & Environment.NewLine & Environment.NewLine & "File Saved to:" & Environment.NewLine & txtXMLFileName, "XML Export Complete", MessageBoxButtons.OK, MessageBoxIcon.Information) End If End Sub - Private Sub ToolStripMenuItem3_Click(sender As Object, e As EventArgs) Handles ToolStripMenuItem3.Click + Private Sub TournamentXMLxmlToolStripMenuItem1_Click(sender As Object, e As EventArgs) Handles TournamentXMLxmlToolStripMenuItem1.Click ' This is to save a copy as. So there will always be a prompt. - SaveFileDialogCSV.InitialDirectory = My.Computer.FileSystem.SpecialDirectories.MyDocuments + If Not String.IsNullOrWhiteSpace(txtCSVFileName) AndAlso My.Computer.FileSystem.FileExists(txtCSVFileName) Then + SaveFileDialogXML.InitialDirectory = Path.GetDirectoryName(txtCSVFileName) + ElseIf Not String.IsNullOrWhiteSpace(My.Settings.LastUsedDirectory) Then + SaveFileDialogXML.InitialDirectory = My.Settings.LastUsedDirectory + Else + SaveFileDialogXML.InitialDirectory = My.Computer.FileSystem.SpecialDirectories.MyDocuments + End If If SaveFileDialogXML.ShowDialog(Me) = DialogResult.OK Then ' Set this file name as the NEW saved file name. @@ -806,7 +892,8 @@ No change in value will have any effect."",""Required""") New XElement("MemberName", team.PlayerA.MembershipName), New XElement("PlayerFirstName", team.PlayerA.FirstName), New XElement("PlayerLastName", team.PlayerA.LastName), - New XElement("SeatOrder", "A"))))) + New XElement("SeatOrder", "A"), + New XElement("DeckRecipe", team.PlayerA.DeckRecipe))))) Next 'tournament.Add(playerNode) @@ -843,6 +930,9 @@ No change in value will have any effect."",""Required""") tslFileName.Text = "File Name: " & txtXMLFileName tslFileName.Visible = True + My.Settings.LastUsedDirectory = Path.GetDirectoryName(txtXMLFileName) + My.Settings.Save() + MessageBox.Show("XML Export Complete." & Environment.NewLine & Environment.NewLine & "File Saved to:" & Environment.NewLine & txtXMLFileName, "XML Export Complete", MessageBoxButtons.OK, MessageBoxIcon.Information) End If End Sub @@ -1025,17 +1115,23 @@ No change in value will have any effect."",""Required""") BuildTournamentList() End Sub + + Private Sub dgvPlayers_CellMouseClick(sender As Object, e As DataGridViewCellMouseEventArgs) Handles dgvPlayers.CellMouseClick If e.Button = MouseButtons.Right And e.RowIndex >= 0 Then dgvPlayers.CurrentCell = dgvPlayers.Rows(e.RowIndex).Cells(e.ColumnIndex) - cmsTournamentList.Show(dgvPlayers, dgvPlayers.PointToClient(Cursor.Position)) - ' Change the first item in the CMS to what is needed. ' Get the current Tournament Status of the selected Player Dim index As Integer = dgvPlayers.CurrentRow.Cells("dgcListIndex").Value + ' Set the options of the cmsTournamentList as needed. + ' Change the name of the "player" space to the actual player. + tsmiPlayerName.Text = String.Format(tsmiPlayerName.Text, lstTournTeams(index).PlayerA.SummaryName) + + cmsTournamentList.Show(dgvPlayers, dgvPlayers.PointToClient(Cursor.Position)) + Select Case lstTournTeams(index).Status Case 1 AppliedToolStripMenuItem.Checked = True @@ -1077,6 +1173,9 @@ No change in value will have any effect."",""Required""") AdvanceElectedToolStripMenuItem.Checked = False ParticipatingInTournamentToolStripMenuItem.Checked = False DroppedToolStripMenuItem.Checked = False + + ' Reset it back to default + tsmiPlayerName.Text = "{0}" End Sub Private Sub AppliedToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles WaitingListToolStripMenuItem.Click, WaitingForCancellationCheckedInToolStripMenuItem.Click, UnsuccessfulToolStripMenuItem.Click, SuccessfulToolStripMenuItem.Click, SelectedCheckedInToolStripMenuItem.Click, ParticipatingInTournamentToolStripMenuItem.Click, DroppedToolStripMenuItem.Click, CancelledToolStripMenuItem.Click, AppliedToolStripMenuItem.Click, AdvanceElectedToolStripMenuItem.Click, AbsentOnDayOfEventToolStripMenuItem.Click @@ -1193,4 +1292,15 @@ No change in value will have any effect."",""Required""") My.Settings.Save() End Sub + + Private Sub AddPlayerToTournamentToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles AddPlayerToTournamentToolStripMenuItem.Click + ' This should change the selected player to be added. + + Dim index As Integer = dgvPlayers.CurrentRow.Cells("dgcListIndex").Value + lstTournTeams(index).Status = 10 + + ' Rebuild the list after the change. + BuildTournamentList() + + End Sub End Class diff --git a/TCG+ Registration Helper/Resources/green-check-mark.png b/TCG+ Registration Helper/Resources/green-check-mark.png new file mode 100644 index 0000000000000000000000000000000000000000..92a2e13d4bacafcde30ea57ab59fdaa35fa3ad6f GIT binary patch literal 19072 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 MM?UD--r->Vf1fvCMF0Q* literal 0 HcmV?d00001 diff --git a/TCG+ Registration Helper/Resources/red-cross-mark.png b/TCG+ Registration Helper/Resources/red-cross-mark.png new file mode 100644 index 0000000000000000000000000000000000000000..003fd1383c56758bf10dcd5112abd3232600f7c4 GIT binary patch literal 113952 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뮛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≧M#_|l6Bd~FL1XFL9-uW=zF+4Q^H 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 literal 0 HcmV?d00001 diff --git a/TCG+ Registration Helper/Splash Screen.Designer.vb b/TCG+ Registration Helper/Splash Screen.Designer.vb index 274d003..f6459a7 100644 --- a/TCG+ Registration Helper/Splash Screen.Designer.vb +++ b/TCG+ Registration Helper/Splash Screen.Designer.vb @@ -26,7 +26,7 @@ Partial Class frmSplashScreen Me.PictureBox1 = New System.Windows.Forms.PictureBox() Me.Label1 = New System.Windows.Forms.Label() Me.Label2 = New System.Windows.Forms.Label() - Me.Label3 = New System.Windows.Forms.Label() + Me.lblVersionNumber = New System.Windows.Forms.Label() CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).BeginInit() Me.SuspendLayout() ' @@ -60,14 +60,14 @@ Partial Class frmSplashScreen Me.Label2.Text = "Written by Paul Williams (retched@hotmail.com)" Me.Label2.TextAlign = System.Drawing.ContentAlignment.TopRight ' - 'Label3 + 'lblVersionNumber ' - Me.Label3.Location = New System.Drawing.Point(523, 240) - Me.Label3.Name = "Label3" - Me.Label3.Size = New System.Drawing.Size(229, 13) - Me.Label3.TabIndex = 3 - Me.Label3.Text = "Version 1.1.0.0" - Me.Label3.TextAlign = System.Drawing.ContentAlignment.MiddleRight + Me.lblVersionNumber.Location = New System.Drawing.Point(523, 240) + Me.lblVersionNumber.Name = "lblVersionNumber" + Me.lblVersionNumber.Size = New System.Drawing.Size(229, 13) + Me.lblVersionNumber.TabIndex = 3 + Me.lblVersionNumber.Text = "Version #.#.#.#" + Me.lblVersionNumber.TextAlign = System.Drawing.ContentAlignment.MiddleRight ' 'frmSplashScreen ' @@ -75,7 +75,7 @@ Partial Class frmSplashScreen Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font Me.BackColor = System.Drawing.Color.White Me.ClientSize = New System.Drawing.Size(764, 286) - Me.Controls.Add(Me.Label3) + Me.Controls.Add(Me.lblVersionNumber) Me.Controls.Add(Me.Label2) Me.Controls.Add(Me.Label1) Me.Controls.Add(Me.PictureBox1) @@ -93,5 +93,5 @@ Partial Class frmSplashScreen Friend WithEvents PictureBox1 As PictureBox Friend WithEvents Label1 As Label Friend WithEvents Label2 As Label - Friend WithEvents Label3 As Label + Friend WithEvents lblVersionNumber As Label End Class diff --git a/TCG+ Registration Helper/Splash Screen.vb b/TCG+ Registration Helper/Splash Screen.vb index 549a203..3e9056c 100644 --- a/TCG+ Registration Helper/Splash Screen.vb +++ b/TCG+ Registration Helper/Splash Screen.vb @@ -26,5 +26,8 @@ Application.Exit() End Try End If + + ' Change the version number to that of the one listed in the Assembly + lblVersionNumber.Text = "Version " & Application.ProductVersion.ToString End Sub End Class \ No newline at end of file diff --git a/TCG+ Registration Helper/StatusDictionary.vb b/TCG+ Registration Helper/StatusDictionary.vb index fb8911b..fe5848b 100644 --- a/TCG+ Registration Helper/StatusDictionary.vb +++ b/TCG+ Registration Helper/StatusDictionary.vb @@ -45,11 +45,33 @@ {20, "Players under the influence of drugs or alcohol"} } + Public _suggested As Dictionary(Of Integer, Integer) = New Dictionary(Of Integer, Integer) From { + {1, 1}, + {2, 1}, + {3, 1}, + {4, 1}, + {5, 2}, + {6, 1}, + {7, 1}, + {8, 2}, + {9, 2}, + {10, 1}, + {11, 1}, + {12, 1}, + {13, 1}, + {14, 1}, + {15, 4}, + {16, 4}, + {17, 4}, + {18, 4}, + {19, 4}, + {20, 4} + } Public _penalty As Dictionary(Of Integer, String) = New Dictionary(Of Integer, String) From { {0, "Caution"}, {1, "Warning"}, {2, "Game Loss"}, - {3, "Match Loss / Defeat"}, + {3, "Match Loss"}, {4, "Disqualification"} } End Module diff --git a/TCG+ Registration Helper/TCG+ Registration Helper.vbproj b/TCG+ Registration Helper/TCG+ Registration Helper.vbproj index b5a6321..5e3530a 100644 --- a/TCG+ Registration Helper/TCG+ Registration Helper.vbproj +++ b/TCG+ Registration Helper/TCG+ Registration Helper.vbproj @@ -255,6 +255,7 @@ + @@ -272,6 +273,8 @@ + + diff --git a/TCG+ Registration Helper/Tournament - Penalty Detail.vb b/TCG+ Registration Helper/Tournament - Penalty Detail.vb index 90f5678..ed60d4b 100644 --- a/TCG+ Registration Helper/Tournament - Penalty Detail.vb +++ b/TCG+ Registration Helper/Tournament - Penalty Detail.vb @@ -1,4 +1,6 @@ Public Class frmPenaltyDetail + Public Property EditMode As Boolean = False + Private Sub frmPenaltyDetail_Load(sender As Object, e As EventArgs) Handles MyBase.Load ' Assign the Infraction Types to the field cboInfraction.DataSource = New BindingSource(_infraction, Nothing) @@ -10,7 +12,13 @@ cboPenalty.DisplayMember = "Value" cboPenalty.ValueMember = "Key" + End Sub + Private Sub cboInfraction_SelectionChangeCommitted(sender As Object, e As EventArgs) Handles cboInfraction.SelectedIndexChanged + If Not EditMode Then + cboPenalty.SelectedValue = _suggested.Item(cboInfraction.SelectedValue.Key) + EditMode = False + End If End Sub End Class \ No newline at end of file diff --git a/TCG+ Registration Helper/Tournament - Penalty Form.Designer.vb b/TCG+ Registration Helper/Tournament - Penalty Form.Designer.vb index fafcfc0..6d7bd95 100644 --- a/TCG+ Registration Helper/Tournament - Penalty Form.Designer.vb +++ b/TCG+ Registration Helper/Tournament - Penalty Form.Designer.vb @@ -25,10 +25,6 @@ Partial Class frmPenalties Dim DataGridViewCellStyle1 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle() Dim DataGridViewCellStyle2 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle() Me.dgvPenalties = New System.Windows.Forms.DataGridView() - Me.btnAddPenalty = New System.Windows.Forms.Button() - Me.btnEditPenalty = New System.Windows.Forms.Button() - Me.btnDeletePenalty = New System.Windows.Forms.Button() - Me.btnClose = New System.Windows.Forms.Button() Me.dgcPenaltyID = New System.Windows.Forms.DataGridViewTextBoxColumn() Me.dgcPlayer = New System.Windows.Forms.DataGridViewTextBoxColumn() Me.dgcInfractionType = New System.Windows.Forms.DataGridViewTextBoxColumn() @@ -36,6 +32,10 @@ Partial Class frmPenalties Me.dgcRound = New System.Windows.Forms.DataGridViewTextBoxColumn() Me.dgcJudge = New System.Windows.Forms.DataGridViewTextBoxColumn() Me.dgcNotes = New System.Windows.Forms.DataGridViewTextBoxColumn() + Me.btnAddPenalty = New System.Windows.Forms.Button() + Me.btnEditPenalty = New System.Windows.Forms.Button() + Me.btnDeletePenalty = New System.Windows.Forms.Button() + Me.btnClose = New System.Windows.Forms.Button() CType(Me.dgvPenalties, System.ComponentModel.ISupportInitialize).BeginInit() Me.SuspendLayout() ' @@ -62,52 +62,9 @@ Partial Class frmPenalties Me.dgvPenalties.Name = "dgvPenalties" Me.dgvPenalties.RowHeadersVisible = False Me.dgvPenalties.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect - Me.dgvPenalties.Size = New System.Drawing.Size(792, 305) + Me.dgvPenalties.Size = New System.Drawing.Size(792, 311) Me.dgvPenalties.TabIndex = 0 ' - 'btnAddPenalty - ' - Me.btnAddPenalty.Anchor = System.Windows.Forms.AnchorStyles.Bottom - Me.btnAddPenalty.Location = New System.Drawing.Point(181, 321) - Me.btnAddPenalty.Name = "btnAddPenalty" - Me.btnAddPenalty.Size = New System.Drawing.Size(109, 25) - Me.btnAddPenalty.TabIndex = 1 - Me.btnAddPenalty.Text = "&Add Penalty" - Me.btnAddPenalty.UseVisualStyleBackColor = True - ' - 'btnEditPenalty - ' - Me.btnEditPenalty.Anchor = System.Windows.Forms.AnchorStyles.Bottom - Me.btnEditPenalty.Enabled = False - Me.btnEditPenalty.Location = New System.Drawing.Point(295, 321) - Me.btnEditPenalty.Name = "btnEditPenalty" - Me.btnEditPenalty.Size = New System.Drawing.Size(109, 25) - Me.btnEditPenalty.TabIndex = 2 - Me.btnEditPenalty.Text = "&Edit Penalty" - Me.btnEditPenalty.UseVisualStyleBackColor = True - ' - 'btnDeletePenalty - ' - Me.btnDeletePenalty.Anchor = System.Windows.Forms.AnchorStyles.Bottom - Me.btnDeletePenalty.Enabled = False - Me.btnDeletePenalty.Location = New System.Drawing.Point(409, 321) - Me.btnDeletePenalty.Name = "btnDeletePenalty" - Me.btnDeletePenalty.Size = New System.Drawing.Size(109, 25) - Me.btnDeletePenalty.TabIndex = 3 - Me.btnDeletePenalty.Text = "&Delete Penalty" - Me.btnDeletePenalty.UseVisualStyleBackColor = True - ' - 'btnClose - ' - Me.btnClose.Anchor = System.Windows.Forms.AnchorStyles.Bottom - Me.btnClose.DialogResult = System.Windows.Forms.DialogResult.OK - Me.btnClose.Location = New System.Drawing.Point(523, 321) - Me.btnClose.Name = "btnClose" - Me.btnClose.Size = New System.Drawing.Size(109, 25) - Me.btnClose.TabIndex = 4 - Me.btnClose.Text = "&Close" - Me.btnClose.UseVisualStyleBackColor = True - ' 'dgcPenaltyID ' Me.dgcPenaltyID.HeaderText = "ID" @@ -152,11 +109,54 @@ Partial Class frmPenalties Me.dgcNotes.Name = "dgcNotes" Me.dgcNotes.ReadOnly = True ' + 'btnAddPenalty + ' + Me.btnAddPenalty.Anchor = System.Windows.Forms.AnchorStyles.Bottom + Me.btnAddPenalty.Location = New System.Drawing.Point(181, 327) + Me.btnAddPenalty.Name = "btnAddPenalty" + Me.btnAddPenalty.Size = New System.Drawing.Size(109, 25) + Me.btnAddPenalty.TabIndex = 1 + Me.btnAddPenalty.Text = "&Add Penalty" + Me.btnAddPenalty.UseVisualStyleBackColor = True + ' + 'btnEditPenalty + ' + Me.btnEditPenalty.Anchor = System.Windows.Forms.AnchorStyles.Bottom + Me.btnEditPenalty.Enabled = False + Me.btnEditPenalty.Location = New System.Drawing.Point(295, 327) + Me.btnEditPenalty.Name = "btnEditPenalty" + Me.btnEditPenalty.Size = New System.Drawing.Size(109, 25) + Me.btnEditPenalty.TabIndex = 2 + Me.btnEditPenalty.Text = "&Edit Penalty" + Me.btnEditPenalty.UseVisualStyleBackColor = True + ' + 'btnDeletePenalty + ' + Me.btnDeletePenalty.Anchor = System.Windows.Forms.AnchorStyles.Bottom + Me.btnDeletePenalty.Enabled = False + Me.btnDeletePenalty.Location = New System.Drawing.Point(409, 327) + Me.btnDeletePenalty.Name = "btnDeletePenalty" + Me.btnDeletePenalty.Size = New System.Drawing.Size(109, 25) + Me.btnDeletePenalty.TabIndex = 3 + Me.btnDeletePenalty.Text = "&Delete Penalty" + Me.btnDeletePenalty.UseVisualStyleBackColor = True + ' + 'btnClose + ' + Me.btnClose.Anchor = System.Windows.Forms.AnchorStyles.Bottom + Me.btnClose.DialogResult = System.Windows.Forms.DialogResult.OK + Me.btnClose.Location = New System.Drawing.Point(523, 327) + Me.btnClose.Name = "btnClose" + Me.btnClose.Size = New System.Drawing.Size(109, 25) + Me.btnClose.TabIndex = 4 + Me.btnClose.Text = "&Close" + Me.btnClose.UseVisualStyleBackColor = True + ' 'frmPenalties ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font - Me.ClientSize = New System.Drawing.Size(812, 359) + Me.ClientSize = New System.Drawing.Size(812, 388) Me.ControlBox = False Me.Controls.Add(Me.btnClose) Me.Controls.Add(Me.btnDeletePenalty) diff --git a/TCG+ Registration Helper/Tournament - Penalty Form.vb b/TCG+ Registration Helper/Tournament - Penalty Form.vb index 7c9466b..1d013f0 100644 --- a/TCG+ Registration Helper/Tournament - Penalty Form.vb +++ b/TCG+ Registration Helper/Tournament - Penalty Form.vb @@ -72,8 +72,9 @@ Using frmEditPenalty As New frmPenaltyDetail - Dim selectedPenalty As TournamentPenalty = lstPenalties(dgvPenalties.SelectedRows(0).Cells(0).Value) + frmEditPenalty.EditMode = True + Dim selectedPenalty As TournamentPenalty = lstPenalties(dgvPenalties.SelectedRows(0).Cells(0).Value) frmEditPenalty.cboPlayer.DataSource = New BindingSource(lstTournPlayers, Nothing) frmEditPenalty.cboPlayer.ValueMember = "MembershipNumber" @@ -94,6 +95,7 @@ frmEditPenalty.cboPenalty.SelectedValue = selectedPenalty.PenaltyType frmEditPenalty.txtPenaltyNotes.Text = selectedPenalty.Notes + If frmEditPenalty.ShowDialog(Me) = DialogResult.OK Then ' We are for sure, editing a penalty detail. diff --git a/TCG+ Registration Helper/frmMainMenu.Designer.vb b/TCG+ Registration Helper/frmMainMenu.Designer.vb index 2f41477..aba4b91 100644 --- a/TCG+ Registration Helper/frmMainMenu.Designer.vb +++ b/TCG+ Registration Helper/frmMainMenu.Designer.vb @@ -35,6 +35,7 @@ Partial Class frmMainMenu Me.OpenTournamentToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.CommaSeparatedValueFileToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.TournamentXMLxmlToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() + Me.MasterPlayerRosterToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripSeparator2 = New System.Windows.Forms.ToolStripSeparator() Me.CloseTournamentToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripSeparator3 = New System.Windows.Forms.ToolStripSeparator() @@ -58,7 +59,6 @@ Partial Class frmMainMenu Me.SoftwareOperatingManualToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.OpenFileDialogCSV = New System.Windows.Forms.OpenFileDialog() Me.OpenFileDialogXML = New System.Windows.Forms.OpenFileDialog() - Me.MasterPlayerRosterToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.MenuStrip1.SuspendLayout() Me.SuspendLayout() ' @@ -126,6 +126,12 @@ Partial Class frmMainMenu Me.TournamentXMLxmlToolStripMenuItem.Size = New System.Drawing.Size(257, 22) Me.TournamentXMLxmlToolStripMenuItem.Text = "&Tournament XML (.xml)" ' + 'MasterPlayerRosterToolStripMenuItem + ' + Me.MasterPlayerRosterToolStripMenuItem.Name = "MasterPlayerRosterToolStripMenuItem" + Me.MasterPlayerRosterToolStripMenuItem.Size = New System.Drawing.Size(181, 22) + Me.MasterPlayerRosterToolStripMenuItem.Text = "&Master Player Roster" + ' 'ToolStripSeparator2 ' Me.ToolStripSeparator2.MergeIndex = 1 @@ -275,12 +281,6 @@ Partial Class frmMainMenu ' Me.OpenFileDialogXML.Filter = "Tournament XML (*.xml)|*.xml|All Files (*.*)|*.*" ' - 'MasterPlayerRosterToolStripMenuItem - ' - Me.MasterPlayerRosterToolStripMenuItem.Name = "MasterPlayerRosterToolStripMenuItem" - Me.MasterPlayerRosterToolStripMenuItem.Size = New System.Drawing.Size(181, 22) - Me.MasterPlayerRosterToolStripMenuItem.Text = "&Master Player Roster" - ' 'frmMainMenu ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) @@ -293,7 +293,7 @@ Partial Class frmMainMenu Me.MinimumSize = New System.Drawing.Size(1118, 650) Me.Name = "frmMainMenu" Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen - Me.Text = "TCG+ Tournament Entry Manager" + Me.Text = "TCG+ Registration Helper" Me.MenuStrip1.ResumeLayout(False) Me.MenuStrip1.PerformLayout() Me.ResumeLayout(False) diff --git a/TCG+ Registration Helper/frmMainMenu.vb b/TCG+ Registration Helper/frmMainMenu.vb index bfbc5d1..8561610 100644 --- a/TCG+ Registration Helper/frmMainMenu.vb +++ b/TCG+ Registration Helper/frmMainMenu.vb @@ -41,7 +41,11 @@ Private Sub CommaSeparatedValueFileToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles CommaSeparatedValueFileToolStripMenuItem.Click - OpenFileDialogCSV.InitialDirectory = My.Computer.FileSystem.SpecialDirectories.MyDocuments + If Not String.IsNullOrWhiteSpace(My.Settings.LastUsedDirectory) AndAlso My.Computer.FileSystem.DirectoryExists(My.Settings.LastUsedDirectory) Then + OpenFileDialogCSV.InitialDirectory = My.Settings.LastUsedDirectory + Else + OpenFileDialogCSV.InitialDirectory = My.Computer.FileSystem.SpecialDirectories.MyDocuments + End If If (OpenFileDialogCSV.ShowDialog(Me) = DialogResult.OK) Then Dim FileName As String = OpenFileDialogCSV.FileName @@ -128,7 +132,11 @@ Private Sub TournamentXMLxmlToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles TournamentXMLxmlToolStripMenuItem.Click - OpenFileDialogXML.InitialDirectory = My.Computer.FileSystem.SpecialDirectories.MyDocuments + If Not String.IsNullOrWhiteSpace(My.Settings.LastUsedDirectory) Then + OpenFileDialogXML.InitialDirectory = My.Settings.LastUsedDirectory + Else + OpenFileDialogXML.InitialDirectory = My.Computer.FileSystem.SpecialDirectories.MyDocuments + End If If (OpenFileDialogXML.ShowDialog(Me) = System.Windows.Forms.DialogResult.OK) Then Dim FileName As String = OpenFileDialogXML.FileName