SemanticValue.ContainsKey(String) SemanticValue.ContainsKey(String) SemanticValue.ContainsKey(String) SemanticValue.ContainsKey(String) Method

정의

현재 SemanticValue 인스턴스 컬렉션이 지정된 키 문자열과 함께 자식 SemanticValue 인스턴스를 포함하는지 여부를 나타냅니다.Indicates whether the current SemanticValue instance collection contains a child SemanticValue instance with a given key string.

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

매개 변수

key
String String String String

현재 String에서 SemanticValue의 자식 인스턴스를 식별하는데 사용하는 키 문자열이 포함된 SemanticValueString containing the key string used to identify a child instance of SemanticValue under the current SemanticValue.

반환

bool이 반환됩니다. key가 발견된 문자열과 태그된 자식 인스턴스 SemanticValue인 경우 true이고, 그렇지 않으면 false 입니다.Returns a bool, true if a child instance SemanticValue tagged with the string key is found, false if not.

구현

예제

다음 예제에 대 한 처리기를 SpeechRecognized 이벤트 전경색과 배경색을 변경 하는 명령 처리 하도록 설계 되었습니다.The following example shows a handler for a SpeechRecognized event designed to handle commands to change foreground and background color.

구 인식 되는 구조가 없는데 의미 체계를 처리 한 후 처리기를 사용 하 여 적절 한 키의 존재 여부 확인 ContainsKey (applyChgToBackground, colorRGBValueList, 또는 colorStringList), 기능적으로 구성 된 데이터를 처리 합니다.After handling phrases that are recognized but have no semantic structure, the handler checks for the presence of appropriate keys using ContainsKey (applyChgToBackground, colorRGBValueList, or colorStringList), and then processes the semantically organized data.


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

설명

예를 확인 하려면 런타임에 키 값으로 데이터를만 액세스할 수 있습니다 의미 체계 ["myKey"]입니다. 값,이 예외를 발생 합니다.You can only access data by key value at runtime, for example to check semantic["myKey"].Value, and this generates an exception. 사용 하 여 개체를 쿼리 하는 것이 좋습니다 ContainsKey 사용 하기 전에 Item[String] 의 특정된 인스턴스와 함께 SemanticValue입니다.We recommend that you query the object with ContainsKey before using Item[String] with a given instance of SemanticValue.

적용 대상