SemanticValue.Item[String] Eigenschaft

Definition

Gibt untergeordnete SemanticValue-Instanzen zurück, die zu dem aktuellen Element SemanticValue gehören.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

Parameter

key
String

Ein Schlüssel für einen KeyValuePair<String, SemanticValue>-Wert, der in der aktuellen Instanz von SemanticValue enthalten ist.A key for a KeyValuePair<String, SemanticValue> contained in the current instance of SemanticValue.

Eigenschaftswert

Gibt ein untergeordnetes Element des SemanticValue aktuellen zurück, das als Teil eines Schlüssel-Wert-Paars indiziert werden kann: KeyValuePair<String,SemanticValue>.Returns a child of the current SemanticValue that can be indexed as part of a key value pair: KeyValuePair<String,SemanticValue>.

Implementiert

Ausnahmen

Wird ausgelöst, wenn kein untergeordneter Member der aktuellen Instanz von SemanticValue über den Schlüssel verfügt, der dem key-Parameter entspricht.Thrown if no child member of the current instance of SemanticValue has the key matching the key parameter.

Wird ausgelöst, wenn Code versucht, SemanticValue an einem angegebenen Index zu ändern.Thrown if code attempts to change the SemanticValue at a given index.

Beispiele

Das folgende Beispiel zeigt einen Handler für ein SpeechRecognized -Ereignis, das zum Behandeln von Befehlen zum Ändern der Vordergrund-und Hintergrundfarbe entworfen wurde.The following example shows a handler for a SpeechRecognized event designed to handle commands to change foreground and background color.

Nachdem Sie erkannte Ausdrücke verarbeitet haben, die keine semantische Struktur aufweisen, prüft der Handler, ob geeignete ContainsKey SchlüsselapplyChgToBackgroundvorhanden colorRGBValueListsind. colorStringList)dabei wird (, oder Item[String] ) verwendet, und anschließend wird die-Eigenschaft verwendet, um die Knoten abzurufen. mit den erforderlichen Informationen.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.

Die Verwendung von Item[String] wird unten hervorgehoben.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;  
  };  

Hinweise

Der Item[String] ist schreibgeschützt und generiert Ausnahmen, wenn Elemente geändert werden.The Item[String] is read-only and generates exceptions if members are modified.

Sie können nur zur Laufzeit und nicht zur Kompilierzeit auf die Daten zugreifen, z. b. zur Überprüfung 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. Wenn Sie einen Schlüssel angeben, der nicht vorhanden ist, wird eine Ausnahme generiert.Specifying a key that is not present generates an exception.

Um das vorhanden sein eines bestimmten Schlüssels zu erkennen, verwenden ContainsKey Sie die- SemanticValue Eigenschaft für eine-Instanz.To detect the presence of a given key, use the ContainsKey property on an SemanticValue instance.

Gilt für: