我正在使用WPF构建一个应用程序,它将成为各种设计者,这意味着,用户可以将自定义UI元素拖放到画布中,并能够通过属性配置其行为.
(将此视为特定于域的PowerPoint.您可以向演示文稿添加元素,配置元素的属性,然后最终可以运行"幻灯片放映",这些元素将根据其属性运行)
所以在我的应用程序中,显示和配置元素属性的最佳方法是什么?我可以使用属性对话框控件吗?(类似于Visual Studio中的控件)
我有一个像这样声明的抽象类BaseItem:
public abstract class BaseItem
{
public BaseItem Parent { get; protected set; }
public List<BaseItem> Children = new List<BaseItem>();
public abstract string Function1();
}
Run Code Online (Sandbox Code Playgroud)
基本上,我正在尝试实现一个设计,其中每个Item都有一个特定类型的父级和不同类型的子级.
例如,ItemA将拥有所有ItemB类型的子项.然后ItemB将具有ItemA类型的父级和子级所有ItemC类型.ItemC将具有ItemB的父级和ItemD类型的子级.
我认为使用泛型来做这件事会更加简洁,以避免不必要的演员表,因为我知道我的每个继承类的父和子将是什么类型.所以我提出了这样的事情:
public abstract class AbstractBase
{
public abstract string Function1();
}
public abstract class BaseItem<T1, T2> : AbstractBase
where T1 : AbstractBase
where T2 : AbstractBase
{
public T1 Parent { get; protected set; }
public List<T2> Children = new List<T2>();
}
public class ItemA : BaseItem<ItemA, ItemB>
{
}
public class ItemB …Run Code Online (Sandbox Code Playgroud) 说我有以下内容:
BSTR myBSTR = SysAllocString( L"MYBSTR" );
CComBSTR myCComBSTR = myBSTR;
Run Code Online (Sandbox Code Playgroud)
当它超出范围时,是否myCComBSTR取得所有权myBSTR并将其释放?或者,myBSTR如果我不自由,它会复制并产生内存泄漏myBSTR吗?
如果这会产生内存泄漏,那么处理此问题的最有效方法是什么?(myBSTR将作为a传递给函数BSTR,我想将其作为CComBSTR内部存储)
我有一个使用HelpProvider类的C#Winforms应用程序.每当我按F1以显示帮助时,帮助窗口将始终位于我的应用程序之上,我无法将应用程序UI置于前台.我仍然可以与我的用户界面进行互动,但帮助窗口仍会保留在最顶层.
这是由HelpProvider设计的吗?或者我错过了什么?
.net ×2
c# ×2
c++ ×1
controls ×1
generics ×1
properties ×1
propertygrid ×1
string ×1
winforms ×1
wpf ×1