在Visual Studio中创建新表单时,设计器在.Designer.cs文件中生成以下代码:
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
Run Code Online (Sandbox Code Playgroud)
components变量的目的是什么?我的理论是,我应该将它用于IDisposable我的表单拥有的任何类,我在Designer之外创建(因为Dispose已经由Designer实现).
因此,例如,如果我的表单拥有一个字体,我可以通过添加它来确保它被处理components:
public partial class Form1 : Form
{
Font coolFont;
public Form1()
{
InitializeComponent();
this.coolFont = new Font("Comic …Run Code Online (Sandbox Code Playgroud) 我在ASP.NET 2.0 Web表单上有一个转发器控件.
据我了解,所有页面的数据绑定控件都会Page_Load在Page_PreRender事件和事件之间的某处触发绑定事件.
但是,我的转发器ItemDataBound事件似乎发生在PreRender事件发生后.
这是怎么回事?有什么方法可以在所有ItemDataBound事件被解雇后访问页面控件?
更新:
Repeater使用ObjectDataSource带有DataSourceID转发器控件中的声明集的a.
在页面生命周期中根本不修改DataSource ID或对象.
我已经看过提到这个特定异常的各种问题(这个问题列出了很多,我访问过的).此外,我有与本文相同的一般性问题,但在不同的背景下,所以答案对我没有帮助.
上下文
我有一个派生自AxWindowsMediaPlayer的类View,由一个名为的类所拥有,该类Panel位于a中Workspace.我最近问了一个关于这种情况的问题,但是这个问题是针对这个问题的解决方法是否合适.该问题的背景与此相关:
.-----------------------.
|Workspace |
|.--------. .--------. |
||Panel1 | |Panel2 | |
||.-----. | |.-----. | |
|||View1| | ||View2| | |
||'-----' | |'-----' | |
|'--------' '--------' |
'-----------------------'
当一个View被释放时,一个被调用的方法Synchronize()将被调用所有剩余的View对象.对于View那个包含的AxWindowsMediaPlayer,它调用videoPlayer.Error.clearErrorQueue().
问题
当我Dispose()在顶级(Workspace.Dispose())调用时,如果另一个View被调配,然后导致Synchronize()在剩余的View对象上调用,则View包含 …