【问题标题】:using #ifdef inside "Windows Form Designer generated code" in C++ CLI with VS2010在带有 VS2010 的 C++ CLI 中的“Windows 窗体设计器生成的代码”中使用 #ifdef
【发布时间】:2014-07-24 15:06:07
【问题描述】:

下午好, 我在尝试有条件地注释掉由 Windows 窗体设计器生成的代码中的某些代码段和对象时遇到问题。

如果我简单地注释掉这些对象,设计师将不会显示代码有任何问题,并且会显示我正在处理的内容

如果我在代码中用#ifdef 和#endif 注释掉,设计师会给我 “C++ CodeDOM 解析器错误:行:358,列:1 --- 'term' 的意外标记” 并且不会显示我正在处理的 UI。但是,代码可以正常编译而不会出错。

有没有办法有条件地注释掉 Form.h 文件中的设计器代码部分?

谢谢, -D

【问题讨论】:

  • 表单设计器可能不调用预处理器?一般来说,不要碰自动生成的文件。
  • 除了将它放在 cmets 中之外,有没有更好的方法可以有条件地将其注释掉?是否有针对 VS2010 的修复程序允许这样做?谢谢,
  • 使控件隐藏或不可见,并将您的条件代码放在源文件中,根据您的条件隐藏或显示。

标签: visual-studio-2010 c++-cli designer command-line-interface


【解决方案1】:

不要不要编辑设计器生成的代码。如果您的更改有效,那么它不会持续很长时间,当设计师重新生成代码时就会消失。而真正的问题是,设计器代码解析器只能理解它自己生成的那种代码。它不是一个成熟的编译器,它不知道 bean #ifdef 可能意味着什么。这就是错误试图告诉您的内容。

如果您需要有条件的更改,那么您需要在表单的构造函数中进行它们, InitializeComponent() 调用之后。您可以根据需要删除或添加控件并更改其属性。

【讨论】:

    猜你喜欢
    • 2011-04-07
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 2011-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-28
    相关资源
    最近更新 更多