views:

58

answers:

1

Hello I have this code that allow the user to create a button array, any were in a from. I can give 2 links so you guys can fallow what its done first MSDN and second HERE this one is a Simple sample of what I am doing (on Create an account now? Click NO and then download the zip file it takes 2 seconds and I am working on version 2010 but there is a 2008 back up )

The problem or questions is as follow:

I need to save what ever the user make for example if he added 5 buttons and save it next time when he opens his saved file he will see the 5 button in the same place he save them. This will allow the user to send the file to another person with the same program and the other person take a look at the created file.

I am working with C# 3.5 .net windows form app x86. this one is a Simple sample of what I am doing

I need code no ideas because i have read many ideas but no answers to my question this post is the simplest way i can ask.


Because of the miss understanding (comments below) I will post some code with is the second link above. BUT the problem is that I cant find any code to do what I am asking. guys i do not have any idea on how to even start ... i mean i know how to save a image from a picture box or some text but the button array is another thing.

Here is the code Simple example code or you can download the second file posted by me and compile it.

ButtomArray.cs

using System; using System.Collections; using System.Drawing; using System.Text; using System.Windows.Forms;

namespace ManageControls { public delegate void SendSelectedButton(object sender); public class ButtonArray : Hashtable { private readonly Form HostForm; public event SendSelectedButton SelectedButton; Point buttonLocation; int cntButton = 0;

    public ButtonArray(Form host)
    {
        HostForm = host;
    }

    public void AddButton(int left, int top)
    {
        Button btnElement = new Button();

        btnElement.Top = top;
        btnElement.Left = left;
        btnElement.Tag = cntButton;
        btnElement.Cursor = System.Windows.Forms.Cursors.Default;
        btnElement.FlatStyle = System.Windows.Forms.FlatStyle.System;
        btnElement.Text = "Button " + cntButton.ToString();
        btnElement.Click += new EventHandler(btnElement_Click);
       btnElement.MouseDown += new MouseEventHandler(btnElement_MouseDown);
        btnElement.MouseMove += new MouseEventHandler(btnElement_MouseMove);
        this.Add(cntButton.ToString(), btnElement);
        HostForm.Controls.Add(btnElement);
        btnElement.BringToFront();
        cntButton++;
    }

    public void RemoveButton(string btnIndex)
    {
        if (this.Count > 0)
        {
            HostForm.Controls.Remove((Button)this[btnIndex]);
            this.Remove(btnIndex);
        }
    }

    private void btnElement_Click(Object sender, System.EventArgs e)
    {
        if(null != SelectedButton)
            SelectedButton(sender);
    }

   private void btnElement_MouseDown(object sender, MouseEventArgs e)
    {
   buttonLocation = e.Location;
    }

   private void btnElement_MouseMove(object sender, MouseEventArgs e)
   {
       if (e.Button == MouseButtons.Left)
      {
          ((Button)sender).Left += e.X - buttonLocation.X;
           ((Button)sender).Top += e.Y - buttonLocation.Y;
      }
   }

}

}

frmMain.cs

using System; using System.Collections; using System.Drawing; using System.Text; using System.Windows.Forms;

namespace ManageControls { public partial class frmMain : Form { ButtonArray buttonArray; bool isClicked = false; Button btnSelected = new Button();

    public frmMain()
    {
        InitializeComponent();
        buttonArray = new ButtonArray(this);

        this.MouseDown += new  MouseEventHandler(frmMain_MouseDown);
        buttonArray.SelectedButton += new SendSelectedButton(buttonArray_SelectedButton);
    }

    private void buttonArray_SelectedButton(object sender)
    {
        btnSelected = sender as Button;

    }

    private void frmMain_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
    {
        if (isClicked)
        {
            buttonArray.AddButton(e.X, e.Y);
            this.Cursor = Cursors.Default;
            isClicked = false;
        }
    }

    private void tsButton_Click(object sender, EventArgs e)
    {
        isClicked = true;
        this.Cursor = Cursors.Cross;
    }

    private void tsDelete_Click(object sender, EventArgs e)
    {
        buttonArray.RemoveButton(btnSelected.Tag.ToString());
    }


}

}

Program.cs

using System; using System.Collections.Generic; using System.Windows.Forms;

namespace ManageControls { static class Program { /// /// The main entry point for the application. /// [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new frmMain()); } } }

and the frmMain.Designer.cs

namespace ManageControls { partial class frmMain { /// /// Required designer variable. /// private System.ComponentModel.IContainer components = null;

    /// <summary>
    /// Clean up any resources being used.
    /// </summary>
    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
    protected override void Dispose(bool disposing)
    {
        if (disposing && (components != null))
        {
            components.Dispose();
        }
        base.Dispose(disposing);
    }

    #region Windows Form Designer generated code

    /// <summary>
    /// Required method for Designer support - do not modify
    /// the contents of this method with the code editor.
    /// </summary>
    private void InitializeComponent()
    {
        this.tsMain = new System.Windows.Forms.ToolStrip();
        this.AddButton = new System.Windows.Forms.ToolStripButton();
        this.toolStripButton1 = new System.Windows.Forms.ToolStripSeparator();
        this.RemoveButton = new System.Windows.Forms.ToolStripButton();
        this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
        this.openLabel1 = new System.Windows.Forms.ToolStripLabel();
        this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
        this.saveLabel2 = new System.Windows.Forms.ToolStripLabel();
        this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator();
        this.tsMain.SuspendLayout();
        this.SuspendLayout();
        // 
        // tsMain
        // 
        this.tsMain.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
        this.AddButton,
        this.toolStripButton1,
        this.RemoveButton,
        this.toolStripSeparator1,
        this.openLabel1,
        this.toolStripSeparator2,
        this.saveLabel2,
        this.toolStripSeparator3});
        this.tsMain.Location = new System.Drawing.Point(0, 0);
        this.tsMain.Name = "tsMain";
        this.tsMain.RenderMode = System.Windows.Forms.ToolStripRenderMode.System;
        this.tsMain.Size = new System.Drawing.Size(740, 25);
        this.tsMain.TabIndex = 0;
        this.tsMain.Text = "toolStrip1";
        // 
        // AddButton
        // 
        this.AddButton.Image = global::ManageControls.Properties.Resources.Button;
        this.AddButton.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None;
        this.AddButton.ImageTransparentColor = System.Drawing.Color.Magenta;
        this.AddButton.Name = "AddButton";
        this.AddButton.Size = new System.Drawing.Size(63, 22);
        this.AddButton.Text = "Button";
        this.AddButton.Click += new System.EventHandler(this.tsButton_Click);
        // 
        // toolStripButton1
        // 
        this.toolStripButton1.Name = "toolStripButton1";
        this.toolStripButton1.Size = new System.Drawing.Size(6, 25);
        // 
        // RemoveButton
        // 
        this.RemoveButton.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center;
        this.RemoveButton.Image = global::ManageControls.Properties.Resources.Delete;
        this.RemoveButton.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None;
        this.RemoveButton.ImageTransparentColor = System.Drawing.Color.White;
        this.RemoveButton.Name = "RemoveButton";
        this.RemoveButton.Size = new System.Drawing.Size(57, 22);
        this.RemoveButton.Text = "Delete";
        this.RemoveButton.Click += new System.EventHandler(this.tsDelete_Click);
        // 
        // toolStripSeparator1
        // 
        this.toolStripSeparator1.Name = "toolStripSeparator1";
        this.toolStripSeparator1.Size = new System.Drawing.Size(6, 25);
        // 
        // openLabel1
        // 
        this.openLabel1.Name = "openLabel1";
        this.openLabel1.Size = new System.Drawing.Size(36, 22);
        this.openLabel1.Text = "Open";
        // 
        // toolStripSeparator2
        // 
        this.toolStripSeparator2.Name = "toolStripSeparator2";
        this.toolStripSeparator2.Size = new System.Drawing.Size(6, 25);
        // 
        // saveLabel2
        // 
        this.saveLabel2.Name = "saveLabel2";
        this.saveLabel2.Size = new System.Drawing.Size(31, 22);
        this.saveLabel2.Text = "Save";
        // 
        // toolStripSeparator3
        // 
        this.toolStripSeparator3.Name = "toolStripSeparator3";
        this.toolStripSeparator3.Size = new System.Drawing.Size(6, 25);
        // 
        // frmMain
        // 
        this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
        this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
        this.ClientSize = new System.Drawing.Size(740, 449);
        this.Controls.Add(this.tsMain);
        this.Name = "frmMain";
        this.Text = "Manage Controls - Sample";
        this.tsMain.ResumeLayout(false);
        this.tsMain.PerformLayout();
        this.ResumeLayout(false);
        this.PerformLayout();

    }

    #endregion

    private System.Windows.Forms.ToolStrip tsMain;
    private System.Windows.Forms.ToolStripButton AddButton;
    private System.Windows.Forms.ToolStripButton RemoveButton;
    private System.Windows.Forms.ToolStripSeparator toolStripButton1;
    private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
    private System.Windows.Forms.ToolStripLabel openLabel1;
    private System.Windows.Forms.ToolStripSeparator toolStripSeparator2;
    private System.Windows.Forms.ToolStripLabel saveLabel2;
    private System.Windows.Forms.ToolStripSeparator toolStripSeparator3;
}

}

PS i cant edit this better my fault sorry

+2  A: 

You don't give much information and i'm not going to download your code. But you can create a class which represents the properties that a button can hold such as position / size / text and serialise a collection of this class. Google .NET serialisation and there are hundreds of links on the topic. You can serialise an array and deserialise it easily from a file to dynamically get back all the buttons, then loop through the deserialised collection and add them back to your form.

James Hulse
OMG thanks a lot ill look into that serialization BTW i posted all the code from the file mentioned above i think its just a copy paste away to see it working. thanks again ill read... this subject its huge it will keep me busy for a day or two.
Bloodsville