Share via


SemanticValue.Item[String] Özellik

Tanım

Geçerli SemanticValueöğesine ait alt SemanticValue örnekleri döndürür.

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

Parametreler

key
String

geçerli örneğinde SemanticValuebulunan için bir KeyValuePair<String, SemanticValue> anahtar.

Özellik Değeri

Bir anahtar değer çiftinin parçası olarak dizine alınabilen geçerlinin SemanticValue alt öğesini döndürür: KeyValuePair<String,SemanticValue>.

Uygulamalar

Özel durumlar

geçerli örneğinin SemanticValue alt üyesinin parametresiyle key eşleşen bir anahtarı yok.

Kod, belirtilen dizinde öğesini SemanticValue değiştirmeye çalıştı.

Örnekler

Aşağıdaki örnekte, ön plan ve arka plan rengini değiştirmek için komutları işlemek üzere tasarlanmış bir SpeechRecognized olaya yönelik işleyici gösterilmektedir.

Semantik yapısı olmayan tanınan tümcecikleri işledikten sonra, işleyici (, veya colorStringList)) kullanarak ContainsKey uygun anahtarların varlığını denetler ve ardından gerekli bilgileri içeren düğümleri almak için özelliğini kullanır.Item[]colorRGBValueListapplyChgToBackground

kullanımı Item[] aşağıda vurgulanır.

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;  
  };  

Açıklamalar

Item[] salt okunurdur ve üyeler değiştirilirse özel durumlar oluşturur.

Verilere yalnızca çalışma zamanında anahtar değerine göre erişebilirsiniz, derleme zamanında erişemezsiniz, örneğin denetlemek için semantic["myKey"].Value. Mevcut olmayan bir anahtarın belirtilmesi özel durum oluşturur.

Belirli bir anahtarın varlığını algılamak için bir örnekte özelliğini ContainsKeySemanticValue kullanın.

Şunlara uygulanır