我正在使用C#WinForms。
我正在使用名为AGauge的用户控件。 http://www.codearteng.com/2012/08/agauge-winforms-gauge-control.html 我将控件添加到“设计”视图中的一个选项卡页面。
如果在没有打开包含控件的标签页的情况下关闭窗口,则会出现NullReferenceException(在AGauge.dll中发生NullReferenceException - 对象引用未设置为对象的实例)
如果我打开标签页然后关闭窗口,那么一切正常。
执行base.Dispose(disposing)
时,Dispose()函数发生异常由于我没有查看AGauge.dll中的代码,我不确定该怎么做。我想我可以在打开标签页时在运行时创建控件,但这并不理想。
答案 0 :(得分:0)
我通过在选项卡控件的Selected()函数中创建用户控件来解决此问题。
public class FunDapter<T> extends BaseAdapter implements Filterable {
protected List<T> mDataItems;
protected LongExtractor<T> idExtractor;
protected final Context mContext;
private final int mLayoutResource;
private final BindDictionary<T> mBindDictionary;
private FunDapterFilter<T> funDapterFilter;
public FunDapter(Context context, List<T> dataItems, int layoutResource,
BindDictionary<T> dictionary) {
this(context, dataItems, layoutResource, null, dictionary);
}
public FunDapter(Context context, List<T> dataItems, int layoutResource,
LongExtractor<T> idExtractor, BindDictionary<T> dictionary) {
this.mContext = context;
this.mDataItems = dataItems;
this.mOrigDataItems = dataItems;
this.mLayoutResource = layoutResource;
this.idExtractor = idExtractor;
this.mBindDictionary = dictionary;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View v = convertView;
final GenericViewHolder holder;
if (null == v) {
LayoutInflater vi =
(LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(mLayoutResource, null);
holder = new GenericViewHolder();
holder.root = v;
holder.playPause=(ImageView)v.findViewById(R.id.playPause);
holder.playPause.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
((PlayPauseClick)mContext).imageButtonOnClick(v, position);
}
});
return v;
}