CheckBox.Text=X.复选框文本保持空白C#

本文关键字:空白 文本 复选框 Text CheckBox | 更新日期: 2023-09-27 18:28:00

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

    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!");
        }
    }

CheckBox.Text=X.复选框文本保持空白C#

试试这个

cb.Text = "fixed value";

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

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

如果显示了文本,则确保节点Exten不存在或包含显示所需的值

如果以上所有操作都失败,请致电

this.Refresh() ;

我的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"。

我从应用程序中获取了这段代码,效果很好!

更新!你试过下面的吗

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]);
}