public IndexItem(string text) { if (string.IsNullOrEmpty(text)) { throw new ArgumentNullException("text"); } m_Text = text; string[] parts = text.Split('%'); m_Word = parts[0]; m_ToString = this.Word; for (int i = 2; i < parts.Length; ++i) { m_ToString += (i == 2 ? " " : "; "); m_ToString += PartSpeechUtil.GetReadableName((EE)parts[i].Substring(0, 1)[0]); // +"."; } }
private void AddCardToWordNode(TreeNode tnRootWord, Card card, int partSpeechCounter) { string cardCaption; if (partSpeechCounter > 0) // значит это самые верхние узлы { String _partSpeechCounterString = GetFineLength((partSpeechCounter++).ToString() + ")", 5); if (card.CountOfUsage > 0) // && показывать кол-во употреблений { string usage = GetFineLength(card.CountOfUsage.ToString(), 4); // usage.Length == 6 cardCaption = string.Format("{0}-{2} {1}", _partSpeechCounterString, card.Synonyms, usage); } else { cardCaption = string.Format("{0} {2} {1}", _partSpeechCounterString, card.Synonyms, " "); // " ".length = 6 } } else // это вложенные узлы { cardCaption = string.Format("{0} {1} ", PartSpeechUtil.GetReadableName(card.PartSpeech), card.Synonyms); } RichTreeNode partSpeechNode = new RichTreeNode(cardCaption, this.tv1.Font); tnRootWord.Nodes.Add(partSpeechNode); partSpeechNode.ToolTipText = card.ToolTipText; partSpeechNode.ToolTipStore = card.ToolTipText; partSpeechNode.Tag = card; // Meanings foreach (string mean in card.Meanings) { partSpeechNode.Nodes.Add(mean); } // Examples if (card.Examples.Length > 0) { foreach (string ex in card.Examples) { partSpeechNode.Nodes.Add(new RichTreeNode(ex, m_FontForExample)); //if (card.Examples.Length == 1) //{ // partSpeechNode.Nodes.Add(new RichTreeNode("example: " + card.Examples[0])); // // partSpeechNode.Nodes.Add(new RichTreeNode(card.Examples[0])); //} //else //{ // TreeNode examples = partSpeechNode.Nodes.Add("examples:"); // examples.Nodes.Add(new RichTreeNode(ex)); // examples.ExpandAll(); //} } } // delayNodes - antonym, see also ..... Dictionary <string, RichTreeNode> delayNodes = new Dictionary <string, RichTreeNode> { }; foreach (Card delayCard in card.Childs.Keys) { string delayNodeName = card.Childs[delayCard]; RichTreeNode delayNode = null; delayNodes.TryGetValue(delayNodeName, out delayNode); if (delayNode == null) // если не нашли в коллекции то создадим { delayNode = new RichTreeNode(delayNodeName, m_FontForServiceNode); partSpeechNode.Nodes.Add(delayNode); delayNodes.Add(delayNodeName, delayNode); } delayNode.Tag = new List <Card> { }; ((List <Card>)delayNode.Tag).Add(delayCard); delayNode.Nodes.Add(this.sProcessingCaption); // обязательно надо ProcessingCaption, иначе незаполненный узел будет помечатся для тренажера } }