SemanticValue.Item[String] Свойство

Определение

Возвращает дочерние экземпляры SemanticValue, относящиеся к текущему SemanticValue.Returns child SemanticValue instances that belong to the current SemanticValue.

public:
 property System::Speech::Recognition::SemanticValue ^ default[System::String ^] { System::Speech::Recognition::SemanticValue ^ get(System::String ^ key); void set(System::String ^ key, System::Speech::Recognition::SemanticValue ^ value); };
public System.Speech.Recognition.SemanticValue this[string key] { get; set; }
member this.Item(string) : System.Speech.Recognition.SemanticValue with get, set
Default Public Property Item(key As String) As SemanticValue

Параметры

key
String

Ключ для KeyValuePair<String, SemanticValue>, содержащийся в текущем экземпляре SemanticValue.A key for a KeyValuePair<String, SemanticValue> contained in the current instance of SemanticValue.

Значение свойства

Возвращает дочерний объект текущего SemanticValue объекта, который может индексироваться как часть пары "ключ-значение": Строка<KeyValuePair,SemanticValue>.Returns a child of the current SemanticValue that can be indexed as part of a key value pair: KeyValuePair<String,SemanticValue>.

Реализации

Исключения

Вызывается, если ни один дочерний элемент текущего экземпляра SemanticValue не имеет ключа, соответствующего параметру key.Thrown if no child member of the current instance of SemanticValue has the key matching the key parameter.

Возникает, если код пытается изменить SemanticValue по заданному индексу.Thrown if code attempts to change the SemanticValue at a given index.

Примеры

В следующем примере показан обработчик SpeechRecognized события, предназначенного для обработки команд для изменения цвета переднего плана и фона.The following example shows a handler for a SpeechRecognized event designed to handle commands to change foreground and background color.

После обработки распознанных фраз, не имеющих семантической структуры, обработчик ContainsKey проверяет наличие соответствующих ключей с помощью (applyChgToBackground, colorRGBValueListили colorStringList), а затем использует Item[String] свойство для получения узлов. с необходимыми сведениями.After handling recognized phrases that have no semantic structure, the handler checks for the presence of appropriate keys using ContainsKey (applyChgToBackground, colorRGBValueList, or colorStringList), and then uses the Item[String] property to obtain the nodes with needed information.

Использование Item[String] выделено ниже.The use of Item[String] is highlighted below.

  
newGrammar.SpeechRecognized +=  
  delegate(object sender, SpeechRecognizedEventArgs eventArgs)   
  {  
  
    // Retrieve the value of the semantic property.  
    bool changeBackGround = true;  
    string errorString = "";  
    SemanticValue semantics = eventArgs.Result.Semantics;  
  
    Color newColor = Color.Empty;  
  
    try   
    {  
      if (semantics.Count == 0 && semantics.Value==null)  
      {  
        // Signifies recognition by a grammar with no semantics.  
        // Parse the string, assuming that the last word is color,  
        //  searching for background or foreground in input.  
        if (eventArgs.Result.Text.Contains("foreground"))   
        {  
          changeBackGround = false;  
        }  
        string cName = eventArgs.Result.Words[eventArgs.Result.Words.Count - 1].Text;  
        newColor = Color.FromName(cName);  
  
      }  
      else if (semantics.ContainsKey("colorStringList") ^ semantics.ContainsKey("colorRGBValueList"))   
      {  
  
        // Determine whether to change background or foreground.  
        if (semantics.ContainsKey("applyChgToBackground"))   
        {  
          changeBackGround = semantics["applyChgToBackground"].Value is bool;  
        }  
  
        // Get the RGB color value.  
        if (semantics.ContainsKey("colorStringList"))   
        {  
          newColor = Color.FromName((string)semantics["colorStringList"].Value);  
        }  
        if (semantics.ContainsKey("colorRGBValueList"))   
        {  
          newColor = System.Drawing.Color.FromArgb((int)semantics["colorRGBValueList"].Value);  
        }  
      }  
      else   
      {  
  
        // Throw an exception if the semantics do not contain the keys we  
        // support.  
        throw(new Exception("Unsupported semantic keys found."));  
      }  
    }  
  
    catch (Exception exp)   
    {  
      MessageBox.Show(String.Format("Unable to process color semantics.:\n{0}\n", exp.Message));  
      return;  
    }  
  
    // Change colors, either foreground or background.  
    if (changeBackGround)   
    {  
      BackColor = newColor;  
      float Bright = BackColor.GetBrightness();  
      float Hue = BackColor.GetHue();  
      float Sat = BackColor.GetSaturation();  
      // Make sure that text is readable regardless of background.  
      if (BackColor.GetBrightness() <= .50)   
      {  
        ForeColor = Color.White;  
      }  
      else   
      {  
        ForeColor = Color.Black;  
      }  
    }  
    else   
    {  
      ForeColor = newColor;  
      float Bright = ForeColor.GetBrightness();  
      float Hue = ForeColor.GetHue();  
      float Sat = ForeColor.GetSaturation();  
  
      // Make sure that text is readable regardless of the foreground.  
      if (ForeColor.GetBrightness() <= .50)   
      {  
        BackColor = Color.White;  
      }  
      else   
      {  
        BackColor = Color.Black;  
      }  
    }  
    return;  
  };  

Комментарии

Объект Item[String] доступен только для чтения и создает исключения при изменении элементов.The Item[String] is read-only and generates exceptions if members are modified.

Доступ к данным можно получить только по значению ключа во время выполнения, а не во время компиляции, например для проверки semantic["myKey"].Value.You can only access data by key value at run-time, not at compile-time, for example to check semantic["myKey"].Value. Указание несуществующего ключа создает исключение.Specifying a key that is not present generates an exception.

Чтобы обнаружить присутствие данного ключа, используйте ContainsKey свойство SemanticValue в экземпляре.To detect the presence of a given key, use the ContainsKey property on an SemanticValue instance.

Применяется к