SemanticValue.Item[String] Propiedad
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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, colorRGBValueList
usa 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 .