小编ben*_*sai的帖子

Winforms设计师生成的组件IContainer的用途是什么?

在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)

c# dispose designer winforms

34
推荐指数
2
解决办法
2万
查看次数

ASP.NET Repeater ItemDataBound发生在PreRender事件之后?

我在ASP.NET 2.0 Web表单上有一个转发器控件.

据我了解,所有页面的数据绑定控件都会Page_LoadPage_PreRender事件和事件之间的某处触发绑定事件.

但是,我的转发器ItemDataBound事件似乎发生在PreRender事件发生后.

这是怎么回事?有什么方法可以在所有ItemDataBound事件被解雇后访问页面控件?

更新:

  • Repeater使用ObjectDataSource带有DataSourceID转发器控件中的声明集的a.

  • 在页面生命周期中根本不修改DataSource ID或对象.

asp.net data-binding events repeater page-lifecycle

9
推荐指数
1
解决办法
2万
查看次数

导致InvalidComObjectException的原因是:"无法使用已与其基础RCW分离的COM对象."?

我已经看过提到这个特定异常的各种问题(这个问题列出了很多,我访问过的).此外,我有与本文相同的一般性问题,但在不同的背景下,所以答案对我没有帮助.

上下文

我有一个派生自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包含 …

interop dispose activex finalizer winforms

5
推荐指数
1
解决办法
2878
查看次数