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ří k aktuálnímu SemanticValueobjektu .
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 KeyValuePair<String, SemanticValue>
objekt obsažený v aktuální instanci objektu SemanticValue.
Hodnota vlastnosti
Vrátí podřízenou hodnotu aktuálního stavu SemanticValue , který lze indexovat jako součást páru hodnot klíčů: 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 SemanticValue hodnotu v zadaném indexu.
Příklady
Následující příklad ukazuje obslužnou rutinu pro událost určenou SpeechRecognized ke zpracování příkazů pro změnu barvy popředí a pozadí.
Po zpracování rozpoznaných frází, které nemají žádnou sémantickou strukturu, obslužná rutina pomocí (applyChgToBackground
, colorRGBValueList
nebo colorStringList)
) zkontroluje přítomnost příslušných klíčů ContainsKey a pak použije Item[] vlastnost k získání uzlů s potřebnými informacemi.
Použití Item[] je zvýrazněné 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 při změně členů generuje výjimky.
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, vygeneruje výjimku.
Pokud chcete zjistit přítomnost daného klíče, použijte ContainsKey vlastnost v SemanticValue instanci.