SemanticValue.Item[String] Eigenschaft

Definition

Gibt untergeordnete SemanticValue Instanzen zurück, die zum aktuellen SemanticValuegehören.

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.

Eigenschaftswert

Gibt ein untergeordnetes Element des aktuellen SemanticValue zurück, das als Teil eines Schlüsselwertpaars indiziert werden kann: KeyValuePair<String,SemanticValue>.

Implementiert

Ausnahmen

Kein untergeordnetes Element der aktuellen instance von SemanticValue verfügt über einen Schlüssel, der mit dem key Parameter übereinstimmt.

Code hat versucht, den SemanticValue am angegebenen Index zu ändern.

Beispiele

Das folgende Beispiel zeigt einen Handler für ein SpeechRecognized Ereignis, das zum Verarbeiten von Befehlen zum Ändern der Vordergrund- und Hintergrundfarbe entwickelt wurde.

Nach der Behandlung von erkannten Ausdrücken, die keine semantische Struktur aufweisen, überprüft der Handler mithilfe ContainsKey von (applyChgToBackground, colorRGBValueListoder colorStringList)) auf das Vorhandensein geeigneter Schlüssel und verwendet dann die Item[] -Eigenschaft, um die Knoten mit den erforderlichen Informationen abzurufen.

Die Verwendung von Item[] ist unten hervorgehoben.

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

ist Item[] schreibgeschützt und generiert Ausnahmen, wenn Member geändert werden.

Sie können nur nach Schlüsselwert zur Laufzeit und nicht zur Kompilierzeit auf Daten zugreifen, um z. B. zu überprüfen semantic["myKey"].Value. Wenn Sie einen Schlüssel angeben, der nicht vorhanden ist, wird eine Ausnahme generiert.

Um das Vorhandensein eines bestimmten Schlüssels zu erkennen, verwenden Sie die ContainsKey -Eigenschaft für eine SemanticValue instance.

Gilt für: