flowLayoutPanel1
에로드시 4 개의 동적 버튼과 정적 저장 버튼을 생성하는 작은 프로그램이 있습니다.저장 버튼을 클릭 할 때 동적 제어 상태 저장
내 목표는 동적 버튼 색상을 저장하여 양식을 다시로드하거나 다시 열 때 동적 버튼의 색상이 저장된 것과 동일한 상태로 다시로드되도록하는 것입니다.
아래에는 내가 시도한 것을 보여주기 위해 주석 처리 된 코드가 포함됩니다. xml
파일을 사용하여 단추 상태를 저장하고 상태를 보유하는 클래스를 포함 시켰습니다. 그러나 정적으로 저장하려면 내 단추를 만드는 경우 사용하는 메서드를 잘 작동합니다. (나는 정적 하나의 버튼으로 시도했다)
인터페이스 : 클래스 보유 상태 :
public class MyFormState
{
public string ButtonBackColor { get; set; }
}
양식 코드 : 내가 이렇게 변경해야하는지에
public partial class Form1 : Form
{
//Form Member
MyFormState state = new MyFormState();
Button btn;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
//loading xml file if it exists
if (File.Exists("config.xml"))
{
loadConfig();
}
//Genrating dynamic buttons
// flowLayoutPanel1.Controls.Clear();
for (int i = 0; i <= 3; ++i)
{
btn = new Button();
btn.Text = " Equation " + i;
flowLayoutPanel1.Controls.Add(btn);
//click event of buttons
btn.Click += new EventHandler(btn_Click);
}
btn.BackColor = System.Drawing.ColorTranslator.FromHtml(state.ButtonBackColor);
}
//method to load file
private void loadConfig()
{
XmlSerializer ser = new XmlSerializer(typeof(MyFormState));
using (FileStream fs = File.OpenRead("config.xml"))
{
state = (MyFormState)ser.Deserialize(fs);
}
}
//saving the xml file and the button colors
private void writeConfig()
{
using (StreamWriter sw = new StreamWriter("config.xml"))
{
state.ButtonBackColor = System.Drawing.ColorTranslator.ToHtml(btn.BackColor);
XmlSerializer ser = new XmlSerializer(typeof(MyFormState));
ser.Serialize(sw, state);
}
}
int count = 0;
//backcolor change
void btn_Click(object sender, EventArgs e)
{
Button button = sender as Button;
if (count == 0)
{
button.BackColor = Color.Red;
count++;
}
else if (count == 1)
{
button.BackColor = Color.Blue;
count--;
}
}
//save file
private void btnSave_Click(object sender, EventArgs e)
{
writeConfig();
}
}
어떤 제안 그것은 나를 위해 일하는가? 감사합니다
"정적으로 저장하려면 버튼을 만들면 작동하지만 사용하는 방법은 괜찮습니다." 그래서 문제는 무엇인지, 나는 당신이 무슨 문제인지 확신 할 수 없다. 명확히 해 주시겠습니까? –
앱에 4 개의 버튼이 있지만 코드에 4 개의 버튼을 처리 할 논리가 없습니다. (직렬화뿐만 아니라 색상 변경도 가능) – Steve