Share via


SemanticValue.ContainsKey(String) Yöntem

Tanım

Geçerli SemanticValue örnek koleksiyonunun belirli bir anahtar dizesine sahip bir alt SemanticValue örnek içerip içermediğini gösterir.

public:
 virtual bool ContainsKey(System::String ^ key);
public bool ContainsKey (string key);
abstract member ContainsKey : string -> bool
override this.ContainsKey : string -> bool
Public Function ContainsKey (key As String) As Boolean

Parametreler

key
String

String, geçerli SemanticValuealtında alt örneğini SemanticValue tanımlamak için kullanılan anahtar dizesini içerir.

Döndürülenler

Dizeyle etiketlenmiş bir alt örnek SemanticValue bulunursa ( yoksa) false döndürürbooltrue.key

Uygulamalar

Örnekler

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

Tanınan ancak anlamsal yapısı olmayan tümcecikleri işledikten sonra, işleyici (applyChgToBackground, colorRGBValueListveya colorStringList)) kullanarak ContainsKey uygun anahtarların varlığını denetler ve ardından anlamsal olarak düzenlenmiş verileri işler.

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 semantics 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 Foreground.  
      if (ForeColor.GetBrightness() <= .50)   
      {  
        BackColor = Color.White;  
      }  
      else   
      {  
        BackColor = Color.Black;  
      }  
    }  
    return;  
  };  

Açıklamalar

Verilere çalışma zamanında yalnızca anahtar değerine göre erişebilirsiniz; örneğin semantiği denetlemek için["myKey"]. değeridir ve bu bir özel durum oluşturur. Belirli bir örneğiyle SemanticValuekullanmadan Item[] önce nesnesini ile ContainsKey sorgulamanızı öneririz.

Şunlara uygulanır