SemanticValue.ContainsKey(String) Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Wskazuje, czy bieżąca SemanticValue kolekcja wystąpień zawiera wystąpienie SemanticValue podrzędne z danym ciągiem klucza.
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
Parametry
- key
- String
String zawierający ciąg klucza używany do identyfikowania wystąpienia podrzędnego SemanticValue klasy w bieżącej wartości SemanticValue .
Zwraca
Zwraca wartość , jeśli wystąpienie podrzędne oznaczone ciągiem bool true zostanie SemanticValue key znalezione, jeśli false nie.
Implementuje
Przykłady
Poniższy przykład przedstawia program obsługi dla zdarzenia przeznaczonego do obsługi poleceń zmiany pierwszego SpeechRecognized planu i koloru tła.
Po obsłudze fraz, które są rozpoznawane, ale nie mają struktury semantycznej, procedura obsługi sprawdza obecność odpowiednich kluczy przy użyciu ( , lub , a następnie przetwarza dane ContainsKey applyChgToBackground semantycznie colorRGBValueList colorStringList) zorganizowane.
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;
};
Uwagi
Dostęp do danych można uzyskać tylko według wartości klucza w czasie wykonywania, na przykład w celu sprawdzenia semantyki ["myKey"]. Wartość, a to generuje wyjątek. Zalecamy, aby przed użyciem funkcji z danym wystąpieniem obiektu odpytać obiekt za pomocą ContainsKey Item[] polecenia SemanticValue .