【发布时间】:2010-11-04 03:46:17
【问题描述】:
编辑 1
是否可以使用 get/set 来做到这一点?像下面这样的东西?这对我有用,但我担心我错过了一些东西,更不用说所有的静态性了。
///<summary>
/// Class to track and maintain Heads Up Display information
///</summary>
public static class HUD
{
///<summary>
///Declare variables to store HUD values
///</summary>
private static string _lastName;
private static string _firstName;
private static string _middleName;
private static string _suffix;
private static string _sSN;
private static string _personID;
private static string _masterID;
private static string _enrollmentID;
private static string _planID;
// Store a reference to THE form that holds the HUD and is visible
private static FrmModuleHost _frmHUDHost;
public static string PersonId
{
get { return _personID; }
set
{
FrmHudHost.tbxHUD_PersonID.Text = value;
_personID = value;
}
}
public static string SSn
{
get { return _sSN; }
set
{
FrmHudHost.tbxHUD_SSN.Text = value;
_sSN = value;
}
}
public static string MiddleName
{
get { return _middleName; }
set
{
FrmHudHost.tbxHUD_MiddleName.Text = value;
_middleName = value;
}
}
public static string FirstName
{
get { return _firstName; }
set
{
FrmHudHost.tbxHUD_FirstName.Text = value;
_firstName = value;
}
}
public static string LastName
{
get { return _lastName; }
set
{
FrmHudHost.tbxHUD_LastName.Text = value;
_lastName = value;
}
}
public static string Suffix
{
get { return _suffix; }
set
{
FrmHudHost.tbxHUD_SuffixName.Text = value;
_suffix = value;
}
}
public static string MasterID
{
get { return _masterID; }
set
{
FrmHudHost.tbxHUD_MasterID.Text = value;
_masterID = value;
}
}
public static string EnrollmentID
{
get { return _enrollmentID; }
set
{
FrmHudHost.tbxHUD_EnrollmontPeriod.Text = value;
_enrollmentID = value;
}
}
public static string PlanID
{
get { return _planID; }
set
{
FrmHudHost.tbxHUD_PlanID.Text = value;
_planID = value;
}
}
public static FrmModuleHost FrmHudHost
{
get { return _frmHUDHost; }
set { _frmHUDHost = value; }
}
}
原帖
我有一个类负责更新当前选定成员信息的平视显示。我的课是这样的 -->
public static class HUD
{
///<summary>
///Declare variables to store HUD values
///</summary>
public static string _lastName;
public static string _firstName;
public static string _middleName;
public static string _suffix;
public static string _sSN;
public static string _personID;
public static string _masterID;
public static string _enrollmentPeriod;
public static string _planID;
///<summary>
/// Method to update the display with current information
///</summary>
public static void UpdateHUD (FrmModuleHost frm, params String[] args)
{
frm.tbxHUD_LastName.Text = args[0];
_lastName = args[0];
frm.tbxHUD_FirstName.Text = args[1];
_firstName = args[1];
frm.tbxHUD_MiddleName.Text = args[2];
_middleName = args[2];
frm.tbxHUD_SSN.Text = args[3];
_sSN = args[3];
frm.tbxHUD_PersonID.Text = args[4];
_personID = args[4];
}
}
我想弄清楚的是如何判断正在传递的参数。您在下面看到的是从搜索页面调用的内容,因为这就是当时可用的所有内容。其他 4 个值将在不同页面上一次加载 1 个。一个人有一个注册,如果有帮助,就有一个计划。
private void GetResults()
{
var lName = getCurrentRowVal("Last Name");
var fName = getCurrentRowVal("First Name");
var pID = getCurrentRowVal("Person ID");
var sSN = getCurrentRowVal("SSN");
var mName = getCurrentRowVal("Middle Name");
HUD.UpdateHUD(FrmWwcModuleHost, lName, fName, mName, sSN, pID);
}
现在,当我从注册页面调用它时,我希望所有内容都保留并添加 EnrollmentID。
private void GetResults()
{
var enrollmentID = getCurrentRowVal("EnrollmentID");
HUD.UpdateHUD(FrmWwcModuleHost, enrollmentID);
}
我的问题是,我该如何做到这一点并知道要调用哪个 arg[] 索引而不覆盖现有值?
是否总是像设置所有参数一样简单?所以我在注册页面上的调用看起来像这样 -->
private void GetResults()
{
var enrollmentID = getCurrentRowVal("EnrollmentID");
HUD.UpdateHUD(FrmWwcModuleHost, HUD._lastName, HUD._firstName, HUD._middleName, HUD._sSN, HUD._personID, enrollmentID);
}
感谢您的任何见解!
【问题讨论】:
-
您的代码要求在 params 部分中传递恰好四个参数。如果您要求它始终为四个,为什么要首先使用参数数组?参数数组的目的是可以传递任意数量的参数,例如,名称列表。为什么不简单地说 public static void UpdateHUD (FrmModuleHost frm, string last, string first, string middle, string id)?
-
因为可能不知道中间名。并非所有类型的会员都需要 SSN。与注册和计划 ID 相同。唯一可以硬编码的字段是名字和姓氏。
-
然后为每个支持的组合做不同的重载。
-
我希望这是一个单用户、单线程的应用程序。没有任何锁定的静态变量的所有修改都给了我勇气。
-
是的,虽然我想弄清楚如何在这里使用 OOP。似乎我需要将我的对象传递给每个表单。
标签: c# winforms oop properties