C# 单例还是静态类,或者两者都不是?
我正在创建一个Windows窗体应用程序,它基本上是绘画的再创造。我有一个包含各种按钮的工具条,我可以将位图的副本拖到图表上,并将其放在绘图面板上。但是,我想添加一个功能,即能够在面板周围移动位图,并使用线角和线中间的9个节点重新调整其大小 目前我的表格有一个C# 单例还是静态类,或者两者都不是?,c#,winforms,C#,Winforms,我正在创建一个Windows窗体应用程序,它基本上是绘画的再创造。我有一个包含各种按钮的工具条,我可以将位图的副本拖到图表上,并将其放在绘图面板上。但是,我想添加一个功能,即能够在面板周围移动位图,并使用线角和线中间的9个节点重新调整其大小 目前我的表格有一个 List<Diagram> theDiagrams; 列出图表; 其中包含自定义关系图对象的列表。每个图都代表绘图面板上的位图,它有坐标、大小、z索引、位图和一些其他信息。但是现在我只希望有焦点的图能够被编辑,或
List<Diagram> theDiagrams;
列出图表;
其中包含自定义关系图对象的列表。每个图都代表绘图面板上的位图,它有坐标、大小、z索引、位图和一些其他信息。但是现在我只希望有焦点的图能够被编辑,或者在外部有9个节点能够移动/重新调整大小。我正在考虑创建一个类,它是我目前拥有的Diagram类的派生,但是我只想创建其中的一个。我应该创建一个静态类,或者可能使用单例设计模式来确保一次只能创建其中一个对象。理想情况下,我希望这个类从一开始就为null,并且只在必要时设置为图表的副本
我更不想为这个特定场景设计类,所以我认为不需要太多代码来理解我所说的要点。但是,如果您觉得需要一些我所说的示例,我非常乐意与您分享这些代码,以确保我能够提供最好的解决方案
如果您不理解我的问题,我应该使用单例设计模式、静态类还是两者都不使用来实现我的目标?在这种情况下,我会避免使用静态和单例模式。如果您有多个表单(MDI应用程序),该怎么办 所选位图/图层类似于图像/窗体的属性,任何模块或类都不能直接更改它。图像类控制着
列表
我认为你应该有一个
私有图来选择图表代码>字段,该字段包含在包含<代码>的同一控件/表单中定义的当前选定图表,该控件/表单列出了这些图表
字段
绘制完整列表时,应跳过所选列表,并将其绘制为最后一个图表。(因此它将是最顶级的)
只是一个想法
伪
private void UpdateBitmap()
{
foreach(var diagram in theDiagrams)
{
if(diagram == selectedDiagram)
continue;
// draw
}
if(selectedDiagram != null)
{
// draw with corner nodes and/or other helper controls (z-top)
// does the corner nodes and/or other helper controls exists?
if(!areEditControlsCreated)
CreateEditControls();
}
else
{
if(areEditControlsCreated)
DestroyEditControls();
}
}
取消选择图表时,只需清除selectDiagram=null编码>字段并重新绘制位图