将一种类型转换为另一种

时间:2013-08-02 16:37:33

标签: c# propertygrid

我遇到转换类型的问题。我的mainForm在整数类型中保持变量。另外我的表单有propertyGrid,我用Image& amp;中心实现了字段的属性(比如组合框)。文本。现在我不明白如何将一种类型转换为另一种类型。首先,我需要将数据从int转换为myProp,然后反之亦然。 这里设置propertyGrid:

    public dashPatternList DashPattern
    {
        get { return dashPattern; }
        set { dashPattern = value; }
    }

在这里,我尝试用其他方法实现我的问题:

    private dashPatternList dashIN(int dash)
    {                    
        dashPatternList ds = dashPatternList.pic0;
        if (dash == 1) ds = dashPatternList.pic1;
        if (dash == 2) ds = dashPatternList.pic2;      
        return ds;
    }

    private int dashOUT(dashPatternList dash)
    {
        int i = 0;
        if (dash == dashPatternList.pic1) i = 1;
        if (dash == dashPatternList.pic2) i = 2;   
        return i;
    }

并称之为:

 pData.DashPattern = dashIN(dashPattern);
 dashPattern = dashOUT(pData.DashPattern);

这种方法有效,但也许你建议我更方便。

1 个答案:

答案 0 :(得分:1)

您可以将图片保存在一个数组中,因此您需要dashIN(dash)而不是dashIN[dash](并且您不需要编写dashIN函数)。你只需要用这样的东西初始化它一次:

DashPattern[] dashIN = new DashPattern[] { 
   dashPatternList.pic0, dashPatternList.pic1, dashPatternList.pic2 };

反过来说,像Array.IndexOf(dashIN,mypic)这样的东西应该有效。

这样您就可以用数据替换代码,这往往是一件好事,因为它通常更容易管理。例如,如果要更改短划线模式列表,则只需更改一行,而不必更早地更改两个函数中的代码。此外,现在发生导致dashOUT(dashIN(dash))!=dash的错误是不可能的(如果代码中的数字错误,就会发生错误。)