我循环浏览二维数组的内容,其中包含基因杂交的Punnett Square计算结果。我需要总结结果,以便用户可以很容易地看到唯一的实例。我可以通过将结果放入文本框来实现这一点,但是当我尝试使用ListBox来显示数据时,部分信息就会丢失,即将AaBBCc类型数据转换为与特征直接相关的内容用户最初选择的。
这是操作的主要代码块:
foreach (string strCombination in arrUniqueCombinations)
{
int intUniqueCount = 0;
decimal decPercentage;
foreach (string strCrossResult in arrPunnettSQ)
{
if (strCrossResult == strCombination)
{
intUniqueCount++;
}
}
decPercentage = Convert.ToDecimal((intUniqueCount*100)) / Convert.ToDecimal(intPossibleCombinations);
txtReport.AppendText(strCombination + " appears " + intUniqueCount.ToString() + " times or " + decPercentage.ToString() + "%."+ Environment.NewLine);
lstCrossResult.Items.Add(DecodeGenome(strCombination) + " appears " + intUniqueCount.ToString() + " times or " + decPercentage.ToString() + "%.");
}
为了将数据附加到文本框,我使用此代码并且它完美地运行:
txtReport.AppendText(DecodeGenome(strCombination) + " appears " + intUniqueCount.ToString() + " times or " + decPercentage.ToString() + "%."+ Environment.NewLine);
给出结果: 特质1 Het。,特质3出现16次或25%。
要将结果添加到列表框,这可以:
lstCrossResult.Items.Add(strCombination + " appears " + intUniqueCount.ToString() + " times or " + decPercentage.ToString() + "%.");
给出结果: AaBBCc出现16次或25%。
但strCombination的内容是AaBBCc,我需要把它翻译成“Trait 1 Het。,Trait 3”,我用这段代码完成了这个:
private string DecodeGenome(string strGenome)
{
string strTranslation = "";
int intLength = strGenome.Length;
int intCounter = intLength / 2;
string[] arrPairs = new string[intLength / 2];
//Break out trait pairs and load into array
for (int i = 1; i <= intLength; i++)
{
arrPairs[i / 2] = strGenome.Substring((i-1),2);
i++;
}
foreach (string strPair in arrPairs)
{
char chFirstLetter = strPair[0];
char chSecondLetter = strPair[1];
intCounter = intCounter - 1;
if (Char.IsUpper(chFirstLetter))
{
if (!Char.IsUpper(chSecondLetter))
{
if (intCounter > 0)
{
txtReport.AppendText(GetDescription(strPair.Substring(0, 1)) + " Het.,");
}
else
{
txtReport.AppendText(GetDescription(strPair.Substring(0, 1)));
}
}
}
else
{
if (!Char.IsUpper(chSecondLetter))
{
if (intCounter > 0)
{
txtReport.AppendText(GetDescription(strPair.Substring(0, 1)) + ",");
}
else
{
txtReport.AppendText(GetDescription(strPair.Substring(0, 1)));
}
}
}
}
return strTranslation;
}
在文本框中显示没有问题,但是当我尝试将其作为项目放入列表框时,它将其变为null。代替: “Trait 1 Het。,Trait 3出现16次或25%。” 我明白了: “出现16次或25%。”
我尝试将结果添加到ArrayList,然后在处理完所有内容后填充列表框,但结果是一样的。
有关列表框未接受翻译的AaBBCc信息的任何线索,将不胜感激。
答案 0 :(得分:2)
永远不会设置strTranslation。一切都被推送到txtReport.AppendText