SemanticValue.Item[String] Vlastnost
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Vrátí podřízené SemanticValue instance, které patří do aktuálního 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
Parametry
- key
- String
Klíč pro obsaženou KeyValuePair<String, SemanticValue> v aktuální instanci SemanticValue.
Hodnota vlastnosti
Vrátí podřízenou hodnotu aktuálního, SemanticValue který lze indexovat jako součást páru klíč-hodnota: KeyValuePair<String,SemanticValue>.
Implementuje
Výjimky
Žádný podřízený člen aktuální instance SemanticValue nemá klíč odpovídající parametru key .
Kód se pokusil změnit v zadaném indexu SemanticValue .
Příklady
Následující příklad ukazuje obslužnou rutinu pro událost navrženou SpeechRecognized pro zpracování příkazů pro změnu popředí a barvy pozadí.
Po zpracování rozpoznaných frází, které nemají žádnou sémantickou strukturu, obslužná rutina zkontroluje přítomnost příslušných klíčů pomocí ContainsKey (applyChgToBackgroundcolorRGBValueListnebo ) colorStringList)a pak pomocí Item[] vlastnosti získá uzly s potřebnými informacemi.
Použití Item[] je zvýrazněno níže.
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;
};
Poznámky
Je Item[] jen pro čtení a generuje výjimky, pokud jsou členy změněny.
K datům můžete přistupovat pouze podle hodnoty klíče za běhu, nikoli v době kompilace, například ke kontrole semantic["myKey"].Value. Zadání klíče, který není k dispozici, generuje výjimku.
Pokud chcete zjistit přítomnost daného klíče, použijte ContainsKey vlastnost v SemanticValue instanci.