0

我解析一个 xml 文档并得到我需要的 2 个字符串(y 和 z)。
他们工作正常。但是当我将字符串 z 添加到 CheckBox 文本时。文本保持空白,我得到的只是一个没有单词的复选框。

    List<string> extens = new List<string> { };
    String xmlPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "/ExtraEx.xml";

    public Exten()
    {
        InitializeComponent();
    }

    private void Exten_Load(object sender, EventArgs e)
    {
        if (File.Exists(xmlPath))
        {
            XmlDocument xml = new XmlDocument();
            xml.Load(xmlPath);
            XmlNodeList xnList = xml.SelectNodes("/Extras/Add");
            foreach (XmlNode xn in xnList)
            {
                string y = xn["checked"].InnerText;
                string z = xn["Exten"].InnerText;

                //Shows The String Value!
                MessageBox.Show(z);

                CheckBox cb = new CheckBox();

                //cb.Text Still Stays Blank?
                cb.Text = z;
                fLayout.Controls.Add(cb);
            }
        }
        else
        {
            MessageBox.Show("XML File Does not Exist!");
        }

    }
4

3 回答 3

1

我的 Xml 文件是这样设置的。
由于扩展名旁边的选项卡,我的程序将字符串作为“空白.mp3”。

<?xml version="1.0" encoding="utf-8" ?>
<Extras>
    <Add>
        <Exten>
            .mp3
        </Exten>
        <checked>
            True
        </checked>
    </Add>
    <Add>
        <Exten>
            .xls
        </Exten>
        <checked>
            False
        </checked>
    </Add>
</Extras>

我在我的程序中添加了一些额外的代码来解决这个问题。

string y = xn["checked"].InnerText;
string z = xn["Exten"].InnerText;
y = Regex.Replace(y, @"\s+", "");
z = Regex.Replace(z, @"\s+", "");

这从扩展名周围获取了空格,将字符串保留为“.mp3”。

于 2013-08-15T21:50:34.813 回答
1

尝试这个

cb.Text = "fixed value";

如果文本仍未显示,请确保复选框设置为可见并适合窗体/窗口大小

如果显示文本,则与如何从文件中读取 z有关的问题,那么您可以试试这个cb.Text = y;

如果显示的是文本,则确定节点Exten不存在或包含您需要显示的值

如果上述所有方法均失败,请致电

this.Refresh() ;
于 2013-08-15T21:34:41.230 回答
0

我从我的应用程序中获取此代码效果很好!

更新!您是否尝试过以下操作?

this.Refresh()  //on the form you are adding controls to?!



CheckBox[] chk;

chk = new CheckBox[10];

for (int i = 0; i <= 9; i++)
{

  chk[i] = new CheckBox();

  chk[i].Name = i.ToString();

  chk[i].Text = i.ToString();

  chk[i].TabIndex = i;

 chk[i].AutoCheck=true;

  panel1.Controls.Add(chk[i]);

}
于 2013-08-15T21:22:14.493 回答