SemanticValue.ContainsKey(String) Metod

Definition

Anger om den aktuella SemanticValue instanssamlingen innehåller en underordnad SemanticValue instans med en viss nyckelsträng.

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

Parametrar

key
String

String innehåller nyckelsträngen som används för att identifiera en underordnad instans av SemanticValue under den aktuella SemanticValue.

Returer

Returnerar en bool, true om en underordnad instans SemanticValue som är taggad med strängen key hittas, false om inte.

Implementeringar

Exempel

I följande exempel visas en hanterare för en SpeechRecognized händelse som är utformad för att hantera kommandon för att ändra förgrunds- och bakgrundsfärg.

När du har hanterat fraser som känns igen men inte har någon semantisk struktur kontrollerar hanteraren om det finns lämpliga nycklar med hjälp ContainsKey av (applyChgToBackground, colorRGBValueListeller colorStringList)och sedan bearbetar de semantiskt ordnade 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;
  };

Kommentarer

Du kan bara komma åt data efter nyckelvärde vid körning, till exempel för att kontrollera semantik["myKey"]. Värde och detta genererar ett undantag. Vi rekommenderar att du kör frågor mot objektet innan ContainsKey du använder Item[] med en viss instans av SemanticValue.

Gäller för