SemanticValue.Item[String] Eigenschap
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Retourneert onderliggende SemanticValue exemplaren die deel uitmaken van de huidige 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
Parameters
- key
- String
Een sleutel voor een KeyValuePair<String, SemanticValue> in het huidige exemplaar van SemanticValue.
Waarde van eigenschap
Retourneert een onderliggend element van de huidige SemanticValue dat kan worden geïndexeerd als onderdeel van een sleutelwaardepaar: KeyValuePair<String,SemanticValue>.
Implementeringen
Uitzonderingen
Geen onderliggend lid van het huidige exemplaar heeft SemanticValue een sleutel die overeenkomt met de key parameter.
Code heeft geprobeerd de SemanticValue opgegeven index te wijzigen.
Voorbeelden
In het volgende voorbeeld ziet u een handler voor een SpeechRecognized gebeurtenis die is ontworpen voor het afhandelen van opdrachten om de voorgrond- en achtergrondkleur te wijzigen.
Nadat herkende woordgroepen zonder semantische structuur zijn verwerkt, controleert de handler op de aanwezigheid van de juiste sleutels met behulp ContainsKey van (applyChgToBackgroundcolorRGBValueListof, ofcolorStringList), en gebruikt de Item[] eigenschap vervolgens om de knooppunten met de benodigde informatie te verkrijgen.
Hieronder wordt het gebruik Item[] ervan gemarkeerd.
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;
};
Opmerkingen
Het Item[] is alleen-lezen en genereert uitzonderingen als leden worden gewijzigd.
U hebt alleen toegang tot gegevens per sleutelwaarde tijdens runtime, niet tijdens het compileren, bijvoorbeeld om te controleren semantic["myKey"].Value. Als u een sleutel opgeeft die niet aanwezig is, wordt er een uitzondering gegenereerd.
Als u de aanwezigheid van een bepaalde sleutel wilt detecteren, gebruikt u de ContainsKey eigenschap op een SemanticValue exemplaar.