{"id":3038,"date":"2011-06-07T10:06:00","date_gmt":"2011-06-07T18:06:00","guid":{"rendered":"http:\/\/www.sapien.com\/blog\/?p=3038"},"modified":"2016-02-18T13:49:17","modified_gmt":"2016-02-18T21:49:17","slug":"primalforms-2011-spotlight-on-the-button-control","status":"publish","type":"post","link":"https:\/\/dev.sapien.com\/blog\/2011\/06\/07\/primalforms-2011-spotlight-on-the-button-control\/","title":{"rendered":"Spotlight on the Button Control"},"content":{"rendered":"<p>The <em><a href=\"https:\/\/www.sapien.com\/blog\/topics\/spotlight-on-controls\/\" target=\"_blank\">Spotlight on Controls<\/a><\/em> series describes the <i>controls<\/i>, that is, the objects in the System.Windows.Forms namespace, so you can use them effectively when building GUI apps in PowerShell Studio and PrimalScript.<\/p>\n<p>Each post focuses on one control and lists its most important properties, methods, and events, including the default event that PowerShell Studio adds to your script when you double-click the control. The posts include many examples written in Windows PowerShell, so you can use them right away.<\/p>\n<p>Read more: <a href=\"https:\/\/www.sapien.com\/blog\/2011\/06\/01\/primalforms-2011-spotlight-on-controls\/\">Shared properties of GUI app controls<\/a><\/p>\n<p>This post describes the Button control.<\/p>\n<h1>Button Control [System.Windows.Forms.Button]<\/h1>\n<p>Creates a clickable button. Used to initiate or end an action.<\/p>\n<ul>\n<li>MSDN Page: <a href=\"https:\/\/msdn.microsoft.com\/en-us\/library\/system.windows.forms.button(v=vs.110).aspx\" target=\"_blank\">System.Windows.Forms.Button<\/a><\/li>\n<li>Default Event: <a href=\"#Click\">Click<\/a><\/li>\n<\/ul>\n<p style=\"padding-left: 30px;\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;\" title=\"image\" src=\"http:\/\/www.sapien.com\/blog\/wp-content\/uploads\/2011\/06\/image.png\" alt=\"image\" width=\"116\" height=\"46\" border=\"0\" \/><\/p>\n<h1>Important properties of the Button object<\/h1>\n<ul>\n<li><a href=\"#Text\">Text<\/a><\/li>\n<li><a href=\"#Font\">Font<\/a><\/li>\n<li><a href=\"#ForeColor\">ForeColor<\/a><\/li>\n<li><a href=\"#Enabled\">Enabled<\/a><\/li>\n<li><a href=\"#BackgroundImage\">BackgroundImage<\/a><\/li>\n<li><a href=\"#Image\">Image<\/a><\/li>\n<li><a href=\"#TextImage\">TextImageRelation<\/a><\/li>\n<li><a href=\"#FlatStyle\">FlatStyle<\/a><\/li>\n<li><a href=\"#DialogResult\">DialogResult <\/a><\/li>\n<\/ul>\n<h1>Important events of the Button object<\/h1>\n<ul>\n<li><a href=\"#Click\">Click<\/a><\/li>\n<\/ul>\n<h1>Text property: Sets the text on the button face<\/h1>\n<p>Use the Text property to get, set, and change the text that is displayed on the button.<\/p>\n<p><b>Value type<\/b>: <a href=\"https:\/\/msdn.microsoft.com\/en-us\/library\/system.string(v=vs.110).aspx\" target=\"_blank\">System.String<\/a><br \/>\n<b>Default value<\/b>: (button name, such as &#8216;button1&#8217;)<\/p>\n<p style=\"padding-left: 30px;\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;\" title=\"image\" src=\"http:\/\/www.sapien.com\/blog\/wp-content\/uploads\/2011\/06\/image.png\" alt=\"image\" width=\"116\" height=\"46\" border=\"0\" \/><\/p>\n<p>Note: PrimalScript and PowerShell Studio automatically rename the button when you set the Text property. For example, if you set the Text property to &#8220;OK&#8221;, the button is named &#8220;$buttonOK&#8221;.<\/p>\n<p><strong>To get the text on a button:<\/strong><\/p>\n<pre lang=\"PowerShell\">$text = $buttonTest.Text<\/pre>\n<p><strong>To set the text on a button<\/strong>, use an assignment statement. You can include variables and expressions in the assigned string value.<\/p>\n<pre lang=\"PowerShell\">$Name = 'PowerShell'\r\n$buttonTest.Text = \"Start $Name\"<\/pre>\n<p style=\"padding-left: 30px;\"><a href=\"https:\/\/www.sapien.com\/blog\/wp-content\/uploads\/2011\/06\/Screenshot-2016-02-18-13.46.49.png\" rel=\"attachment wp-att-11307\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone  wp-image-11307\" src=\"https:\/\/www.sapien.com\/blog\/wp-content\/uploads\/2011\/06\/Screenshot-2016-02-18-13.46.49.png\" alt=\"Screenshot 2016-02-18 13.46.49\" width=\"359\" height=\"103\" srcset=\"https:\/\/dev.sapien.com\/blog\/wp-content\/uploads\/2011\/06\/Screenshot-2016-02-18-13.46.49.png 383w, https:\/\/dev.sapien.com\/blog\/wp-content\/uploads\/2011\/06\/Screenshot-2016-02-18-13.46.49-300x86.png 300w\" sizes=\"auto, (max-width: 359px) 100vw, 359px\" \/><\/a><\/p>\n<p><strong>To change the text on the button:<\/strong><\/p>\n<pre lang=\"PowerShell\">ButtonLoad_click = {\r\n    # Get the text currently in the label and evaluate it.\r\n    if ($ButtonTest.Text -eq 'Load table')\r\n    {\r\n        Get-Table\r\n        $ButtonLoad.Text = 'Clear table' # Change the text in the label.\r\n    }\r\n    else\r\n    {\r\n        Clear-Table\r\n        $ButtonLoad.Text = 'Load table'\r\n    }\r\n}<\/pre>\n<p><a name=\"Font\"><\/a><\/p>\n<h1>Font property: Determines the size and style of the button text<\/h1>\n<p>Use the Font property to change the style or the size of the text on the button, such as to emphasize or de-emphasize a button.<\/p>\n<p><b>Value Type<\/b>: <a href=\"https:\/\/msdn.microsoft.com\/en-us\/library\/system.drawing.font(v=vs.110).aspx\" target=\"_blank\">System.Drawing.Font<\/a><br \/>\n<b>Default<\/b>: Microsoft Sans Serif 8.25<\/p>\n<p style=\"padding-left: 30px;\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;\" title=\"image\" src=\"http:\/\/www.sapien.com\/blog\/wp-content\/uploads\/2011\/06\/image1.png\" alt=\"image\" width=\"234\" height=\"90\" border=\"0\" \/><\/p>\n<p>Tips:<\/p>\n<ul>\n<li>To set the font easily, in the Properties pane for the Button, in the Font row, click the ellipsis (\u2026) and then use the Font selector.<\/li>\n<li>To automatically resize the button text to fit the button, set the AutoSize property to <em>True<\/em>.<\/li>\n<\/ul>\n<p>To script a font change, set the Font property to a string with the Font name, size, and style.<\/p>\n<pre lang=\"powershell\">$buttonStart, style=Bold, Italic'<\/pre>\n<p>To determine other properties of the font, create a System.Drawing.Font object.<\/p>\n<pre lang=\"PowerShell\">$ClickFont = [System.Drawing.Font]::new('Microsoft Sans Serif', 8.25, [System.Drawing.FontStyle]::Regular)\r\n$ClickedFont = [System.Drawing.Font]::new('Segoe UI', 16, [System.Drawing.FontStyle]::Italic)\r\n\r\n$buttonStart_Click={\r\n    if ($buttonStart.Text -eq 'Click')\r\n    {\r\n        $buttonStart.Text = 'Clicked'\r\n        $buttonStart.Font = $ClickedFont\r\n    }\r\n    else\r\n    {\r\n        $buttonStart.Text = 'Click'\r\n        $buttonStart.Font = $ClickFont\r\n    }\r\n}<\/pre>\n<p><a name=\"ForeColor\"><\/a><\/p>\n<h1>ForeColor property: Determines the color of the button text<\/h1>\n<p>Use the ForeColor property to get, set, and change the color of the text on the button.<\/p>\n<p><b>Value type<\/b>: [System.Drawing.Color]<br \/>\n<b>Default<\/b>: <em>ControlText (Black)<\/em><\/p>\n<p style=\"padding-left: 30px;\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;\" title=\"image\" src=\"http:\/\/www.sapien.com\/blog\/wp-content\/uploads\/2011\/06\/image2.png\" alt=\"image\" width=\"229\" height=\"79\" border=\"0\" \/><\/p>\n<p>To set the ForeColor property in a script:<\/p>\n<pre lang=\"PowerShell\">$buttonOK.ForeColor = [System.Drawing.Color]::Red<\/pre>\n<p>-or-<\/p>\n<pre lang=\"PowerShell\">$buttonOK.ForeColor = \"Red\"<\/pre>\n<p>Note: When the value of the FlatStyle property is System, the ForeColor, BackColor, Image, and BackgroundImage property values are determined by the operating system and cannot be changed.<\/p>\n<p><a name=\"Enabled\"><\/a><\/p>\n<h1>Enabled property: Determines whether the button responds when clicked<\/h1>\n<p>Use the Enabled property to temporarily enable or disable the click feature of the button. For example, use Enabled = $false to disable the click feature after the button has been clicked or while a function is running.<\/p>\n<p><b>Value Type<\/b>: [System.Boolean] ($True, $False).<br \/>\n<b>Default<\/b>: $True<\/p>\n<p>To completely disable the click feature of the button, omit the Click event handler or enter an empty script block.<\/p>\n<p>To set the Enabled property in the script:<\/p>\n<pre lang=\"PowerShell\">$button1.Enabled = $false<\/pre>\n<p><a name=\"BackgroundImage\"><\/a><\/p>\n<h1>BackgroundImage: Places an image behind the button text<\/h1>\n<p>Use this property to display an icon, bitmap, or image of any type under the button text.<\/p>\n<p><b>Value Type<\/b>: [System.Drawing.Image]<br \/>\n<b>Default<\/b>: (None; Same as Form.BackgroundImage)<\/p>\n<p>To add an image from a file to a button, use BackgroundImage property in the Property pane. Click the ellipsis and, in File Explorer, select a file. PowerShell Studio converts the file into a bitmap string (64-bit byte array) so it is independent of the local system.<\/p>\n<p>To place an image over the button text (in the foreground), use the Image property of the button.<\/p>\n<p><a name=\"Image\"><\/a><\/p>\n<h1>Image: Places an image over the button text<\/h1>\n<p>Use this property to display an icon, bitmap, or image of any type in the foreground of the button.<\/p>\n<p><b>Value Type<\/b>: [System.Drawing.Image]<br \/>\n<b>Default<\/b>: (None; Same as Form.BackgroundImage)<\/p>\n<p>For example, this button has an image, but no text:<\/p>\n<p style=\"padding-left: 30px;\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;\" title=\"image\" src=\"http:\/\/www.sapien.com\/blog\/wp-content\/uploads\/2011\/06\/image3.png\" alt=\"image\" width=\"109\" height=\"83\" border=\"0\" \/><\/p>\n<p>To add a image from a file, use Image property in the Property pane. Click the ellipsis and, in File Explorer, select a file. PowerShell Studio converts the file into a bitmap string (64-bit byte array) so it is independent of the local system.<\/p>\n<p>To place an image under the button text, use the BackgroundImage property of the button.<\/p>\n<p>Note: When the value of the FlatStyle property is System, the ForeColor, BackColor, Image, and BackgroundImage property values are determined by the operating system and cannot be changed.<\/p>\n<p><a name=\"TextImage\"><\/a><\/p>\n<h1>TextImageRelation: Determines the location of the image relative to the text.<\/h1>\n<p>Use the TextImageRelation property to change the location of the button text so it doesn\u2019t cover the\u00a0 image.<\/p>\n<p><b>Value Type<\/b>: <a href=\"https:\/\/msdn.microsoft.com\/en-us\/library\/s020taz2(v=vs.110).aspx\">System.Windows.Forms.TextImageRelation<\/a> enumeration<br \/>\n<b>Default<\/b>: Overlay<\/p>\n<p>Valid values are:<br \/>\n<b>Overlay<\/b>: Image and text share the same space<\/p>\n<p style=\"padding-left: 30px;\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;\" title=\"image\" src=\"http:\/\/www.sapien.com\/blog\/wp-content\/uploads\/2011\/06\/image4.png\" alt=\"image\" width=\"110\" height=\"62\" border=\"0\" \/><\/p>\n<p><b>ImageBeforeText<\/b>: Text appears to the right of the image<\/p>\n<p style=\"padding-left: 30px;\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;\" title=\"image\" src=\"http:\/\/www.sapien.com\/blog\/wp-content\/uploads\/2011\/06\/image5.png\" alt=\"image\" width=\"111\" height=\"58\" border=\"0\" \/><\/p>\n<p><b>TextBeforeImage<\/b>: Text appears to the left of the image<\/p>\n<p style=\"padding-left: 30px;\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;\" title=\"image\" src=\"http:\/\/www.sapien.com\/blog\/wp-content\/uploads\/2011\/06\/image6.png\" alt=\"image\" width=\"110\" height=\"59\" border=\"0\" \/><\/p>\n<p><b>ImageAboveText<\/b>: Text appears below the image<\/p>\n<p style=\"padding-left: 30px;\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;\" title=\"image\" src=\"http:\/\/www.sapien.com\/blog\/wp-content\/uploads\/2011\/06\/image7.png\" alt=\"image\" width=\"103\" height=\"63\" border=\"0\" \/><\/p>\n<p><b>TextAboveImage<\/b>: Text appears above the image<\/p>\n<p style=\"padding-left: 30px;\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;\" title=\"image\" src=\"http:\/\/www.sapien.com\/blog\/wp-content\/uploads\/2011\/06\/image8.png\" alt=\"image\" width=\"101\" height=\"61\" border=\"0\" \/><\/p>\n<p><a name=\"FlatStyle\"><\/a><\/p>\n<h1>FlatStyle property: Determines how the control appears when a user mouses-over and clicks.<\/h1>\n<p>Use the FlatStyle property to change the response when the cursor focuses on the button.<\/p>\n<p><b>Value Type<\/b>: <a href=\"https:\/\/msdn.microsoft.com\/en-us\/library\/system.windows.forms.flatstyle(v=vs.110).aspx\">System.Windows.Forms.FlatStyle<\/a><br \/>\n<b>Default<\/b>: Standard<\/p>\n<p>The FlatStyle property is effective only when the button is enabled. The effect of each value type is specific to the user&#8217;s operating system.<\/p>\n<p>Note: When the value of the FlatStyle property is System, the ForeColor, BackColor, Image, and BackgroundImage property values are determined by the operating system and cannot be changed.<\/p>\n<p>Valid values are:<br \/>\n<b>Flat<\/b>: The button appears flat. It changes color on mouse-over.<\/p>\n<p style=\"padding-left: 30px;\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;\" title=\"image\" src=\"http:\/\/www.sapien.com\/blog\/wp-content\/uploads\/2011\/06\/image9.png\" alt=\"image\" width=\"293\" height=\"56\" border=\"0\" \/><\/p>\n<p><b>Popup<\/b>: The button appears flat. When the mouse pointer moves over it, the button appears three-dimensional.<\/p>\n<p style=\"padding-left: 30px;\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;\" title=\"image\" src=\"http:\/\/www.sapien.com\/blog\/wp-content\/uploads\/2011\/06\/image10.png\" alt=\"image\" width=\"292\" height=\"55\" border=\"0\" \/><\/p>\n<p><b>Standard<\/b>: The button appears three-dimensional. It changes color on mouse-over.<\/p>\n<p style=\"padding-left: 30px;\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;\" title=\"image\" src=\"http:\/\/www.sapien.com\/blog\/wp-content\/uploads\/2011\/06\/image11.png\" alt=\"image\" width=\"292\" height=\"53\" border=\"0\" \/><\/p>\n<p><b>System<\/b>: Use the FlatStyle and colors of the user&#8217;s operating system.<\/p>\n<p style=\"padding-left: 30px;\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;\" title=\"image\" src=\"http:\/\/www.sapien.com\/blog\/wp-content\/uploads\/2011\/06\/image12.png\" alt=\"image\" width=\"293\" height=\"52\" border=\"0\" \/><\/p>\n<p><a name=\"DialogResult\"><\/a><\/p>\n<h1>DialogResult: Closes the form and tells the parent form which button closed it.<\/h1>\n<p>Use the DialogResult property to close a form and return a value [System.Windows.Forms.DialogResult] to a parent form (if any) that indicates which button was click to close the child form. For example, if the child form has OK and Cancel buttons, you can use the DialogResult property to tell the parent form which button closed the form.<\/p>\n<p>This property closes the form, even when the form is not a modal (child) form.<\/p>\n<p><b><i>Warning<\/i><\/b>: When the DialogResult property has a value other than &#8220;None,&#8221; clicking the button closes the form. You do not need to write a Click event handler. If the button has a Click event handler, the form closes immediately after executing the Click event handler code.<\/p>\n<p><b>Value Type<\/b>: System.Windows.Forms.DialogResult enumeration<br \/>\n<b>Default<\/b>: None<\/p>\n<p>Valid values include:<\/p>\n<blockquote><p><b>None<\/b> (Default): The form does not close automatically. No value is returned to the parent form. The Click event handler determines the response of the button to a Click event.<\/p>\n<p><b>OK<\/b>: Closes the form and returns an OK value (usually sent from an OK button).<\/p>\n<p><b>Cancel<\/b>: Closes the form and returns a Cancel value (usually sent from a Cancel or X button).<\/p>\n<p><b>Abort<\/b>: Closes the form and returns an Abort value (usually sent from an Abort button).<\/p>\n<p><b>Retry<\/b>: Closes the form and returns a Retry value (usually sent from a Retry button).<\/p>\n<p><b>Ignore<\/b>: Closes the form and returns an Ignore value (usually sent from an Ignore button).<\/p>\n<p><b>Yes<\/b>: Closes the form and returns a Yes value (usually sent from a Yes button).<\/p>\n<p><b>No<\/b>: Closes the form and returns a No value (usually sent from a No button).<\/p><\/blockquote>\n<p>In this IF statement, the main form uses the Call-Childform_psf function to open a child form. When the child form closes, the main form tests for a DialogResult value of &#8216;OK&#8217;.<\/p>\n<pre lang=\"PowerShell\">if (Call-ChildForm_psf -eq [System.Windows.Forms.DialogResult]::OK)\r\n{\r\n   . . .\r\n}<\/pre>\n<p>These statement show how to use DialogResult with a message box. The DialogResult of the OK button in the message box has a default value of OK.<\/p>\n<p>The first command creates the message box and saves the DialogResult value in the $result variable. The IF statement checks for a value of OK in the result and proceeds accordingly.<\/p>\n<pre lang=\"PowerShell\">$result = [System.Windows.Forms.MessageBox]::Show(\"Press OK to continue\", \"Question\")\t\r\nif ($result -eq 'OK')\r\n{\r\n   . . .\r\n}<\/pre>\n<p><a name=\"Click\"><\/a><\/p>\n<h1>Click event: Occurs when the button is clicked.<\/h1>\n<p>Write a Click event handler that runs when the button is clicked. This is one of the most important events you will use when creating GUI applications.<\/p>\n<p>Note: If you use the DialogResult property, the Click event handler run immediately before the form closes.<\/p>\n<p>For example, the following Click event handler runs when the button is clicked. The button is disabled and the button text changes to &#8220;Disabled&#8221;.<\/p>\n<pre lang=\"PowerShell\">$buttonEnabled_Click = {\r\n    $buttonEnabled.Enabled = $false\r\n    $buttonEnabled.Text = \"Disabled\"\r\n}<\/pre>\n<p>Button before Click event:<\/p>\n<p style=\"padding-left: 30px;\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;\" title=\"image\" src=\"http:\/\/www.sapien.com\/blog\/wp-content\/uploads\/2011\/06\/image13.png\" alt=\"image\" width=\"101\" height=\"48\" border=\"0\" \/><\/p>\n<p>Button after Click event:<\/p>\n<p style=\"padding-left: 30px;\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;\" title=\"image\" src=\"http:\/\/www.sapien.com\/blog\/wp-content\/uploads\/2011\/06\/image14.png\" alt=\"image\" width=\"106\" height=\"54\" border=\"0\" \/><\/p>\n<p>&nbsp;<\/p>\n<p><strong>Note about events: <\/strong><\/p>\n<p>To discover which control called the event script block, use the <strong>$this<\/strong> automatic variable. The $this variable is particularly useful when you have multiple controls calling the same event script block. The $this variable tells which control triggered the event, so you can respond in a control-specific way.<\/p>\n<p>For example, this Click event script block disables the control that called it:<\/p>\n<pre lang=\"PowerShell\">$Disable_Click={ \r\n    $this.Enabled = $false\r\n}<\/pre>\n<p>Looking for more <a href=\"https:\/\/www.sapien.com\/blog\/topics\/spotlight-on-controls\/\" target=\"_blank\">Spotlight posts<\/a>? In PowerShell Studio, in the Toolbox or in the Properties pane, right-click a control and then click &#8216;View Spotlight Article&#8217;.<\/p>\n<p><strong>Next on Spotlight on Controls:<\/strong> <a href=\"https:\/\/www.sapien.com\/blog\/2011\/06\/13\/primalforms-2011-spotlight-on-the-textbox-control\/\">Textbox<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>The Spotlight on Controls series describes the controls, that is, the objects in the System.Windows.Forms namespace, so you can use them effectively when building GUI apps in PowerShell Studio and PrimalScript. Each post focuses on one control and lists its most important properties, methods, and events, including the default event that PowerShell Studio adds to [&hellip;]<\/p>\n","protected":false},"author":10,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[575,644,25],"tags":[652,641,28,633,327],"class_list":["post-3038","post","type-post","status-publish","format-standard","hentry","category-primalforms-2011-software-news","category-spotlight-on-controls","category-windows-powershell","tag-button","tag-controls","tag-powershell","tag-primalforms-2011","tag-winform"],"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/dev.sapien.com\/blog\/wp-json\/wp\/v2\/posts\/3038","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dev.sapien.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dev.sapien.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dev.sapien.com\/blog\/wp-json\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/dev.sapien.com\/blog\/wp-json\/wp\/v2\/comments?post=3038"}],"version-history":[{"count":60,"href":"https:\/\/dev.sapien.com\/blog\/wp-json\/wp\/v2\/posts\/3038\/revisions"}],"predecessor-version":[{"id":11308,"href":"https:\/\/dev.sapien.com\/blog\/wp-json\/wp\/v2\/posts\/3038\/revisions\/11308"}],"wp:attachment":[{"href":"https:\/\/dev.sapien.com\/blog\/wp-json\/wp\/v2\/media?parent=3038"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dev.sapien.com\/blog\/wp-json\/wp\/v2\/categories?post=3038"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dev.sapien.com\/blog\/wp-json\/wp\/v2\/tags?post=3038"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}