SemanticValue.Item[String] Egenskap

Definition

Returnerar underordnade SemanticValue instanser som tillhör den aktuella 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

Parametrar

key
String

En nyckel för en KeyValuePair<String, SemanticValue> som finns i den aktuella instansen av SemanticValue.

Egenskapsvärde

Returnerar en underordnad till den aktuella SemanticValue som kan indexeras som en del av ett nyckelvärdepar: KeyValuePair<String,SemanticValue>.

Implementeringar

Undantag

Ingen underordnad medlem i den aktuella instansen av SemanticValue har en nyckel som matchar parametern key .

Koden försökte ändra SemanticValue vid det angivna indexet.

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 identifierade fraser som inte har någon semantisk struktur söker hanteraren efter förekomst av lämpliga nycklar med hjälp ContainsKey av (applyChgToBackground, colorRGBValueListeller colorStringList), och använder Item[] sedan egenskapen för att hämta noderna med nödvändig information.

Användningen av Item[] är markerad nedan.

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;
  };

Kommentarer

Item[] är skrivskyddad och genererar undantag om medlemmar ändras.

Du kan bara komma åt data efter nyckelvärde vid körning, inte vid kompilering, till exempel för att kontrollera semantic["myKey"].Value. Om du anger en nyckel som inte finns genereras ett undantag.

Om du vill identifiera förekomsten av en viss nyckel använder du egenskapen ContainsKey på en SemanticValue instans.

Gäller för