Compartir a través de


SemanticValue.Item[String] Propiedad

Definición

SemanticValue Devuelve instancias secundarias que pertenecen al objeto actualSemanticValue.

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

Parámetros

key
String

Clave para KeyValuePair<String, SemanticValue> contenido en la instancia actual de SemanticValue.

Valor de propiedad

Devuelve un elemento secundario del actual SemanticValue que se puede indexar como parte de un par de valores de clave: KeyValuePair<String,SemanticValue>.

Implementaciones

Excepciones

Ningún miembro secundario de la instancia actual de SemanticValue tiene una clave que coincida con el key parámetro .

El código intentó cambiar en SemanticValue el índice especificado.

Ejemplos

En el ejemplo siguiente se muestra un controlador para un SpeechRecognized evento diseñado para controlar los comandos para cambiar el color de primer plano y de fondo.

Después de controlar las frases reconocidas que no tienen estructura semántica, el controlador comprueba la presencia de claves adecuadas mediante ContainsKey (, o colorStringList)y, a continuación, colorRGBValueListusa la Item[] propiedad para obtener los nodos conapplyChgToBackground la información necesaria.

El uso de Item[] se resalta a continuación.

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

Comentarios

Item[] es de solo lectura y genera excepciones si se modifican los miembros.

Solo puede acceder a los datos por valor de clave en tiempo de ejecución, no en tiempo de compilación, por ejemplo para comprobar semantic["myKey"].Value. Si se especifica una clave que no está presente, se genera una excepción.

Para detectar la presencia de una clave determinada, use la ContainsKey propiedad en una SemanticValue instancia de .

Se aplica a