需求:左边列表项是有先后顺序的,必须得一个一个来看,就是必须要通过下一步(上一步)来控制显示。
左边列表项和主显示区里的内容(web用户控件)是一一对应的。
变化点:左边列表项是有可能增加删除的,也有可能调整顺序。
界面如下:
我的思路:应用状态模式,把左边列表项的每一项看作一种状态。
我遇到的问题:如何访问控制这些控件。
--引用--------------------------------------------------
winter-cn: 状态模式做这个不合适
但是你这个需要很容易解决
--------------------------------------------------------
如果不考虑变化:是有可能增加删除的,也有可能调整顺序的话,
那就很好写,而且我现在的程序也在正常运行,现在我想把
Code
/// <summary>
/// 设置步骤需要的内容控件显示
/// </summary>
/// <param name="name"></param>
private void SetVisible(string name)
{
if (name == Step.Tqxx)
{
StepTqxx.Visible = true; //web用户控件
BtTqxx.Visible = true; //左边列表项
}
else if (name == WebPrep.Arrange)
{
StepJtxx.Visible = true; //web用户控件
BtJtxx.Visible = true; //左边列表项
}
else
{
}
}
/// <summary>
/// 设置步骤需要的内容控件显示
/// </summary>
/// <param name="name"></param>
private void SetVisible(string name)
{
if (name == Step.Tqxx)
{
StepTqxx.Visible = true; //web用户控件
BtTqxx.Visible = true; //左边列表项
}
else if (name == WebPrep.Arrange)
{
StepJtxx.Visible = true; //web用户控件
BtJtxx.Visible = true; //左边列表项
}
else
{
}
}
这样的语句进行重构,
可是如下代码中 ,如何访问页面中的StepTqxx 等控件
Code
using System;
using System.Collections.Generic;
using System.Text;
namespace ClassLibrary1
{
//抽象类
public abstract class MyState
{
public abstract void Set();
}
//天气信息
public class TqxxState : MyState
{
public override void Set()
{
//这里如何访问页面中的StepTqxx,btTqxx等???????????????
}
}
//交通信息
public class JtxxState : MyState
{
public override void Set()
{
//这里如何访问页面中的StepJtxx,JtTqxx等??????????????
}
}
public class Flow
{
private MyState myState;
public Flow()
{
myState = new TqxxState();
}
public void Set()
{
myState.Set();
}
}
}
using System;
using System.Collections.Generic;
using System.Text;
namespace ClassLibrary1
{
//抽象类
public abstract class MyState
{
public abstract void Set();
}
//天气信息
public class TqxxState : MyState
{
public override void Set()
{
//这里如何访问页面中的StepTqxx,btTqxx等???????????????
}
}
//交通信息
public class JtxxState : MyState
{
public override void Set()
{
//这里如何访问页面中的StepJtxx,JtTqxx等??????????????
}
}
public class Flow
{
private MyState myState;
public Flow()
{
myState = new TqxxState();
}
public void Set()
{
myState.Set();
}
}
}