如何在Visual Studio(Visual C ++)的自定义向导(自定义项目模板)中禁用该控件?

时间:2014-11-10 00:07:36

标签: c++ visual-studio visual-studio-2013 project-template

我想默认禁用在Visual Studio 2013(Visual C ++)中使用Custom Wizard创建的项目向导中的一些控件。

代码:

<input class="CheckBox" type="checkbox" id="BOX1" title="Box 1">

创建一个复选框。

所以我试过了两个:

<input class="CheckBox" type="checkbox" id="BOX1" title="Box 1" disabled>

<input class="CheckBox" type="checkbox" id="BOX1" 
    title="Box 1" disabled="disabled">

但它们都没有工作(复选框仍然启用)。

我甚至尝试包括JS:

alert('JS works'); //alert occured (indeed, JS works in general)
document.getElementById("BOX1").disabled = true; //did not work

那么,如何禁用该控件?

对于这个例子,这里禁用了“使用HTML对话框”,我希望对我的控件产生相同的效果(屏幕截图来自MFC向导,但没关系):

enter image description here

1 个答案:

答案 0 :(得分:1)

我的答案基于较旧版本的Visual Studio(2010),可能有不同的向导系统,但至少它是一个答案......

查看MFC应用程序向导,创建(默认情况下已禁用)复选框的方法是使用一个带有名称的基本复选框(在本例中为HTML_DIALOG)。向导HTML有一个onload方法,它调用一些JScript来初始化页面,并使用您所需的默认设置:

function InitDocument(document) {
  ...
  HTML_DIALOG.disabled = true;
  HTML_DIALOG_LABEL.disabled = true;
  ...
}

Visual Studio应用程序向导通常位于您的基本VS安装目录下(例如)VC\VCWizards。我上面引用的MFC应用程序向导甚至更深(在我的安装和语言环境下)AppWiz\MFC\Application\html\1033。具体路径可能因版本和语言而异。

对于您的示例,您可以采用以下路线,如果这是您要默认禁用的唯一项目:

<body ... onload="BOX1.disable=true;">

否则调用onload方法:

<body ... onload="initialise(document);">
   ...
</body>
<script language="JSCRIPT">
  function initialise(document) {
    BOX1.disabled = true;
    BOX1_label.disabled = true;
  }
</script>

正如我所说,这是基于VS2010的,而且还完全没有经过测试,但从中我得到的结论是HTML标签本身不应包含默认值,它们是在HTML加载后设置的。这种方法实际上为您提供了更多的范围来调整&#34;默认值基于参数。我想。