我是這個社區中的新成員。 我遇到了一個問題:我將這個How I can save controls created in run time in Windows Forms和代碼工作得很好,但是我想要從stringCollection中刪除一個字符串時遇到問題。 我用方法stringcollection.Remove(「字符串」)插入一個有效的字符串剛剛存儲,我也保存所有settings.default.save()但字符串不是從字符串集合中刪除。 爲什麼不工作?請有人幫助我! :)如何從stringCollection中刪除字符串保存在設置中
這是我的代碼:
public Form1()
{
InitializeComponent();
if (Properties.Settings.Default.StringCollection == null)
Properties.Settings.Default.StringCollection = new System.Collections.Specialized.StringCollection();
}
private void make_BookButtonAndStore(int x, int y, string name)
{
make_Book(x, y, name);
Properties.Settings.Default.StringCollection.Add(String.Format("{0};{1};{2}", book1.Location.X, book1.Location.Y, book1.Name));
Properties.Settings.Default.Save();
}
private void make_Book(int x, int y, string name)
{
// this code is initializing the book(button)
book1 = new Button();
//Image img = button1.Image;
//book1.Image = img;
book1.Name = name;
//book1.Height = img.Height;
//book1.Width = img.Width;
book1.Location = new Point(44 + x, 19 + y);
book1.MouseDown += new MouseEventHandler(book1_MouseDown);
book1.MouseMove += new MouseEventHandler(book1_MouseMove);
book1.MouseUp += new MouseEventHandler(book1_MouseUp);
groupBox1.Controls.Add(book1);
}
void book1_MouseDown(object sender, MouseEventArgs e)
{
activeControl = sender as Control;
previousLocation = e.Location;
Cursor = Cursors.Hand;
}
void book1_MouseMove(object sender, MouseEventArgs e)
{
if (activeControl == null || activeControl != sender)
return;
var location = activeControl.Location;
location.Offset(e.Location.X - previousLocation.X, e.Location.Y - previousLocation.Y);
activeControl.Location = location;
}
void book1_MouseUp(object sender, MouseEventArgs e)
{
activeControl = null;
Cursor = Cursors.Default;
Button btnPremuto = (Button)sender;
Properties.Settings.Default.StringCollection.Remove(previousLocation.X+";"+previousLocation.Y+";"+btnPremuto.Name);
Properties.Settings.Default.StringCollection.Add(String.Format("{0};{1};{2}", btnPremuto.Location.X, btnPremuto.Location.Y, btnPremuto.Name));
Properties.Settings.Default.Save();
}
private void Form1_Load(object sender, EventArgs e)
{
foreach (string line in Properties.Settings.Default.StringCollection)
{
if (!String.IsNullOrWhiteSpace(line))
{
// The line will be in format x;y;name
string[] parts = line.Split(';');
if (parts.Length >= 3)
{
int x = Convert.ToInt32(parts[0]);
int y = Convert.ToInt32(parts[1]);
make_Book(x, y, parts[2]);
}
}
}
}
我編輯了您的標題。請參閱:「[應該在其標題中包含」標籤「](http://meta.stackexchange.com/questions/19190/)」,其中的共識是「不,他們不應該」。 – 2013-03-19 16:58:47
你在Designer中創建了什麼類型..?在設計器中創建它,然後將值保留爲stringCollection並避免執行此操作'Properties.Settings.Default.StringCollection = new System.Collections.Specialized.StringCollection();'創建'new'實例不會保存值 – MethodMan 2013-03-19 17:01:06