SemanticValue.ContainsKey(String) Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Gibt an, ob die aktuelle SemanticValue-Instanzauflistung eine untergeordnete SemanticValue-Instanz mit einer angegebenen Schlüsselzeichenfolge enthält.
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.
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.
Implementiert
Beispiele
Das folgende Beispiel zeigt einen Handler für ein SpeechRecognized Ereignis, das zum Verarbeiten von Befehlen zum Ändern der Vordergrund- und Hintergrundfarbe entwickelt wurde.
Nach der Behandlung von Ausdrücken, die erkannt werden, aber keine semantische Struktur aufweisen, überprüft der Handler mithilfe ContainsKey von (applyChgToBackground
, , colorRGBValueList
oder colorStringList)
) auf das Vorhandensein geeigneter Schlüssel und verarbeitet dann die semantisch organisierten Daten.
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 nach Schlüsselwert auf Daten zugreifen, um z. B. die Semantik["myKey"] zu überprüfen. Wert, und dadurch wird eine Ausnahme generiert. Es wird empfohlen, dass Sie das -Objekt mit ContainsKey abfragen, bevor Sie mit einer bestimmten instance von SemanticValueverwendenItem[].