我有一个对话框,它是从我们从CDialog类派生的特定基类派生而来的 该对话框包含一个带有组合框项目的组合框(字符串) 还有一个组合框,标签,复选框和一个文本框(我将其称为分组控件,用于此讨论) 如果我从组合框中选择索引0中的项目,则会显示Grouped控件,如果我从组合框中选择索引1中的项目,则应该隐藏组控件 我已经使用代码将控件显示或隐藏为
import { Component, Inject, Injector, ReflectiveInjector } from '@angular/core';
class P {
}
const ps = [];
class C {
constructor(@Inject(P) p) {
ps.push(p);
}
}
@Component({
moduleId: module.id,
selector: 'my-app',
templateUrl: 'app.component.html',
styleUrls: ['app.component.css']
})
export class AppComponent {
name = 'Angular';
constructor(injector: Injector) {
const parent = ReflectiveInjector.resolveAndCreate([P], injector);
const child = parent.resolveAndCreateChild([C]);
const c1 = child.resolveAndInstantiate(C);
const c2 = child.resolveAndInstantiate(C);
console.log(c1 === c2); // false
console.log(ps[0] === ps[1]); // true
}
}
问题是即使在使用true参数调用上述方法后,仍然可以在屏幕上看到控件。如果我在(应该是)隐藏控件的顶部移动一些其他窗口,那么它实际上就消失了。所以这似乎是一个刷新问题。我的假设是InvalidateRect和UpdateWindow应该重新注册这个。但是没有发生。 尝试使用InvalidateRect(NULL)绘制整个屏幕,但仍无用。
你能否建议我如何隐藏控件?任何干净的方式吗?
注意:当控件(应该是)隐藏但仍然可以在屏幕上看到时,我将无法对这些控件执行任何操作(例如设置复选框或在文本框中键入内容)。 所以我认为控件被标记为隐藏但未绘制。