• 0
akrm

save controls in xml file

سؤال

السلام عليكم ورحمه اللله وبركاته

عندي مشكله واقف فيها ومحتاج اي حد يساعد

انا عاوز اخزن user control مثل textbox (شكل ال user control وليس القيمه الي فيه )في xml file

وعند الضغط علي زرار يتم عمل load للtextbox

ياريت حد يساعدني في الموضوع ده

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

15 إجابة على هذا السؤال .

  • 0

ايه مافيش حد عارف

انا محتاج الموضوع ده ضروري:(:(

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

طب حد بفكر معايه

انا عمال افكر ومش لاقي حل:(

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

وعليكم السلام ورحمة الله وبركاته.

وضح يا أخي أكثر, ماذا تقصد بحفظ الـ user control مثل الـ text Box ؟ وتريد حفظ شكلها ؟ فماذا تقصد بالشكل , وبعد هذا تريد عند الضغط على زر .. يتم عمل Load للـ text box ؟ فما أدخل هذا بهذا وذاك بذاك ؟!

أنا لم أفهم شيئا :blink:

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

انا إلي فهمته انك عاوز تحتفض بالخصائص بتاعته

ولما تعوزها تبدأ تكوينها تاني

صح الكلام دا

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم ورحمه الله وبركاته

اسف علي عدم وضوح السؤال :rolleyes:

وهذا هو السؤال بصيغه اخري :)

هو ان اخزن الكل الخصائص بتاعه اي control في فيل xml

مثل

button1 = new System.Windows.Forms.Button();
button1.Location = new System.Drawing.Point(216, 32);

button1.Name = "button1";
button1.Size = new System.Drawing.Size(112, 23);
button1.TabIndex = 1;
button1.Text = "button1";

وعند عمل load للفيل ده يتم خلق هذا الكنترول

هذا كل شيئ :wacko:

ارجوا المساعده

تم تعديل بواسطه akrm
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

نعم , اقرأ هذا ربما يفيدك :

http://www.arabteam2000-forum.com/index.php?showtopic=109882

فأنت لا تحتاج دائما إلى تسجيل جميع المعلومات عن الـ Controls فيكفيك فقط تسجيل بعض المعلومات التي تعتبرها هامة ( تختلف الأهمية حسب طبيعة البرنامج والـ Control ) فربما ما يكفيك فقط هو الـ Text والـ Size والـ Position والخ. فقم بتحديد المعلومات التي تريدها واستخدم مثلا XmlTextWriter لكتابتها فهو سهل للغاية واستخدم XmlTextReader لقراءة الملف ومن ثم اسناد القيم للـ Control أثناء الـ Loading.

وعموما أنا لا أدري طبيعة برنامجك, لكن أنصحك أن تقرأ أولا عن الـ DynamicProperties الموجودة في الفيجوال ستوديو أو/و عن الـ appSettings الموجودة في ملفات الـ config الخاصة بالبرامج مع كلاس AppSettingsReader, فربما تفي بالغرض هذه الأشياء وتوفر عليك الوقت, فهي مختصه بحفظ قيم الخواص في ملف الـ config واسترجاعها أثناء التشغيل.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

شكر اخي معتز علي الرد هذا ما كنت ابحث عنه

بس ياريت توضح مثال بيسط كيف اكتب الخواص ده داخل xml file بأستخدام xmltextwriter

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم

ياريت لو سمحت توضح ازاي استخدمxmltext writerلحفظ الخواص بتاعه ال control

لكي تظهر بالشكل التالي

 </control>
<control type="System.Windows.Forms.Button">
<position>
<height>23</height>
<width>75</width>
<top>144</top>
<left>64</left>
</position>
<controls />
<name>button1</name>
<text>button1</text>
<tabIndex>1</tabIndex>
<event-handlers>
<eventInfo eventName=
"Click" eventHandler="button1_Click" />
<eventInfo eventName=
"EnabledChanged" eventHandler="button1_
EnabledChanged" />
</event-handlers>

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم ورحمه الله وبركاته

انا عملت محاوله كده صغيره بس بيطللع error

ياريت اي حد او الاخ معتز يجربوا البرنامج ويفكروا معايه في حل للمشكله ده

او ممكن نناقش افكار مختلفه غير الي انا جربتها

بس اي حد يكون متابع معايه

علشان محتاج المضوع ده ضروري هيقف عليه باقي البرنامج كله

WindowsApplication8.rar

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

وعليكم السلام ورحمة الله وبركاته.

أنا كتبت لك مثال باستخدام الـ XmlTextWriter بـ Schema تشبه ما تريدها باعتبار أن الزر اسمه yourButton :

XmlTextWriter yourWriter = new XmlTextWriter("yourFile.xml",System.Text.Encoding.Unicode);

//start document
yourWriter.WriteStartDocument();

//start <control...
yourWriter.WriteStartElement("control");

//write type attribute in the <control> element
yourWriter.WriteAttributeString("type",yourButton.GetType().FullName);

//write name,text and tabindex
yourWriter.WriteElementString("name",yourButton.Name);
yourWriter.WriteElementString("text",yourButton.Text);
yourWriter.WriteElementString("tabIndex",yourButton.TabIndex.ToString());

// start location element
yourWriter.WriteStartElement("location");

// write x and y
yourWriter.WriteElementString("x",yourButton.Location.X.ToString());//X
yourWriter.WriteElementString("y",yourButton.Location.Y.ToString());//Y

//end location
yourWriter.WriteEndElement();


//start size
yourWriter.WriteStartElement("size");

//write width and height
yourWriter.WriteElementString("width",yourButton.Width.ToString());//width
yourWriter.WriteElementString("height",yourButton.Height.ToString());//height

//end size
yourWriter.WriteEndElement();

//end <control>
yourWriter.WriteEndElement();

//end document
yourWriter.WriteEndDocument();

//close the XmlWriter
yourWriter.Close();

الناتج سيكون كالتالي ( وضعت المسافات الفراغة لكي تسهل القراءة, شاهد الملف الخارج في الـ IE أفضل ) :

 <?xml version="1.0" encoding="utf-16" ?> 

<control type="System.Windows.Forms.Button">

<name>Button1</name>
<text>Ok</text>
<tabIndex>3</tabIndex>

<location>
<x>176</x>
<y>208</y>
</location>

<size>
<width>75</width>
<height>23</height>
</size>

</control>

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم

الحمد لله نجحت في ان اجمع كل ال controls الي موجوده علي الفورم واحولها الي xml file

واصبح شكل الملف كالاتي

[code ]
<?xml version="1.0" standalone="yes"?>
<!--Sample for for exercising PFM_StateData namespace-->
<states_StateDataForm_DemoForm>
<Attributes>
<Type>System.Windows.Forms.TextBox</Type>
<Name>txtSummary</Name>
<Width>358</Width>
<Height>51</Height>
<Top>16</Top>
<Left>12</Left>
</Attributes>
<Attributes>
<Type>System.Windows.Forms.Label</Type>
<Name>lblOfText</Name>
<Width>96</Width>
<Height>13</Height>
<Top>16</Top>
<Left>70</Left>
</Attributes>
<Attributes>
<Type>System.Windows.Forms.TextBox</Type>
<Name>textBox1</Name>
<Width>249</Width>
<Height>20</Height>
<Top>10</Top>
<Left>119</Left>
</Attributes>
<Attributes>
<Type>System.Windows.Forms.Label</Type>
<Name>lblCombo</Name>
<Width>96</Width>
<Height>13</Height>
<Top>13</Top>
<Left>94</Left>
</Attributes>
<Attributes>
<Type>System.Windows.Forms.Label</Type>
<Name>label3</Name>
<Width>441</Width>
<Height>13</Height>
<Top>7</Top>
<Left>142</Left>
</Attributes>
<Attributes>
<Type>System.Windows.Forms.Label</Type>
<Name>lblRichText</Name>
<Width>81</Width>
<Height>13</Height>
<Top>12</Top>
<Left>164</Left>
</Attributes>

ولكن الان انا اريد ان احول الفيل ده الي arraylist

لكي استخدم ال arraylist في اعاده خلق ال controls

فهل توجد طريقه لتحويل ال xml ال array list

تم تعديل بواسطه akrm
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم

دلوقتي انا عملت LIST اشيل فيها ال XML FILE

عن طريق for

GuiEngine.Lists.AttributList attributes = new GuiEngine.Lists.AttributList();

System.Xml.XmlNodeList listAttributes = xmlElement.GetElementsByTagName("Attributes");
for (int i = 0; i < listAttributes.Count; i++)
{
if (listAttributes[i].ParentNode == xmlElement)
for (int j = 0; j < listAttributes[i].ChildNodes.Count; ++j)


attributes.Add(listAttributes[i].ChildNodes[j].Name, listAttributes[i].ChildNodes[j].InnerText);

وهذا هو شكل الفيل

<?xml version="1.0" standalone="yes"?>
<!--Sample for for exercising PFM_StateData namespace-->
<states_StateDataForm_DemoForm>
<Attributes>
<Type>TextBox</Type>
<Name>txtSummary</Name>
<Width>358</Width>
<Height>51</Height>
<Top>16</Top>
<Left>12</Left>
</Attributes>
<Attributes>
<Type>Label</Type>
<Name>lblOfText</Name>
<Width>96</Width>
<Height>13</Height>
<Top>16</Top>
<Left>70</Left>
</Attributes>

وبالفعل بيتم تخزين اول جزئ من الفيل عندما تكون ال i=0 الي هو ده

	  <Attributes>
<Type>TextBox</Type>
<Name>txtSummary</Name>
<Width>358</Width>
<Height>51</Height>
<Top>16</Top>
<Left>12</Left>
</Attributes>

لكن عندما تكون ال i=1

بيظهر exaption

Argument exception was un handled

An entry with the same key already exists.

حد يعرف السبب

او حد يعرف المشكله فين

ياريت اي حد يجاوبني او الاخ معتز يشارك برأيه

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

كيفك اخ akrm.....

......باابداية اني راح اعتمد على هذا Xml

<?xml version="1.0" standalone="yes"?>
<!--Sample for for exercising PFM_StateData namespace-->
<states_StateDataForm_DemoForm>
<Attributes>
<Type>TextBox</Type>
<Name>txtSummary</Name>
<Width>358</Width>
<Height>51</Height>
<Top>16</Top>
<Left>12</Left>
</Attributes>
<Attributes>
<Type>Label</Type>
<Name>lblOfText</Name>
<Width>96</Width>
<Height>13</Height>
<Top>16</Top>
<Left>70</Left>
</Attributes>

.......بالبداية تعمل Class جديد لنفرض اسمه Attributes :

Public Class Attributes
{
public object controlType;
public string name;
public int width;
public int height;
public int top;
public int left;
{

>>>والأن تبدا بقراءة الXml file باستخدام XmlReader ...ثم نخخزنها في List<>(Generics) ...

......

public void ReadXmlAttributes()
{
XmlReader rdr= XmlReader.Create("@"D:\xml1.xml");
List<Attributes> Mylist= new List<Attributes>();
Attributes atrbs= null;
while(rdr.Read())
{
if(rdr.NodeType==XmlNodeType.Element)
{
if(rdr.Name=="Attributes")
{
atrbs=new Attributes();
}
if(rdr.Name=="Type")
{
atrbs.controlType=rdr.ReadElementContentAsObject();
}
if(rdr.Name=="Name")
{
atrbs.name=rdr.ReadElementContentAsString();
}
if(rdr.Name=="Width")
{
atrbs.width=rdr.ReadElementContentAsInt();
}
if(rdr.Name=="Height")
{
atrbs.height=rdr.ReadElementContentAsInt();
}
if(rdr.Name=="Top")
{
atrbs.top=rdr.ReadElementContentAsInt();
}
if(rdr.Name=="Left")
{
atrbs.left=rdr.ReadElementContentAsInt();
}
}

if(rdr.NodeType==XmlNodeType.EndElement && rdr.Name=="Attributes")
{
Mylist.Add(atrbs);
}
}
}

>>والآن يمكنك اخذ المعلومات من Mylist كالتالي :

foreach(Attributes myAtrb in Mylist)
{
if(myAtrb.controlType is System.Windows.Forms.TextBox)
{
TextBox txbx=new TextBox();
txbx.Name=myAtrb.name;
txbx.Width=myAtrb.width;
txbx.Height=myAtrb.height;
txbx.Left=myAtrb.left;
txbx.Top=myAtrb.top;
}
}

.....ويجب استخدام .Net 2.0 ...مع

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

..اتمنى وصلتك الفكرة

........................Keep The Faith...................

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم ورحمه الله وبركاته

الف شكر اخيbsbs

تسلم ياغالي:)

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

>>>بشر هل عمل الكود

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
زوار
This topic is now closed to further replies.

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .