SemanticValue.Item[String] Properti

Definisi

Mengembalikan instans anak SemanticValue yang termasuk dalam .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

Parameter

key
String

Kunci untuk yang KeyValuePair<String, SemanticValue> terkandung dalam instans saat ini dari SemanticValue.

Nilai Properti

Mengembalikan anak dari saat ini SemanticValue yang dapat diindeks sebagai bagian dari pasangan nilai kunci: KeyValuePair<String,SemanticValue>.

Penerapan

Pengecualian

Tidak ada anggota anak dari instans SemanticValue saat ini yang memiliki kunci yang cocok dengan key parameter .

Kode mencoba mengubah pada SemanticValue indeks yang ditentukan.

Contoh

Contoh berikut menunjukkan handler untuk peristiwa yang SpeechRecognized dirancang untuk menangani perintah untuk mengubah warna latar depan dan latar belakang.

Setelah menangani frasa yang dikenali yang tidak memiliki struktur semantik, handler memeriksa keberadaan kunci yang sesuai menggunakan ContainsKey (applyChgToBackground, colorRGBValueList, atau colorStringList), dan kemudian menggunakan Item[] properti untuk mendapatkan simpul dengan informasi yang diperlukan.

Penggunaan Item[] disorot di bawah ini.

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

Keterangan

Item[] bersifat baca-saja dan menghasilkan pengecualian jika anggota dimodifikasi.

Anda hanya dapat mengakses data berdasarkan nilai kunci pada run-time, bukan pada waktu kompilasi, misalnya untuk memeriksa semantic["myKey"].Value. Menentukan kunci yang tidak ada menghasilkan pengecualian.

Untuk mendeteksi keberadaan kunci tertentu, gunakan ContainsKey properti pada SemanticValue instans.

Berlaku untuk