рдкрд░рд┐рдЪрдп
рдореЗрд░реЗ
FAQ.Net рдПрдкреНрд▓рд┐рдХреЗрд╢рди
(рд╡рд┐рдВрдбреЛрдЬ рдиреЛрдЯ рдкреНрд░реЛрдЧреНрд░рд╛рдо) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрд╣рд▓рд╛ рд▓реЗрдЦ рдкреЛрд╕реНрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдкрд╣рд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджрд┐рдЦрд╛рдИ рджрд┐рдП рдЬреЛ рдЕрдкрдиреЗ рдиреЛрдЯ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдФрд░ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рд░реБрдЪрд┐ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд░рдВрдЧ рдФрд░ рдлрд╝реЙрдиреНрдЯ рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдХреЗ рдЗрд╕рдХреЗ рдЖрдХрд░реНрд╖рдг рдХреЛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдЪрд╛рд░ рдЙрддреНрдкрдиреНрди рд╣реБрдЖред
рдЖрд╡реЗрджрди рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдБ
- XML рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдШрдЯрдХреЛрдВ рдХреЗ рдЧреБрдгреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдФрд░ рд▓реЛрдб рдХрд░рдирд╛
- рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдкрд╛рд╕ рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рдЙрдкрдХрд░рдг рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП
- рдХрд╕реНрдЯрдо рдШрдЯрдХреЛрдВ рдХреА рд╕реВрдЪреА рдХреЛ рдмрд╣реБрдд рд╕рд░рд▓рддрд╛ рд╕реЗ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП (рдХреЛрдб рдХреА рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ)
- рдЬрдм рдХреЛрдИ рд╕рдВрдкрддреНрддрд┐ рдореВрд▓реНрдп рдмрджрд▓рддрд╛ рд╣реИ, рддреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рддреБрд░рдВрдд рдлреЙрд░реНрдо рдкрд░ рдмрджрд▓рд╛рд╡ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП
- рдПрдХ рд░рджреНрдж рдмрдЯрди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдЖрдкрдХреЛ рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛
рдХрд╛рдо рдХрд╛ рдирддреАрдЬрд╛
рд╕реВрд░рдд рдЦрд┐рдбрд╝рдХреА:

рдЙрдкрд╕реНрдерд┐рддрд┐ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╕реЗ рдкрд╣рд▓реЗ рдФрд░ рдмрд╛рдж рдореЗрдВ:

рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ
- рдШрдЯрдХ рдЧреБрдг рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдФрд░ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП PropertyGridEx рдШрдЯрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
- XML рдореЗрдВ рднрдВрдбрд╛рд░рдг рдЧреБрдгреЛрдВ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ CustomDesignControl рд╡рд░реНрдЧ рдмрдирд╛рдПрдБ
- рдПрдХ MainForm рдлреЙрд░реНрдо рдмрдирд╛рдПрдБ, рдЬрд┐рд╕ рдкрд░ рд╣рдо рдЙрдкрд╕реНрдерд┐рддрд┐ рдмрджрд▓реЗрдВрдЧреЗ
- AppSettingsForm рдлреЙрд░реНрдо рдмрдирд╛рдПрдВ, рдЬрд┐рд╕ рдкрд░ рд╣рдо MainForm рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЛ рдХрд╕реНрдЯрдорд╛рдЗрдЬрд╝ рдХрд░реЗрдВрдЧреЗ
- XML рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рдЖрд╕рд╛рдиреА рдХреЗ рд▓рд┐рдП SettingsXml рд╡рд░реНрдЧ рдмрдирд╛рдПрдВ
рдЙрдкрд╕реНрдерд┐рддрд┐ рдореЗрдВ рдкреВрд░реНрд╡рд╡рдд рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рдмрджрд▓рддрд╛ рд╣реИ
рдЙрдкрд╕реНрдерд┐рддрд┐ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдЙрдиреНрдореВрд▓рди (рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рдкреИрд░рд╛рдЧреНрд░рд╛рдл 5) рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЙрди рдШрдЯрдХреЛрдВ рдХреЗ рдЧреБрдгреЛрдВ рдХреЛ рдХреНрд▓реЛрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рддрд░реАрдХрд╛ рдЦреЛрдЬрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдЬреЛ рд╕реНрдореГрддрд┐ рдореЗрдВ рдмрдирд╛рдП рдЬрд╛рдПрдВрдЧреЗ рдФрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдШрдЯрдХреЛрдВ рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВрдЧреЗред
рдХреНрд▓реЛрдирд┐рдВрдЧ рдСрдмреНрдЬреЗрдХреНрдЯ:
public static class ControlExtensions { public static T Clone<T>(T controlToClone) where T : Control { PropertyInfo[] controlProperties = typeof(T).GetProperties(BindingFlags.Public | BindingFlags.Instance); T instance = Activator.CreateInstance<T>(); RichTextBox rtb = new RichTextBox(); foreach (PropertyInfo propInfo in controlProperties) { if (propInfo.Name == "Parent") continue; if (propInfo.CanWrite) { if (propInfo.Name != "WindowTarget") { propInfo.SetValue(instance, propInfo.GetValue(controlToClone, null), null); } } } return instance; }
рдореИрдВрдиреЗ рдХреЛрдб рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдИ, рдЕрдирд╛рд╡рд╢реНрдпрдХ рдЧреБрдгреЛрдВ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛, рдЬрд┐рдиреНрд╣реЗрдВ рд░рдВрдЧреЛрдВ рдФрд░ рдлрд╝реЙрдиреНрдЯ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╕рд╣реЗрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
рдХреЛрдб рдХреА рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЗрд╕ рд╡рд┐рдзрд┐ рдХреА рдХрдорд┐рдпреЛрдВ рдХрд╛ рддреБрд░рдВрдд рдкрддрд╛ рдЪрд▓рд╛:
- рдХрд┐рд╕реА рднреА рдирд┐рдпрдВрддреНрд░рдг рдХреЛ рдирд┐рдпрдВрддреНрд░рдг рд╡рд░реНрдЧ рдореЗрдВ рдбрд╛рд▓рдиреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЧреБрдгреЛрдВ рдХрд╛ рдЖрдзрд╛ рднрд╛рдЧ рдЦреЛ рд╕рдХрддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, DataGridView рдШрдЯрдХ рдХреЛ рдирд┐рдпрдВрддреНрд░рдг рд╡рд░реНрдЧ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЧреБрдгреЛрдВ рдХрд╛ рдЕрдкрдирд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реЗрдЯ рд╣реИ)
- рдЬрдм рдХрд┐рд╕реА рдШрдЯрдХ рдХрд╛ рдХреНрд▓реЛрдирд┐рдВрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдХреБрдЫ рдЧреБрдг (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП: DataGridView рд╕реЗрд▓ рдХреЗ рдЕрдВрджрд░ рдлрд╝реЙрдиреНрдЯ рд░рдВрдЧ) рдХрд╛ рдХреНрд▓реЛрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреНрд▓реЛрди рдХрд┐рдП рдЧрдП рдШрдЯрдХ рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ рдмрдирд╛рддреЗ рд╣реИрдВ (рд╢рд╛рдпрдж рдпрд╣ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрд╕рдХреЗ рдЖрдВрддрд░рд┐рдХ рдЧреБрдгреЛрдВ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдХрд┐рд╕реА рддрд░рд╣ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рд╕реМрдВрдкрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ)ред
рдЙрдиреНрд╣реЛрдВрдиреЗ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдХреНрд▓реЛрдирд┐рдВрдЧ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рджреВрд╕рд░реЗ рдкреИрд░рд╛рдЧреНрд░рд╛рдл рдкрд░ рдкреНрд░рдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ред
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирдП рдСрдкрд░реЗрдЯрд░ рдХреЗ рд╕рд╛рде рд╡рд╛рдВрдЫрд┐рдд рдкреНрд░рдХрд╛рд░ рдХрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВред
DataGridView dgvClone = new DataGridView();
рдХреЛрдИ рдлрд╛рдпрджрд╛ рдирд╣реАрдВ рд╣реБрдЖ, рдШрдЯрдХ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде рдерд╛ред
рдореИрдВрдиреЗ рддрдм рдирдП рдСрдкрд░реЗрдЯрд░ рдХреЗ рд╕рд╛рде рд╕рдВрдкрддреНрддрд┐ рдмрдирд╛рдиреЗ рдФрд░ рд╕реЗрдЯрд╡реЗрд▓ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрд╕ рдкрд░ рдореВрд▓реНрдп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА:
propInfo.SetValue(_controls[i], propInfo.GetValue(_controlsBeforeChange[i], null), null);
рдФрд░ рдЗрд╕ рд╡рд┐рдзрд┐ рдиреЗ рдХреЛрдИ рдкрд░рд┐рдгрд╛рдо рдирд╣реАрдВ рджрд┐рдпрд╛ред рдЬрдм рдПрдХ рдЧреБрдг рдПрдХ рдШрдЯрдХ рдореЗрдВ рдмрджрд▓рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХреНрд▓реЛрди рдХрд┐рдП рдЧрдП рдШрдЯрдХ рдореЗрдВ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдореИрдВрдиреЗ рдЕрдиреНрдп рддрд░реАрдХреЛрдВ рдХреА рддрд▓рд╛рд╢ рдирд╣реАрдВ рдХреА рдФрд░ рдХрд╛рд░реНрдп рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рд╕рд╣реЗрдЬрдиреЗ рдпрд╛ рдкреБрдирд░рд╛рд░рдВрдн рдХреЛ рд░рджреНрдж рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде рдЖрд╡реЗрджрди рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдХреЗ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рд╡рд╛рдкрд╕ рдХрд░ рджрд┐рдпрд╛ред рдЗрд╕рдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдореЛрд░реА рдХреЛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд░реВрдк рд╕реЗ рд╕рд╣реЗрдЬрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреА, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдХреНрд▓реЛрди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред
рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рдЕрдиреБрдХреВрд▓рди рдХреЗ рд╕рд╛рде рдЙрджрд╛рд╣рд░рдг рдХреЗ рдЖрд╡реЗрджрди
рдмрд╕, рдореИрдВрдиреЗ рдПрдХ
рд░реЗрдбреА-рдореЗрдб рдХреЛрдб рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рд╣рд░ рдХреЛрдИ рдЖрд╡реЗрджрди рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд┐рдП рдмрд┐рдирд╛ рдЙрдкрд╕реНрдерд┐рддрд┐ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд░рджреНрдж рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░реНрдп рдХреЛ рдЬрд╛рдВрдЪ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╕рдВрднрд╡рддрдГ рд╣рдореЗрдВ рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛ рд╕рдХрддрд╛ рд╣реИред
рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдЬрдм рдЖрдк "рдСрдЯреЛрдЯреЗрд╕реНрдЯ" рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ DataGridView рдШрдЯрдХ рдХреА рдПрдХ рдЧреНрд░реЗ рдкреГрд╖реНрдарднреВрдорд┐ рд╣реЛрддреА рд╣реИ рдФрд░ рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХрд╛ рдлрд╝реЙрдиреНрдЯ рдЫреЛрдЯрд╛ рд╣реЛрддрд╛ рд╣реИред

рдбрд╛рдЙрдирд▓реЛрдб Windows рдЕрдиреБрдкреНрд░рдпреЛрдЧ FAQ.Net (рдореБрдлреНрдд):
(x64)
yadi.sk/d/sq3g4NOD3Zt7ZY(x86)
yadi.sk/d/NKXeyUWH3Zt8PQрд╡реАрдХреЗ рд╕рдореВрд╣рд╕реНрд░реЛрдд рдХреЛрдб FAQ.Netрдирд┐рд╖реНрдХрд░реНрд╖
рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдХрдИ WinForms рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ, рдЗрд╕ рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдЕрдВрдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдкрд╛рд╕ рдЕрдкрдиреЗ рд╕реНрд╡рд╛рдж рдФрд░ рд░рдВрдЧ рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рд╣реЛрдЧрд╛ред