虽然此问题的回答完全重复,但我遇到的问题(因此问题本身)并不完全重复。在搜索可能的答案时,我不认为引用的问题可能包含我的问题的答案。
我通过覆盖OnPaint控件来绘制面板上的波形。一切都运行良好。但是,当我在设计器中时,如果我将光标移到面板上,会引发IndexOutOfRange异常,并且面板显示错误:
当然错误是正确的,因为当程序没有运行时,所有索引都超出范围。
这种行为只是令人讨厌,但我想了解如何控制它。我猜测有一些简单的方法可以告诉面板何时在设计环境中显示,或者告诉它何时在执行的应用程序环境中显示。如果是这样,我可以为重写的OnPaint添加逻辑来处理这种情况。
我已经搜索了Stack Exchange并广泛搜索并查看了我的所有参考书,但我没有找到任何关于如何区分设计时和运行时环境的解释。也许我还没有找到正确的描述性词汇?
答案 0 :(得分:0)
正如我所担心的,这是一个术语问题:搜索设计时没有产生任何命中,但设计模式却没有。正如第一条评论中所建议的那样,对我来说简单的解决方案就是这样做:
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
if (!this.DesignMode)
{
// perform all my waveform rendering
}
}