SemanticValue.ContainsKey(String) Methode

Definition

Gibt an, ob die aktuelle SemanticValue-Instanzauflistung eine untergeordnete SemanticValue-Instanz mit einer angegebenen Schlüsselzeichenfolge enthält.Indicates whether the current SemanticValue instance collection contains a child SemanticValue instance with a given key string.

public:
 virtual bool ContainsKey(System::String ^ key);
public bool ContainsKey (string key);
abstract member ContainsKey : string -> bool
override this.ContainsKey : string -> bool
Public Function ContainsKey (key As String) As Boolean

Parameter

key
String

Die String, welche die Schlüsselzeichenfolge enthält, die zur Identifizierung einer untergeordneten Instanz von SemanticValue verwendet wird unter der aktuellen SemanticValue.String containing the key string used to identify a child instance of SemanticValue under the current SemanticValue.

Gibt zurück

Gibt bool, true zurück, wenn eine untergeordnete Instanz SemanticValue, die mit der Zeichenfolge key markiert wird, gefunden wird. Wenn nicht, wird false zurückgegeben.Returns a bool, true if a child instance SemanticValue tagged with the string key is found, false if not.

Implementiert

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.

Nach der Verarbeitung von Ausdrücken, die erkannt werden, aber keine semantische Struktur aufweisen, prüft der Handler, ob ContainsKey geeigneteapplyChgToBackgroundSchlüssel colorRGBValueListmit ( colorStringList), oder) vorhanden sind, und verarbeitet dann die semantisch organisierten Daten.After handling phrases that are recognized but have no semantic structure, the handler checks for the presence of appropriate keys using ContainsKey (applyChgToBackground, colorRGBValueList, or colorStringList), and then processes the semantically organized data.

  
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 semantics 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 Foreground.  
      if (ForeColor.GetBrightness() <= .50)   
      {  
        BackColor = Color.White;  
      }  
      else   
      {  
        BackColor = Color.Black;  
      }  
    }  
    return;  
  };  

Hinweise

Sie können zur Laufzeit nur auf Daten nach Schlüsselwert zugreifen, z. b . um Semantic ["MyKey"] zu überprüfen. , Und hierdurch wird eine Ausnahme generiert.You can only access data by key value at runtime, for example to check semantic["myKey"].Value, and this generates an exception. Es wird empfohlen, dass Sie das- ContainsKey Objekt mit Item[String] Abfragen, bevor Sie mit SemanticValueeiner bestimmten Instanz von verwenden.We recommend that you query the object with ContainsKey before using Item[String] with a given instance of SemanticValue.

Gilt für: