/// <summary> /// /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void TagItemClicked(Tag Tag, bool Checked) { Guid TagId = Tag.Id; if (TagIdsInternal.Contains(TagId)) { TagIdsInternal.Remove(TagId); } else { if (!MultipleTags) { TagIdsInternal.Clear(); } TagIdsInternal.Add(TagId); } OnTagsChanged?.Invoke(this, new EventArgs()); UpdateState(); }
/// <summary> /// /// </summary> public void UpdateState() { // Add any pending tags. if (TagBuilder.HasTags) { foreach (string name in AddTagNames) { foreach (Tag Tag in TagBuilder.Tags) { if (Tag.Name.Equals(name, StringComparison.InvariantCultureIgnoreCase)) { TagIdsInternal.Add(Tag.Id); OnTagsChanged?.Invoke(this, new EventArgs()); break; } } } AddTagNames.Clear(); // Remove any tags that no longer exist. for (int i = 0; i < TagIdsInternal.Count; i++) { Guid id = TagIdsInternal[i]; bool exists = false; foreach (Tag tag in TagBuilder.Tags) { if (tag.Id == id) { exists = true; break; } } if (!exists) { TagIdsInternal.RemoveAt(i); i--; } } } // Update the text. /* * string Result = ""; * foreach (Tag Tag in TagBuilder.Tags) * { * if (TagIdsInternal.Contains(Tag.Id)) * { * if (Result.Length > 0) * { * Result += ", "; * } * Result += Tag.Name; * } * } * MainTextBox.Text = Result; */ Invalidate(); // Set what is checked. TagBuilder.SetCheckedTags(TagIdsInternal); }