添加项目文件。

This commit is contained in:
Sunny 2020-05-11 21:11:29 +08:00
parent e8d91685a2
commit 99e9eeee16
344 changed files with 64546 additions and 0 deletions

674
LICENSE Normal file
View File

@ -0,0 +1,674 @@
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The GNU General Public License is a free, copyleft license for
software and other kinds of works.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users. We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors. You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights. Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received. You must make sure that they, too, receive
or can get the source code. And you must show them these terms so they
know their rights.
Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.
For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software. For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.
Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so. This is fundamentally incompatible with the aim of
protecting users' freedom to change the software. The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable. Therefore, we
have designed this version of the GPL to prohibit the practice for those
products. If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.
Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary. To prevent this, the GPL assures that
patents cannot be used to render the program non-free.
The precise terms and conditions for copying, distribution and
modification follow.
TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based
on the Program.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
form of a work.
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
The Corresponding Source for a work in source code form is that
same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Use with the GNU Affero General Public License.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
{one line to give the program's name and a brief idea of what it does.}
Copyright (C) {year} {name of author}
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:
{project} Copyright (C) {year} {fullname}
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, your program's commands
might be different; for a GUI interface, you would use an "about box".
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
<http://www.gnu.org/licenses/>.
The GNU General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
<http://www.gnu.org/philosophy/why-not-lgpl.html>.

228
SunnyUI.Demo/Controls/FAvatar.Designer.cs generated Normal file
View File

@ -0,0 +1,228 @@
namespace Sunny.UI.Demo
{
partial class FAvatar
{
/// <summary>
/// Required designer variable.
/// </summary>
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.uiAvatar1 = new Sunny.UI.UIAvatar();
this.uiAvatar2 = new Sunny.UI.UIAvatar();
this.uiAvatar3 = new Sunny.UI.UIAvatar();
this.uiAvatar4 = new Sunny.UI.UIAvatar();
this.uiLabel1 = new Sunny.UI.UILabel();
this.uiLabel2 = new Sunny.UI.UILabel();
this.uiLabel3 = new Sunny.UI.UILabel();
this.uiLabel4 = new Sunny.UI.UILabel();
this.uiContextMenuStrip1 = new Sunny.UI.UIContextMenuStrip();
this.ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripSeparator();
this.退ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.uiLine1 = new Sunny.UI.UILine();
this.PagePanel.SuspendLayout();
this.uiContextMenuStrip1.SuspendLayout();
this.SuspendLayout();
//
// PagePanel
//
this.PagePanel.Controls.Add(this.uiLine1);
this.PagePanel.Controls.Add(this.uiLabel4);
this.PagePanel.Controls.Add(this.uiLabel3);
this.PagePanel.Controls.Add(this.uiLabel2);
this.PagePanel.Controls.Add(this.uiLabel1);
this.PagePanel.Controls.Add(this.uiAvatar4);
this.PagePanel.Controls.Add(this.uiAvatar3);
this.PagePanel.Controls.Add(this.uiAvatar2);
this.PagePanel.Controls.Add(this.uiAvatar1);
this.PagePanel.Text = "";
//
// uiAvatar1
//
this.uiAvatar1.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiAvatar1.Location = new System.Drawing.Point(102, 50);
this.uiAvatar1.Name = "uiAvatar1";
this.uiAvatar1.Size = new System.Drawing.Size(60, 60);
this.uiAvatar1.TabIndex = 0;
this.uiAvatar1.Text = "uiAvatar1";
//
// uiAvatar2
//
this.uiAvatar2.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiAvatar2.Icon = Sunny.UI.UIAvatar.UIIcon.Image;
this.uiAvatar2.Image = global::Sunny.UI.Demo.Properties.Resources.SunnyUISmall;
this.uiAvatar2.Location = new System.Drawing.Point(30, 50);
this.uiAvatar2.Name = "uiAvatar2";
this.uiAvatar2.Size = new System.Drawing.Size(60, 60);
this.uiAvatar2.TabIndex = 1;
this.uiAvatar2.Text = "uiAvatar2";
//
// uiAvatar3
//
this.uiAvatar3.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
this.uiAvatar3.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiAvatar3.Icon = Sunny.UI.UIAvatar.UIIcon.Text;
this.uiAvatar3.Location = new System.Drawing.Point(174, 50);
this.uiAvatar3.Name = "uiAvatar3";
this.uiAvatar3.Size = new System.Drawing.Size(60, 60);
this.uiAvatar3.Style = Sunny.UI.UIStyle.Custom;
this.uiAvatar3.TabIndex = 2;
this.uiAvatar3.Text = "Avatar";
//
// uiAvatar4
//
this.uiAvatar4.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiAvatar4.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(128)))), ((int)(((byte)(128)))), ((int)(((byte)(255)))));
this.uiAvatar4.Location = new System.Drawing.Point(362, 50);
this.uiAvatar4.Name = "uiAvatar4";
this.uiAvatar4.Size = new System.Drawing.Size(60, 60);
this.uiAvatar4.Style = Sunny.UI.UIStyle.Custom;
this.uiAvatar4.Symbol = 61715;
this.uiAvatar4.TabIndex = 3;
this.uiAvatar4.Text = "uiAvatar4";
this.uiAvatar4.Click += new System.EventHandler(this.uiAvatar4_Click);
//
// uiLabel1
//
this.uiLabel1.AutoSize = true;
this.uiLabel1.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiLabel1.Location = new System.Drawing.Point(39, 117);
this.uiLabel1.Name = "uiLabel1";
this.uiLabel1.Size = new System.Drawing.Size(42, 21);
this.uiLabel1.TabIndex = 4;
this.uiLabel1.Text = "图片";
this.uiLabel1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// uiLabel2
//
this.uiLabel2.AutoSize = true;
this.uiLabel2.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiLabel2.Location = new System.Drawing.Point(111, 117);
this.uiLabel2.Name = "uiLabel2";
this.uiLabel2.Size = new System.Drawing.Size(42, 21);
this.uiLabel2.TabIndex = 5;
this.uiLabel2.Text = "图标";
this.uiLabel2.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// uiLabel3
//
this.uiLabel3.AutoSize = true;
this.uiLabel3.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiLabel3.Location = new System.Drawing.Point(183, 117);
this.uiLabel3.Name = "uiLabel3";
this.uiLabel3.Size = new System.Drawing.Size(42, 21);
this.uiLabel3.TabIndex = 6;
this.uiLabel3.Text = "文字";
this.uiLabel3.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// uiLabel4
//
this.uiLabel4.AutoSize = true;
this.uiLabel4.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiLabel4.Location = new System.Drawing.Point(355, 117);
this.uiLabel4.Name = "uiLabel4";
this.uiLabel4.Size = new System.Drawing.Size(74, 21);
this.uiLabel4.TabIndex = 7;
this.uiLabel4.Text = "左键菜单";
this.uiLabel4.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// uiContextMenuStrip1
//
this.uiContextMenuStrip1.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiContextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.ToolStripMenuItem,
this.ToolStripMenuItem,
this.toolStripMenuItem1,
this.退ToolStripMenuItem});
this.uiContextMenuStrip1.Name = "uiContextMenuStrip1";
this.uiContextMenuStrip1.Size = new System.Drawing.Size(113, 88);
//
// 设置ToolStripMenuItem
//
this.ToolStripMenuItem.Name = "设置ToolStripMenuItem";
this.ToolStripMenuItem.Size = new System.Drawing.Size(112, 26);
this.ToolStripMenuItem.Text = "设置";
//
// 更改密码ToolStripMenuItem
//
this.ToolStripMenuItem.Name = "更改密码ToolStripMenuItem";
this.ToolStripMenuItem.Size = new System.Drawing.Size(112, 26);
this.ToolStripMenuItem.Text = "密码";
//
// toolStripMenuItem1
//
this.toolStripMenuItem1.Name = "toolStripMenuItem1";
this.toolStripMenuItem1.Size = new System.Drawing.Size(109, 6);
//
// 退出ToolStripMenuItem
//
this.退ToolStripMenuItem.Name = "退出ToolStripMenuItem";
this.退ToolStripMenuItem.Size = new System.Drawing.Size(112, 26);
this.退ToolStripMenuItem.Text = "退出";
//
// uiLine1
//
this.uiLine1.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiLine1.Location = new System.Drawing.Point(30, 20);
this.uiLine1.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine1.Name = "uiLine1";
this.uiLine1.Size = new System.Drawing.Size(670, 20);
this.uiLine1.TabIndex = 19;
this.uiLine1.Text = "UIAvatar";
this.uiLine1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// FAvatar
//
this.AutoScaleDimensions = new System.Drawing.SizeF(10F, 21F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 450);
this.Name = "FAvatar";
this.Text = "Avatar";
this.Controls.SetChildIndex(this.PagePanel, 0);
this.PagePanel.ResumeLayout(false);
this.PagePanel.PerformLayout();
this.uiContextMenuStrip1.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
private UILabel uiLabel4;
private UILabel uiLabel3;
private UILabel uiLabel2;
private UILabel uiLabel1;
private UIAvatar uiAvatar4;
private UIAvatar uiAvatar3;
private UIAvatar uiAvatar2;
private UIAvatar uiAvatar1;
private UIContextMenuStrip uiContextMenuStrip1;
private System.Windows.Forms.ToolStripMenuItem ToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem ToolStripMenuItem;
private System.Windows.Forms.ToolStripSeparator toolStripMenuItem1;
private System.Windows.Forms.ToolStripMenuItem 退ToolStripMenuItem;
private UILine uiLine1;
}
}

View File

@ -0,0 +1,17 @@
using System;
namespace Sunny.UI.Demo
{
public partial class FAvatar : UITitlePage
{
public FAvatar()
{
InitializeComponent();
}
private void uiAvatar4_Click(object sender, EventArgs e)
{
uiContextMenuStrip1.Show(uiAvatar4, 0, uiAvatar4.Height);
}
}
}

View File

@ -0,0 +1,123 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="uiContextMenuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
</root>

1029
SunnyUI.Demo/Controls/FButton.Designer.cs generated Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,13 @@
using System;
using System.Drawing;
namespace Sunny.UI.Demo
{
public partial class FButton : UITitlePage
{
public FButton()
{
InitializeComponent();
}
}
}

View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -0,0 +1,153 @@
namespace Sunny.UI.Demo
{
partial class FCheckBox
{
/// <summary>
/// Required designer variable.
/// </summary>
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.uiCheckBox1 = new Sunny.UI.UICheckBox();
this.uiLine1 = new Sunny.UI.UILine();
this.uiCheckBox3 = new Sunny.UI.UICheckBox();
this.uiCheckBox4 = new Sunny.UI.UICheckBox();
this.uiCheckBox2 = new Sunny.UI.UICheckBox();
this.uiCheckBoxGroup1 = new Sunny.UI.UICheckBoxGroup();
this.PagePanel.SuspendLayout();
this.SuspendLayout();
//
// PagePanel
//
this.PagePanel.Controls.Add(this.uiCheckBoxGroup1);
this.PagePanel.Controls.Add(this.uiCheckBox2);
this.PagePanel.Controls.Add(this.uiCheckBox4);
this.PagePanel.Controls.Add(this.uiCheckBox3);
this.PagePanel.Controls.Add(this.uiLine1);
this.PagePanel.Controls.Add(this.uiCheckBox1);
this.PagePanel.Size = new System.Drawing.Size(800, 521);
//
// uiCheckBox1
//
this.uiCheckBox1.Checked = true;
this.uiCheckBox1.Cursor = System.Windows.Forms.Cursors.Hand;
this.uiCheckBox1.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiCheckBox1.Location = new System.Drawing.Point(30, 48);
this.uiCheckBox1.Name = "uiCheckBox1";
this.uiCheckBox1.Padding = new System.Windows.Forms.Padding(22, 0, 0, 0);
this.uiCheckBox1.Size = new System.Drawing.Size(150, 35);
this.uiCheckBox1.TabIndex = 0;
this.uiCheckBox1.Text = "uiCheckBox1";
//
// uiLine1
//
this.uiLine1.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiLine1.Location = new System.Drawing.Point(30, 20);
this.uiLine1.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine1.Name = "uiLine1";
this.uiLine1.Size = new System.Drawing.Size(670, 20);
this.uiLine1.TabIndex = 19;
this.uiLine1.Text = "UICheckBox";
this.uiLine1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// uiCheckBox3
//
this.uiCheckBox3.Checked = true;
this.uiCheckBox3.Cursor = System.Windows.Forms.Cursors.Hand;
this.uiCheckBox3.Enabled = false;
this.uiCheckBox3.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiCheckBox3.Location = new System.Drawing.Point(354, 46);
this.uiCheckBox3.Name = "uiCheckBox3";
this.uiCheckBox3.Padding = new System.Windows.Forms.Padding(22, 0, 0, 0);
this.uiCheckBox3.Size = new System.Drawing.Size(150, 35);
this.uiCheckBox3.TabIndex = 21;
this.uiCheckBox3.Text = "uiCheckBox3";
//
// uiCheckBox4
//
this.uiCheckBox4.Cursor = System.Windows.Forms.Cursors.Hand;
this.uiCheckBox4.Enabled = false;
this.uiCheckBox4.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiCheckBox4.Location = new System.Drawing.Point(516, 46);
this.uiCheckBox4.Name = "uiCheckBox4";
this.uiCheckBox4.Padding = new System.Windows.Forms.Padding(22, 0, 0, 0);
this.uiCheckBox4.Size = new System.Drawing.Size(150, 35);
this.uiCheckBox4.TabIndex = 22;
this.uiCheckBox4.Text = "uiCheckBox4";
//
// uiCheckBox2
//
this.uiCheckBox2.Cursor = System.Windows.Forms.Cursors.Hand;
this.uiCheckBox2.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiCheckBox2.Location = new System.Drawing.Point(192, 48);
this.uiCheckBox2.Name = "uiCheckBox2";
this.uiCheckBox2.Padding = new System.Windows.Forms.Padding(22, 0, 0, 0);
this.uiCheckBox2.Size = new System.Drawing.Size(150, 35);
this.uiCheckBox2.TabIndex = 39;
this.uiCheckBox2.Text = "uiCheckBox2";
//
// uiCheckBoxGroup1
//
this.uiCheckBoxGroup1.ColumnCount = 2;
this.uiCheckBoxGroup1.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiCheckBoxGroup1.Items.AddRange(new object[] {
"0",
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8"});
this.uiCheckBoxGroup1.Location = new System.Drawing.Point(30, 91);
this.uiCheckBoxGroup1.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.uiCheckBoxGroup1.Name = "uiCheckBoxGroup1";
this.uiCheckBoxGroup1.Size = new System.Drawing.Size(670, 211);
this.uiCheckBoxGroup1.TabIndex = 41;
this.uiCheckBoxGroup1.Text = "UICheckBoxGroup";
this.uiCheckBoxGroup1.ValueChanged += new Sunny.UI.UICheckBoxGroup.OnValueChanged(this.uiCheckBoxGroup1_ValueChanged);
//
// FCheckBox
//
this.AutoScaleDimensions = new System.Drawing.SizeF(10F, 21F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 556);
this.Name = "FCheckBox";
this.PageIndex = 1002;
this.Text = "CheckBox";
this.PagePanel.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
private UICheckBox uiCheckBox1;
private UILine uiLine1;
private UICheckBox uiCheckBox4;
private UICheckBox uiCheckBox3;
private UICheckBox uiCheckBox2;
private UICheckBoxGroup uiCheckBoxGroup1;
}
}

View File

@ -0,0 +1,31 @@
using System.Text;
using System.Windows.Forms;
namespace Sunny.UI.Demo
{
public partial class FCheckBox : UITitlePage
{
public FCheckBox()
{
InitializeComponent();
}
private void uiRadioButtonGroup1_ValueChanged(object sender, int index, string text)
{
MessageBox.Show(index.ToString());
}
private void uiCheckBoxGroup1_ValueChanged(object sender, int index, string text, bool isChecked)
{
StringBuilder sb = new StringBuilder();
sb.Append("SelectedIndexes: ");
foreach (var selectedIndex in uiCheckBoxGroup1.SelectedIndexes)
{
sb.Append(selectedIndex);
sb.Append(", ");
}
this.ShowInfoDialog("SelectedIndex: " + index + ", SelectedText: " + text + "\n" + sb.ToString());
}
}
}

View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -0,0 +1,103 @@
namespace Sunny.UI.Demo
{
partial class FContextMenuStrip
{
/// <summary>
/// Required designer variable.
/// </summary>
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.uiButton1 = new Sunny.UI.UIButton();
this.uiButton2 = new Sunny.UI.UIButton();
this.uiLine1 = new Sunny.UI.UILine();
this.uiContextMenuStrip1 = new Sunny.UI.UIContextMenuStrip();
this.PagePanel.SuspendLayout();
this.SuspendLayout();
//
// PagePanel
//
this.PagePanel.Controls.Add(this.uiLine1);
this.PagePanel.Controls.Add(this.uiButton2);
this.PagePanel.Controls.Add(this.uiButton1);
//
// uiButton1
//
this.uiButton1.ContextMenuStrip = this.uiContextMenuStrip1;
this.uiButton1.Cursor = System.Windows.Forms.Cursors.Hand;
this.uiButton1.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiButton1.Location = new System.Drawing.Point(30, 57);
this.uiButton1.Name = "uiButton1";
this.uiButton1.Size = new System.Drawing.Size(232, 35);
this.uiButton1.TabIndex = 0;
this.uiButton1.Text = "右键菜单";
//
// uiButton2
//
this.uiButton2.Cursor = System.Windows.Forms.Cursors.Hand;
this.uiButton2.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiButton2.Location = new System.Drawing.Point(294, 57);
this.uiButton2.Name = "uiButton2";
this.uiButton2.Size = new System.Drawing.Size(232, 35);
this.uiButton2.TabIndex = 1;
this.uiButton2.Text = "左键菜单";
this.uiButton2.Click += new System.EventHandler(this.uiButton2_Click);
//
// uiLine1
//
this.uiLine1.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiLine1.Location = new System.Drawing.Point(30, 20);
this.uiLine1.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine1.Name = "uiLine1";
this.uiLine1.Size = new System.Drawing.Size(670, 20);
this.uiLine1.TabIndex = 19;
this.uiLine1.Text = "UIContextMenuStrip";
this.uiLine1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// uiContextMenuStrip1
//
this.uiContextMenuStrip1.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiContextMenuStrip1.Name = "uiContextMenuStrip1";
this.uiContextMenuStrip1.Size = new System.Drawing.Size(61, 4);
//
// FContextMenuStrip
//
this.AutoScaleDimensions = new System.Drawing.SizeF(10F, 21F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 450);
this.Name = "FContextMenuStrip";
this.Text = "ContextMenuStrip";
this.Controls.SetChildIndex(this.PagePanel, 0);
this.PagePanel.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
private UIButton uiButton1;
private UIButton uiButton2;
private UILine uiLine1;
private UIContextMenuStrip uiContextMenuStrip1;
}
}

View File

@ -0,0 +1,35 @@
using System;
using System.Windows.Forms;
namespace Sunny.UI.Demo
{
public partial class FContextMenuStrip : UITitlePage
{
public FContextMenuStrip()
{
InitializeComponent();
var styles = UIStyles.PopularStyles();
foreach (UIStyle style in styles)
{
ToolStripMenuItem item = new ToolStripMenuItem(style.DisplayText()) { Tag = style };
item.Click += Item_Click;
uiContextMenuStrip1.Items.Add(item);
}
}
private void Item_Click(object sender, EventArgs e)
{
ToolStripMenuItem item = (ToolStripMenuItem)sender;
if (item.Tag != null && item.Tag is UIStyle style)
{
this.Style = style;
}
}
private void uiButton2_Click(object sender, System.EventArgs e)
{
uiButton2.ShowContextMenuStrip(uiContextMenuStrip1, 0, uiButton2.Height);
}
}
}

View File

@ -0,0 +1,123 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="uiContextMenuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
</root>

View File

@ -0,0 +1,103 @@
namespace Sunny.UI.Demo
{
partial class FDataGridView
{
/// <summary>
/// Required designer variable.
/// </summary>
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()
{
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle();
this.uiDataGridView1 = new Sunny.UI.UIDataGridView();
this.PagePanel.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.uiDataGridView1)).BeginInit();
this.SuspendLayout();
//
// PagePanel
//
this.PagePanel.Controls.Add(this.uiDataGridView1);
//
// uiDataGridView1
//
this.uiDataGridView1.AllowUserToAddRows = false;
this.uiDataGridView1.AllowUserToResizeRows = false;
dataGridViewCellStyle1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(243)))), ((int)(((byte)(255)))));
this.uiDataGridView1.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle1;
this.uiDataGridView1.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill;
this.uiDataGridView1.BackgroundColor = System.Drawing.Color.White;
this.uiDataGridView1.BorderStyle = System.Windows.Forms.BorderStyle.None;
this.uiDataGridView1.CellBorderStyle = System.Windows.Forms.DataGridViewCellBorderStyle.None;
this.uiDataGridView1.ColumnHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.Single;
dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
dataGridViewCellStyle2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(160)))), ((int)(((byte)(255)))));
dataGridViewCellStyle2.Font = new System.Drawing.Font("微软雅黑", 12F);
dataGridViewCellStyle2.ForeColor = System.Drawing.Color.White;
dataGridViewCellStyle2.SelectionBackColor = System.Drawing.SystemColors.Highlight;
dataGridViewCellStyle2.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
dataGridViewCellStyle2.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
this.uiDataGridView1.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle2;
this.uiDataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.uiDataGridView1.Dock = System.Windows.Forms.DockStyle.Fill;
this.uiDataGridView1.EnableHeadersVisualStyles = false;
this.uiDataGridView1.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiDataGridView1.GridColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(160)))), ((int)(((byte)(255)))));
this.uiDataGridView1.Location = new System.Drawing.Point(0, 0);
this.uiDataGridView1.MultiSelect = false;
this.uiDataGridView1.Name = "uiDataGridView1";
this.uiDataGridView1.RectColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(160)))), ((int)(((byte)(255)))));
this.uiDataGridView1.RowHeadersVisible = false;
dataGridViewCellStyle3.BackColor = System.Drawing.Color.White;
this.uiDataGridView1.RowsDefaultCellStyle = dataGridViewCellStyle3;
this.uiDataGridView1.RowTemplate.Height = 29;
this.uiDataGridView1.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
this.uiDataGridView1.SelectedIndex = -1;
this.uiDataGridView1.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
this.uiDataGridView1.ShowRect = false;
this.uiDataGridView1.Size = new System.Drawing.Size(800, 415);
this.uiDataGridView1.Style = Sunny.UI.UIStyle.Custom;
this.uiDataGridView1.TabIndex = 0;
this.uiDataGridView1.TagString = null;
//
// FDataGridView
//
this.AutoScaleDimensions = new System.Drawing.SizeF(10F, 21F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 450);
this.Name = "FDataGridView";
this.PageIndex = 1006;
this.Text = "DataGridView";
this.PagePanel.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.uiDataGridView1)).EndInit();
this.ResumeLayout(false);
}
#endregion
private UIDataGridView uiDataGridView1;
}
}

View File

@ -0,0 +1,55 @@
using System.Collections.Generic;
using System.Windows.Forms;
namespace Sunny.UI.Demo
{
public partial class FDataGridView : UITitlePage
{
public FDataGridView()
{
InitializeComponent();
uiDataGridView1.AddColumn("Column1", "Column1", 100);
uiDataGridView1.AddColumn("Column2", "Column2").SetFixedMode(100);
uiDataGridView1.AddColumn("Column3", "Column3").SetFixedMode(100);
//uiDataGridView1.AddColumn("Column4", "Column4", 20);
uiDataGridView1.ReadOnly = true;
}
public override void Init()
{
base.Init();
List<Data> datas = new List<Data>();
for (int i = 0; i < 200; i++)
{
Data data = new Data();
data.Column1 = "Data" + i.ToString("D2");
data.Column2 = i.Mod(2) == 0 ? "A" : "B";
data.Column3 = "编辑";
data.Column4 = i.Mod(4) == 0;
datas.Add(data);
}
uiDataGridView1.DataSource = datas;
uiDataGridView1.SelectedIndex = 160;
}
public class Data
{
public string Column1 { get; set; }
public string Column2 { get; set; }
public string Column3 { get; set; }
public bool Column4 { get; set; }
public override string ToString()
{
return Column1;
}
}
}
}

View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

162
SunnyUI.Demo/Controls/FLabel.Designer.cs generated Normal file
View File

@ -0,0 +1,162 @@
namespace Sunny.UI.Demo
{
partial class FLabel
{
/// <summary>
/// Required designer variable.
/// </summary>
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.uiLabel1 = new Sunny.UI.UILabel();
this.uiLinkLabel1 = new Sunny.UI.UILinkLabel();
this.uiLine1 = new Sunny.UI.UILine();
this.uiLine2 = new Sunny.UI.UILine();
this.uiLine3 = new Sunny.UI.UILine();
this.uiSymbolLabel1 = new Sunny.UI.UISymbolLabel();
this.uiSymbolLabel2 = new Sunny.UI.UISymbolLabel();
this.PagePanel.SuspendLayout();
this.SuspendLayout();
//
// PagePanel
//
this.PagePanel.Controls.Add(this.uiSymbolLabel2);
this.PagePanel.Controls.Add(this.uiSymbolLabel1);
this.PagePanel.Controls.Add(this.uiLine3);
this.PagePanel.Controls.Add(this.uiLine2);
this.PagePanel.Controls.Add(this.uiLine1);
this.PagePanel.Controls.Add(this.uiLinkLabel1);
this.PagePanel.Controls.Add(this.uiLabel1);
//
// uiLabel1
//
this.uiLabel1.AutoSize = true;
this.uiLabel1.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiLabel1.Location = new System.Drawing.Point(42, 55);
this.uiLabel1.Name = "uiLabel1";
this.uiLabel1.Size = new System.Drawing.Size(102, 21);
this.uiLabel1.TabIndex = 0;
this.uiLabel1.Text = "Hello world!";
this.uiLabel1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// uiLinkLabel1
//
this.uiLinkLabel1.ActiveLinkColor = System.Drawing.Color.FromArgb(((int)(((byte)(220)))), ((int)(((byte)(155)))), ((int)(((byte)(40)))));
this.uiLinkLabel1.AutoSize = true;
this.uiLinkLabel1.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiLinkLabel1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiLinkLabel1.LinkBehavior = System.Windows.Forms.LinkBehavior.AlwaysUnderline;
this.uiLinkLabel1.LinkColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiLinkLabel1.Location = new System.Drawing.Point(42, 127);
this.uiLinkLabel1.Name = "uiLinkLabel1";
this.uiLinkLabel1.Size = new System.Drawing.Size(146, 21);
this.uiLinkLabel1.Style = Sunny.UI.UIStyle.Custom;
this.uiLinkLabel1.TabIndex = 1;
this.uiLinkLabel1.TabStop = true;
this.uiLinkLabel1.Text = "www.SunnyUI.net";
this.uiLinkLabel1.VisitedLinkColor = System.Drawing.Color.FromArgb(((int)(((byte)(230)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.uiLinkLabel1.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.uiLinkLabel1_LinkClicked);
//
// uiLine1
//
this.uiLine1.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiLine1.Location = new System.Drawing.Point(30, 20);
this.uiLine1.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine1.Name = "uiLine1";
this.uiLine1.Size = new System.Drawing.Size(670, 20);
this.uiLine1.TabIndex = 19;
this.uiLine1.Text = "UILabel";
this.uiLine1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// uiLine2
//
this.uiLine2.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiLine2.Location = new System.Drawing.Point(30, 92);
this.uiLine2.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine2.Name = "uiLine2";
this.uiLine2.Size = new System.Drawing.Size(670, 20);
this.uiLine2.TabIndex = 20;
this.uiLine2.Text = "UILinkLabel";
this.uiLine2.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// uiLine3
//
this.uiLine3.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiLine3.Location = new System.Drawing.Point(30, 173);
this.uiLine3.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine3.Name = "uiLine3";
this.uiLine3.Size = new System.Drawing.Size(670, 20);
this.uiLine3.TabIndex = 21;
this.uiLine3.Text = "UISymbolLabel";
this.uiLine3.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// uiSymbolLabel1
//
this.uiSymbolLabel1.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiSymbolLabel1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiSymbolLabel1.Location = new System.Drawing.Point(42, 209);
this.uiSymbolLabel1.Name = "uiSymbolLabel1";
this.uiSymbolLabel1.Padding = new System.Windows.Forms.Padding(28, 0, 0, 0);
this.uiSymbolLabel1.Size = new System.Drawing.Size(91, 24);
this.uiSymbolLabel1.TabIndex = 22;
this.uiSymbolLabel1.Text = "OK";
this.uiSymbolLabel1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// uiSymbolLabel2
//
this.uiSymbolLabel2.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiSymbolLabel2.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiSymbolLabel2.Location = new System.Drawing.Point(139, 209);
this.uiSymbolLabel2.Name = "uiSymbolLabel2";
this.uiSymbolLabel2.Padding = new System.Windows.Forms.Padding(28, 0, 0, 0);
this.uiSymbolLabel2.Size = new System.Drawing.Size(91, 24);
this.uiSymbolLabel2.Symbol = 61453;
this.uiSymbolLabel2.TabIndex = 23;
this.uiSymbolLabel2.Text = "Cancel";
this.uiSymbolLabel2.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// FLabel
//
this.AutoScaleDimensions = new System.Drawing.SizeF(10F, 21F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 450);
this.Name = "FLabel";
this.StyleCustomMode = true;
this.Text = "Label";
this.PagePanel.ResumeLayout(false);
this.PagePanel.PerformLayout();
this.ResumeLayout(false);
}
#endregion
private UILabel uiLabel1;
private UILinkLabel uiLinkLabel1;
private UILine uiLine3;
private UILine uiLine2;
private UILine uiLine1;
private UISymbolLabel uiSymbolLabel1;
private UISymbolLabel uiSymbolLabel2;
}
}

View File

@ -0,0 +1,18 @@
using System.Diagnostics;
using System.Windows.Forms;
namespace Sunny.UI.Demo
{
public partial class FLabel : UITitlePage
{
public FLabel()
{
InitializeComponent();
}
private void uiLinkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
Process.Start(uiLinkLabel1.Text);
}
}
}

View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

216
SunnyUI.Demo/Controls/FLine.Designer.cs generated Normal file
View File

@ -0,0 +1,216 @@
namespace Sunny.UI.Demo
{
partial class FLine
{
/// <summary>
/// Required designer variable.
/// </summary>
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.uiLine1 = new Sunny.UI.UILine();
this.uiLine2 = new Sunny.UI.UILine();
this.uiLine3 = new Sunny.UI.UILine();
this.uiLine4 = new Sunny.UI.UILine();
this.uiLine5 = new Sunny.UI.UILine();
this.uiLine6 = new Sunny.UI.UILine();
this.uiLine7 = new Sunny.UI.UILine();
this.uiLine8 = new Sunny.UI.UILine();
this.uiLine9 = new Sunny.UI.UILine();
this.uiLine10 = new Sunny.UI.UILine();
this.uiLine11 = new Sunny.UI.UILine();
this.PagePanel.SuspendLayout();
this.SuspendLayout();
//
// PagePanel
//
this.PagePanel.Controls.Add(this.uiLine11);
this.PagePanel.Controls.Add(this.uiLine10);
this.PagePanel.Controls.Add(this.uiLine7);
this.PagePanel.Controls.Add(this.uiLine8);
this.PagePanel.Controls.Add(this.uiLine9);
this.PagePanel.Controls.Add(this.uiLine4);
this.PagePanel.Controls.Add(this.uiLine5);
this.PagePanel.Controls.Add(this.uiLine6);
this.PagePanel.Controls.Add(this.uiLine3);
this.PagePanel.Controls.Add(this.uiLine2);
this.PagePanel.Controls.Add(this.uiLine1);
this.PagePanel.Size = new System.Drawing.Size(800, 521);
//
// uiLine1
//
this.uiLine1.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiLine1.Location = new System.Drawing.Point(30, 20);
this.uiLine1.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine1.Name = "uiLine1";
this.uiLine1.Size = new System.Drawing.Size(443, 33);
this.uiLine1.TabIndex = 0;
this.uiLine1.Text = "文字左上 LineSize=1";
this.uiLine1.TextAlign = System.Drawing.ContentAlignment.TopLeft;
//
// uiLine2
//
this.uiLine2.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiLine2.LineSize = 2;
this.uiLine2.Location = new System.Drawing.Point(30, 58);
this.uiLine2.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine2.Name = "uiLine2";
this.uiLine2.Size = new System.Drawing.Size(443, 29);
this.uiLine2.TabIndex = 1;
this.uiLine2.Text = "文字左中 LineSize=2";
this.uiLine2.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// uiLine3
//
this.uiLine3.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiLine3.LineSize = 3;
this.uiLine3.Location = new System.Drawing.Point(30, 93);
this.uiLine3.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine3.Name = "uiLine3";
this.uiLine3.Size = new System.Drawing.Size(443, 51);
this.uiLine3.TabIndex = 2;
this.uiLine3.Text = "文字左下 LineSize=3";
this.uiLine3.TextAlign = System.Drawing.ContentAlignment.BottomLeft;
//
// uiLine4
//
this.uiLine4.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiLine4.LineSize = 3;
this.uiLine4.Location = new System.Drawing.Point(30, 245);
this.uiLine4.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine4.Name = "uiLine4";
this.uiLine4.Size = new System.Drawing.Size(443, 51);
this.uiLine4.TabIndex = 5;
this.uiLine4.Text = "文字中下";
this.uiLine4.TextAlign = System.Drawing.ContentAlignment.BottomCenter;
//
// uiLine5
//
this.uiLine5.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiLine5.LineSize = 2;
this.uiLine5.Location = new System.Drawing.Point(30, 210);
this.uiLine5.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine5.Name = "uiLine5";
this.uiLine5.Size = new System.Drawing.Size(443, 29);
this.uiLine5.TabIndex = 4;
this.uiLine5.Text = "文字居中";
//
// uiLine6
//
this.uiLine6.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiLine6.Location = new System.Drawing.Point(30, 172);
this.uiLine6.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine6.Name = "uiLine6";
this.uiLine6.Size = new System.Drawing.Size(443, 33);
this.uiLine6.TabIndex = 3;
this.uiLine6.Text = "文字中上";
this.uiLine6.TextAlign = System.Drawing.ContentAlignment.TopCenter;
//
// uiLine7
//
this.uiLine7.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiLine7.LineSize = 3;
this.uiLine7.Location = new System.Drawing.Point(30, 393);
this.uiLine7.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine7.Name = "uiLine7";
this.uiLine7.Size = new System.Drawing.Size(443, 51);
this.uiLine7.TabIndex = 8;
this.uiLine7.Text = "文字右下";
this.uiLine7.TextAlign = System.Drawing.ContentAlignment.BottomRight;
//
// uiLine8
//
this.uiLine8.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiLine8.LineSize = 2;
this.uiLine8.Location = new System.Drawing.Point(30, 358);
this.uiLine8.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine8.Name = "uiLine8";
this.uiLine8.Size = new System.Drawing.Size(443, 29);
this.uiLine8.TabIndex = 7;
this.uiLine8.Text = "文字右中";
this.uiLine8.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
// uiLine9
//
this.uiLine9.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiLine9.Location = new System.Drawing.Point(30, 320);
this.uiLine9.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine9.Name = "uiLine9";
this.uiLine9.Size = new System.Drawing.Size(443, 33);
this.uiLine9.TabIndex = 6;
this.uiLine9.Text = "文字右上";
this.uiLine9.TextAlign = System.Drawing.ContentAlignment.TopRight;
//
// uiLine10
//
this.uiLine10.Direction = Sunny.UI.UILine.LineDirection.Vertical;
this.uiLine10.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiLine10.Location = new System.Drawing.Point(521, 32);
this.uiLine10.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine10.Name = "uiLine10";
this.uiLine10.Size = new System.Drawing.Size(51, 388);
this.uiLine10.TabIndex = 11;
this.uiLine10.Text = "uiLine10";
this.uiLine10.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// uiLine11
//
this.uiLine11.Direction = Sunny.UI.UILine.LineDirection.Vertical;
this.uiLine11.Font = new System.Drawing.Font("微软雅黑", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiLine11.LineSize = 2;
this.uiLine11.Location = new System.Drawing.Point(578, 32);
this.uiLine11.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine11.Name = "uiLine11";
this.uiLine11.Size = new System.Drawing.Size(51, 388);
this.uiLine11.TabIndex = 12;
this.uiLine11.Text = "uiLine11";
this.uiLine11.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// FLine
//
this.AutoScaleDimensions = new System.Drawing.SizeF(10F, 21F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 556);
this.Name = "FLine";
this.PageIndex = 1004;
this.Text = "Line";
this.PagePanel.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
private UILine uiLine7;
private UILine uiLine8;
private UILine uiLine9;
private UILine uiLine4;
private UILine uiLine5;
private UILine uiLine6;
private UILine uiLine3;
private UILine uiLine2;
private UILine uiLine1;
private UILine uiLine10;
private UILine uiLine11;
}
}

View File

@ -0,0 +1,10 @@
namespace Sunny.UI.Demo
{
public partial class FLine : UITitlePage
{
public FLine()
{
InitializeComponent();
}
}
}

View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

149
SunnyUI.Demo/Controls/FListBox.Designer.cs generated Normal file
View File

@ -0,0 +1,149 @@
namespace Sunny.UI.Demo
{
partial class FListBox
{
/// <summary>
/// Required designer variable.
/// </summary>
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.uiImageListBox1 = new Sunny.UI.UIImageListBox();
this.uiLine1 = new Sunny.UI.UILine();
this.uiLine2 = new Sunny.UI.UILine();
this.uiListBox1 = new Sunny.UI.UIListBox();
this.uiCheckBox1 = new Sunny.UI.UICheckBox();
this.PagePanel.SuspendLayout();
this.SuspendLayout();
//
// PagePanel
//
this.PagePanel.Controls.Add(this.uiCheckBox1);
this.PagePanel.Controls.Add(this.uiListBox1);
this.PagePanel.Controls.Add(this.uiLine2);
this.PagePanel.Controls.Add(this.uiLine1);
this.PagePanel.Controls.Add(this.uiImageListBox1);
this.PagePanel.Size = new System.Drawing.Size(800, 465);
//
// uiImageListBox1
//
this.uiImageListBox1.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiImageListBox1.ItemHeight = 80;
this.uiImageListBox1.ItemSelectForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(243)))), ((int)(((byte)(255)))));
this.uiImageListBox1.Location = new System.Drawing.Point(355, 48);
this.uiImageListBox1.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.uiImageListBox1.Name = "uiImageListBox1";
this.uiImageListBox1.Padding = new System.Windows.Forms.Padding(2);
this.uiImageListBox1.Size = new System.Drawing.Size(266, 343);
this.uiImageListBox1.TabIndex = 1;
this.uiImageListBox1.Text = "uiImageListBox1";
this.uiImageListBox1.ItemDoubleClick += new System.EventHandler(this.uiImageListBox1_ItemDoubleClick);
//
// uiLine1
//
this.uiLine1.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiLine1.Location = new System.Drawing.Point(33, 20);
this.uiLine1.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine1.Name = "uiLine1";
this.uiLine1.Size = new System.Drawing.Size(266, 18);
this.uiLine1.TabIndex = 19;
this.uiLine1.Text = "uiListBox";
this.uiLine1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// uiLine2
//
this.uiLine2.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiLine2.Location = new System.Drawing.Point(355, 20);
this.uiLine2.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine2.Name = "uiLine2";
this.uiLine2.Size = new System.Drawing.Size(266, 18);
this.uiLine2.TabIndex = 20;
this.uiLine2.Text = "uiImageListBox";
this.uiLine2.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// uiListBox1
//
this.uiListBox1.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiListBox1.Items.AddRange(new object[] {
"0",
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
"10",
"11",
"12",
"13",
"14",
"15",
"16",
"17",
"18"});
this.uiListBox1.ItemSelectForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(243)))), ((int)(((byte)(255)))));
this.uiListBox1.Location = new System.Drawing.Point(33, 48);
this.uiListBox1.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.uiListBox1.Name = "uiListBox1";
this.uiListBox1.Padding = new System.Windows.Forms.Padding(2);
this.uiListBox1.Size = new System.Drawing.Size(270, 343);
this.uiListBox1.TabIndex = 21;
this.uiListBox1.Text = "uiListBox1";
this.uiListBox1.ItemDoubleClick += new System.EventHandler(this.uiListBox1_ItemDoubleClick);
//
// uiCheckBox1
//
this.uiCheckBox1.Checked = true;
this.uiCheckBox1.Cursor = System.Windows.Forms.Cursors.Hand;
this.uiCheckBox1.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiCheckBox1.Location = new System.Drawing.Point(355, 399);
this.uiCheckBox1.Name = "uiCheckBox1";
this.uiCheckBox1.Padding = new System.Windows.Forms.Padding(22, 0, 0, 0);
this.uiCheckBox1.Size = new System.Drawing.Size(266, 35);
this.uiCheckBox1.TabIndex = 22;
this.uiCheckBox1.Text = "ShowDescription";
this.uiCheckBox1.ValueChanged += new Sunny.UI.UICheckBox.OnValueChanged(this.uiCheckBox1_ValueChanged);
//
// FListBox
//
this.AutoScaleDimensions = new System.Drawing.SizeF(10F, 21F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 500);
this.Name = "FListBox";
this.Text = "ListBox";
this.PagePanel.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
private UIImageListBox uiImageListBox1;
private UILine uiLine2;
private UILine uiLine1;
private UIListBox uiListBox1;
private UICheckBox uiCheckBox1;
}
}

View File

@ -0,0 +1,45 @@
using System.IO;
namespace Sunny.UI.Demo
{
public partial class FListBox : UITitlePage
{
public FListBox()
{
InitializeComponent();
}
public override void Init()
{
uiListBox1.Items.Clear();
for (int i = 0; i < 20; i++)
{
uiListBox1.Items.Add(i);
}
uiImageListBox1.Items.Clear();
string[] files = System.IO.Directory.GetFiles(DirEx.CurrentDir() + "Team",
"*.png", SearchOption.TopDirectoryOnly);
foreach (string file in files)
{
uiImageListBox1.AddImage(file, file.FileInfo().Name);
}
}
private void uiImageListBox1_ItemDoubleClick(object sender, System.EventArgs e)
{
this.ShowInfoDialog(uiImageListBox1.SelectedItem.ImagePath);
}
private void uiCheckBox1_ValueChanged(object sender, bool value)
{
uiImageListBox1.ShowDescription = !uiImageListBox1.ShowDescription;
uiImageListBox1.ItemHeight = uiImageListBox1.ShowDescription ? 80 : 50;
}
private void uiListBox1_ItemDoubleClick(object sender, System.EventArgs e)
{
this.ShowInfoDialog(uiListBox1.SelectedItem.ToString());
}
}
}

View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

192
SunnyUI.Demo/Controls/FMeter.Designer.cs generated Normal file
View File

@ -0,0 +1,192 @@
namespace Sunny.UI.Demo
{
partial class FMeter
{
/// <summary>
/// Required designer variable.
/// </summary>
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.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FMeter));
this.uiAnalogMeter1 = new Sunny.UI.UIAnalogMeter();
this.uiLine9 = new Sunny.UI.UILine();
this.uiLine7 = new Sunny.UI.UILine();
this.uiLine6 = new Sunny.UI.UILine();
this.uiLine1 = new Sunny.UI.UILine();
this.uiLedStopwatch1 = new Sunny.UI.UILedStopwatch();
this.uiLedDisplay1 = new Sunny.UI.UILedDisplay();
this.timer1 = new System.Windows.Forms.Timer(this.components);
this.uiRoundMeter2 = new Sunny.UI.UIRoundMeter();
this.uiRoundMeter1 = new Sunny.UI.UIRoundMeter();
this.PagePanel.SuspendLayout();
this.SuspendLayout();
//
// PagePanel
//
this.PagePanel.Controls.Add(this.uiAnalogMeter1);
this.PagePanel.Controls.Add(this.uiLine9);
this.PagePanel.Controls.Add(this.uiLine7);
this.PagePanel.Controls.Add(this.uiRoundMeter2);
this.PagePanel.Controls.Add(this.uiLine6);
this.PagePanel.Controls.Add(this.uiRoundMeter1);
this.PagePanel.Controls.Add(this.uiLine1);
this.PagePanel.Controls.Add(this.uiLedStopwatch1);
this.PagePanel.Controls.Add(this.uiLedDisplay1);
//
// uiAnalogMeter1
//
this.uiAnalogMeter1.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiAnalogMeter1.Location = new System.Drawing.Point(381, 146);
this.uiAnalogMeter1.MaxValue = 100D;
this.uiAnalogMeter1.MinValue = 0D;
this.uiAnalogMeter1.Name = "uiAnalogMeter1";
this.uiAnalogMeter1.Renderer = null;
this.uiAnalogMeter1.Size = new System.Drawing.Size(140, 140);
this.uiAnalogMeter1.TabIndex = 52;
this.uiAnalogMeter1.Text = "uiAnalogMeter1";
this.uiAnalogMeter1.Value = 0D;
//
// uiLine9
//
this.uiLine9.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiLine9.Location = new System.Drawing.Point(381, 105);
this.uiLine9.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine9.Name = "uiLine9";
this.uiLine9.Size = new System.Drawing.Size(319, 20);
this.uiLine9.TabIndex = 51;
this.uiLine9.Text = "UIAnalogMeter";
this.uiLine9.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// uiLine7
//
this.uiLine7.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiLine7.Location = new System.Drawing.Point(381, 20);
this.uiLine7.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine7.Name = "uiLine7";
this.uiLine7.Size = new System.Drawing.Size(319, 20);
this.uiLine7.TabIndex = 50;
this.uiLine7.Text = "UILedStopwatch";
this.uiLine7.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// uiLine6
//
this.uiLine6.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiLine6.Location = new System.Drawing.Point(30, 105);
this.uiLine6.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine6.Name = "uiLine6";
this.uiLine6.Size = new System.Drawing.Size(319, 20);
this.uiLine6.TabIndex = 48;
this.uiLine6.Text = "UIRoundMeter";
this.uiLine6.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// uiLine1
//
this.uiLine1.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiLine1.Location = new System.Drawing.Point(30, 20);
this.uiLine1.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine1.Name = "uiLine1";
this.uiLine1.Size = new System.Drawing.Size(319, 20);
this.uiLine1.TabIndex = 46;
this.uiLine1.Text = "UILedDisplay";
this.uiLine1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// uiLedStopwatch1
//
this.uiLedStopwatch1.Active = true;
this.uiLedStopwatch1.BackColor = System.Drawing.Color.Black;
this.uiLedStopwatch1.ForeColor = System.Drawing.Color.Lime;
this.uiLedStopwatch1.Location = new System.Drawing.Point(381, 52);
this.uiLedStopwatch1.Name = "uiLedStopwatch1";
this.uiLedStopwatch1.Size = new System.Drawing.Size(190, 34);
this.uiLedStopwatch1.TabIndex = 45;
this.uiLedStopwatch1.Text = "01:18";
//
// uiLedDisplay1
//
this.uiLedDisplay1.BackColor = System.Drawing.Color.Black;
this.uiLedDisplay1.ForeColor = System.Drawing.Color.Lime;
this.uiLedDisplay1.Location = new System.Drawing.Point(30, 52);
this.uiLedDisplay1.Name = "uiLedDisplay1";
this.uiLedDisplay1.Size = new System.Drawing.Size(190, 34);
this.uiLedDisplay1.TabIndex = 44;
this.uiLedDisplay1.Text = "999.9 Ω";
//
// timer1
//
this.timer1.Tick += new System.EventHandler(this.timer1_Tick);
//
// uiRoundMeter2
//
this.uiRoundMeter2.Angle = 0D;
this.uiRoundMeter2.AngleImage = ((System.Drawing.Image)(resources.GetObject("uiRoundMeter2.AngleImage")));
this.uiRoundMeter2.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("uiRoundMeter2.BackgroundImage")));
this.uiRoundMeter2.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None;
this.uiRoundMeter2.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiRoundMeter2.Location = new System.Drawing.Point(186, 141);
this.uiRoundMeter2.MeterType = Sunny.UI.UIRoundMeter.TMeterType.Wind;
this.uiRoundMeter2.Name = "uiRoundMeter2";
this.uiRoundMeter2.Size = new System.Drawing.Size(140, 140);
this.uiRoundMeter2.TabIndex = 49;
this.uiRoundMeter2.Text = "uiRoundMeter2";
//
// uiRoundMeter1
//
this.uiRoundMeter1.Angle = 0D;
this.uiRoundMeter1.AngleImage = ((System.Drawing.Image)(resources.GetObject("uiRoundMeter1.AngleImage")));
this.uiRoundMeter1.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("uiRoundMeter1.BackgroundImage")));
this.uiRoundMeter1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None;
this.uiRoundMeter1.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiRoundMeter1.Location = new System.Drawing.Point(30, 136);
this.uiRoundMeter1.Name = "uiRoundMeter1";
this.uiRoundMeter1.Size = new System.Drawing.Size(150, 150);
this.uiRoundMeter1.TabIndex = 47;
this.uiRoundMeter1.Text = "uiRoundMeter1";
//
// FMeter
//
this.AutoScaleDimensions = new System.Drawing.SizeF(10F, 21F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 450);
this.Name = "FMeter";
this.Text = "Meter";
this.PagePanel.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
private UIAnalogMeter uiAnalogMeter1;
private UILine uiLine9;
private UILine uiLine7;
private UIRoundMeter uiRoundMeter2;
private UILine uiLine6;
private UIRoundMeter uiRoundMeter1;
private UILine uiLine1;
private UILedStopwatch uiLedStopwatch1;
private UILedDisplay uiLedDisplay1;
private System.Windows.Forms.Timer timer1;
}
}

View File

@ -0,0 +1,27 @@
namespace Sunny.UI.Demo
{
public partial class FMeter : UITitlePage
{
public FMeter()
{
InitializeComponent();
}
private int value;
public override void Init()
{
uiLedStopwatch1.Active = true;
value = 0;
timer1.ReStart();
}
private void timer1_Tick(object sender, System.EventArgs e)
{
value++;
uiRoundMeter1.Angle = value * 10;
uiRoundMeter2.Angle = value * 10;
uiAnalogMeter1.Value = value;
}
}
}

View File

@ -0,0 +1,824 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="timer1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="uiRoundMeter2.AngleImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAAIwAAACMCAYAAACuwEE+AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAFnSURBVHhe7dlNSsNAGAbgegsVRPFA4k4xgR5DEARBT2Di
z0Ldq+BNRBJ/luJFbJ1Jp7SmAe06zwPvInwzs/qYmSQDAAAAAAAAAAAAAAAAAAAAAAAAAJYzHq9kdXmc
V8Uoq4qT+JwqsGjv9WIjNMt9XpfjvC4eh2/lairBoqwuTifNMknYbR6yj+u1VIaZg/dyM6vKm/mGmTZN
rKVhMBHvLO1mmaa5z8DU/nOxHu4ut13N0iTUhi9XW2k4fRYbIR47nY0yl/j2lKbQZ+HectTVIO2EcXdx
J0rT6KM/j6JWmgtwfbmdptMn4SK7M/vmskSq4jAtQZ90NsM/Eo+mvD7fTcvQF13NEHaPr7wqn2LC8fPZ
OSYlLUNfhJ3iOzTI6Ffq8qz5fxT/KcXvMu16SpyblgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAA6KHB4AfTQm4PPjTNWgAAAABJRU5ErkJggg==
</value>
</data>
<data name="uiRoundMeter2.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
f+uvSxAXl/8PnMmNTepNpz0AAAAASUVORK5CYII=
</value>
</data>
<data name="uiRoundMeter1.AngleImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
</value>
</data>
<data name="uiRoundMeter1.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
</value>
</data>
</root>

View File

@ -0,0 +1,374 @@
namespace Sunny.UI.Demo
{
partial class FNavigation
{
/// <summary>
/// Required designer variable.
/// </summary>
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()
{
System.Windows.Forms.TreeNode treeNode43 = new System.Windows.Forms.TreeNode("节点0");
System.Windows.Forms.TreeNode treeNode44 = new System.Windows.Forms.TreeNode("节点1");
System.Windows.Forms.TreeNode treeNode45 = new System.Windows.Forms.TreeNode("节点2");
System.Windows.Forms.TreeNode treeNode46 = new System.Windows.Forms.TreeNode("节点0", new System.Windows.Forms.TreeNode[] {
treeNode43,
treeNode44,
treeNode45});
System.Windows.Forms.TreeNode treeNode47 = new System.Windows.Forms.TreeNode("节点1");
System.Windows.Forms.TreeNode treeNode48 = new System.Windows.Forms.TreeNode("节点2");
System.Windows.Forms.TreeNode treeNode49 = new System.Windows.Forms.TreeNode("节点3");
System.Windows.Forms.TreeNode treeNode50 = new System.Windows.Forms.TreeNode("节点0", new System.Windows.Forms.TreeNode[] {
treeNode46,
treeNode47,
treeNode48,
treeNode49});
System.Windows.Forms.TreeNode treeNode51 = new System.Windows.Forms.TreeNode("节点4");
System.Windows.Forms.TreeNode treeNode52 = new System.Windows.Forms.TreeNode("节点5");
System.Windows.Forms.TreeNode treeNode53 = new System.Windows.Forms.TreeNode("节点6");
System.Windows.Forms.TreeNode treeNode54 = new System.Windows.Forms.TreeNode("节点1", new System.Windows.Forms.TreeNode[] {
treeNode51,
treeNode52,
treeNode53});
System.Windows.Forms.TreeNode treeNode55 = new System.Windows.Forms.TreeNode("节点7");
System.Windows.Forms.TreeNode treeNode56 = new System.Windows.Forms.TreeNode("节点8");
System.Windows.Forms.TreeNode treeNode57 = new System.Windows.Forms.TreeNode("节点2", new System.Windows.Forms.TreeNode[] {
treeNode55,
treeNode56});
System.Windows.Forms.TreeNode treeNode58 = new System.Windows.Forms.TreeNode("节点9");
System.Windows.Forms.TreeNode treeNode59 = new System.Windows.Forms.TreeNode("节点3", new System.Windows.Forms.TreeNode[] {
treeNode58});
System.Windows.Forms.TreeNode treeNode22 = new System.Windows.Forms.TreeNode("节点14");
System.Windows.Forms.TreeNode treeNode23 = new System.Windows.Forms.TreeNode("节点15");
System.Windows.Forms.TreeNode treeNode24 = new System.Windows.Forms.TreeNode("节点16");
System.Windows.Forms.TreeNode treeNode25 = new System.Windows.Forms.TreeNode("节点17");
System.Windows.Forms.TreeNode treeNode26 = new System.Windows.Forms.TreeNode("节点0", new System.Windows.Forms.TreeNode[] {
treeNode22,
treeNode23,
treeNode24,
treeNode25});
System.Windows.Forms.TreeNode treeNode27 = new System.Windows.Forms.TreeNode("节点18");
System.Windows.Forms.TreeNode treeNode28 = new System.Windows.Forms.TreeNode("节点19");
System.Windows.Forms.TreeNode treeNode29 = new System.Windows.Forms.TreeNode("节点20");
System.Windows.Forms.TreeNode treeNode30 = new System.Windows.Forms.TreeNode("节点1", new System.Windows.Forms.TreeNode[] {
treeNode27,
treeNode28,
treeNode29});
System.Windows.Forms.TreeNode treeNode31 = new System.Windows.Forms.TreeNode("节点2");
System.Windows.Forms.TreeNode treeNode32 = new System.Windows.Forms.TreeNode("节点3");
System.Windows.Forms.TreeNode treeNode33 = new System.Windows.Forms.TreeNode("节点4");
System.Windows.Forms.TreeNode treeNode34 = new System.Windows.Forms.TreeNode("节点5");
System.Windows.Forms.TreeNode treeNode35 = new System.Windows.Forms.TreeNode("节点6");
System.Windows.Forms.TreeNode treeNode36 = new System.Windows.Forms.TreeNode("节点7");
System.Windows.Forms.TreeNode treeNode37 = new System.Windows.Forms.TreeNode("节点8");
System.Windows.Forms.TreeNode treeNode38 = new System.Windows.Forms.TreeNode("节点9");
System.Windows.Forms.TreeNode treeNode39 = new System.Windows.Forms.TreeNode("节点10");
System.Windows.Forms.TreeNode treeNode40 = new System.Windows.Forms.TreeNode("节点11");
System.Windows.Forms.TreeNode treeNode41 = new System.Windows.Forms.TreeNode("节点12");
System.Windows.Forms.TreeNode treeNode42 = new System.Windows.Forms.TreeNode("节点13");
System.Windows.Forms.TreeNode treeNode1 = new System.Windows.Forms.TreeNode("节点14");
System.Windows.Forms.TreeNode treeNode2 = new System.Windows.Forms.TreeNode("节点15");
System.Windows.Forms.TreeNode treeNode3 = new System.Windows.Forms.TreeNode("节点16");
System.Windows.Forms.TreeNode treeNode4 = new System.Windows.Forms.TreeNode("节点17");
System.Windows.Forms.TreeNode treeNode5 = new System.Windows.Forms.TreeNode("节点0", new System.Windows.Forms.TreeNode[] {
treeNode1,
treeNode2,
treeNode3,
treeNode4});
System.Windows.Forms.TreeNode treeNode6 = new System.Windows.Forms.TreeNode("节点18");
System.Windows.Forms.TreeNode treeNode7 = new System.Windows.Forms.TreeNode("节点19");
System.Windows.Forms.TreeNode treeNode8 = new System.Windows.Forms.TreeNode("节点20");
System.Windows.Forms.TreeNode treeNode9 = new System.Windows.Forms.TreeNode("节点1", new System.Windows.Forms.TreeNode[] {
treeNode6,
treeNode7,
treeNode8});
System.Windows.Forms.TreeNode treeNode10 = new System.Windows.Forms.TreeNode("节点2");
System.Windows.Forms.TreeNode treeNode11 = new System.Windows.Forms.TreeNode("节点3");
System.Windows.Forms.TreeNode treeNode12 = new System.Windows.Forms.TreeNode("节点4");
System.Windows.Forms.TreeNode treeNode13 = new System.Windows.Forms.TreeNode("节点5");
System.Windows.Forms.TreeNode treeNode14 = new System.Windows.Forms.TreeNode("节点6");
System.Windows.Forms.TreeNode treeNode15 = new System.Windows.Forms.TreeNode("节点7");
System.Windows.Forms.TreeNode treeNode16 = new System.Windows.Forms.TreeNode("节点8");
System.Windows.Forms.TreeNode treeNode17 = new System.Windows.Forms.TreeNode("节点9");
System.Windows.Forms.TreeNode treeNode18 = new System.Windows.Forms.TreeNode("节点10");
System.Windows.Forms.TreeNode treeNode19 = new System.Windows.Forms.TreeNode("节点11");
System.Windows.Forms.TreeNode treeNode20 = new System.Windows.Forms.TreeNode("节点12");
System.Windows.Forms.TreeNode treeNode21 = new System.Windows.Forms.TreeNode("节点13");
this.uiNavBar1 = new Sunny.UI.UINavBar();
this.uiLine1 = new Sunny.UI.UILine();
this.uiNavMenu1 = new Sunny.UI.UINavMenu();
this.uiNavMenu2 = new Sunny.UI.UINavMenu();
this.uiLine2 = new Sunny.UI.UILine();
this.PagePanel.SuspendLayout();
this.uiNavBar1.SuspendLayout();
this.SuspendLayout();
//
// PagePanel
//
this.PagePanel.Controls.Add(this.uiLine2);
this.PagePanel.Controls.Add(this.uiNavMenu2);
this.PagePanel.Controls.Add(this.uiNavMenu1);
this.PagePanel.Controls.Add(this.uiNavBar1);
this.PagePanel.Size = new System.Drawing.Size(800, 545);
//
// uiNavBar1
//
this.uiNavBar1.Controls.Add(this.uiLine1);
this.uiNavBar1.Dock = System.Windows.Forms.DockStyle.Top;
this.uiNavBar1.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiNavBar1.Location = new System.Drawing.Point(0, 0);
this.uiNavBar1.Name = "uiNavBar1";
treeNode43.Name = "节点0";
treeNode43.Text = "节点0";
treeNode44.Name = "节点1";
treeNode44.Text = "节点1";
treeNode45.Name = "节点2";
treeNode45.Text = "节点2";
treeNode46.Name = "节点0";
treeNode46.Text = "节点0";
treeNode47.Name = "节点1";
treeNode47.Text = "节点1";
treeNode48.Name = "节点2";
treeNode48.Text = "节点2";
treeNode49.Name = "节点3";
treeNode49.Text = "节点3";
treeNode50.Name = "节点0";
treeNode50.Text = "节点0";
treeNode51.Name = "节点4";
treeNode51.Text = "节点4";
treeNode52.Name = "节点5";
treeNode52.Text = "节点5";
treeNode53.Name = "节点6";
treeNode53.Text = "节点6";
treeNode54.Name = "节点1";
treeNode54.Text = "节点1";
treeNode55.Name = "节点7";
treeNode55.Text = "节点7";
treeNode56.Name = "节点8";
treeNode56.Text = "节点8";
treeNode57.Name = "节点2";
treeNode57.Text = "节点2";
treeNode58.Name = "节点9";
treeNode58.Text = "节点9";
treeNode59.Name = "节点3";
treeNode59.Text = "节点3";
this.uiNavBar1.Nodes.AddRange(new System.Windows.Forms.TreeNode[] {
treeNode50,
treeNode54,
treeNode57,
treeNode59});
this.uiNavBar1.Size = new System.Drawing.Size(800, 110);
this.uiNavBar1.TabIndex = 0;
this.uiNavBar1.Text = "uiNavBar1";
//
// uiLine1
//
this.uiLine1.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(56)))), ((int)(((byte)(56)))), ((int)(((byte)(56)))));
this.uiLine1.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiLine1.ForeColor = System.Drawing.Color.White;
this.uiLine1.Location = new System.Drawing.Point(30, 20);
this.uiLine1.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine1.Name = "uiLine1";
this.uiLine1.Size = new System.Drawing.Size(670, 20);
this.uiLine1.Style = Sunny.UI.UIStyle.Custom;
this.uiLine1.StyleCustomMode = true;
this.uiLine1.TabIndex = 20;
this.uiLine1.Text = "UINavBar";
this.uiLine1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// uiNavMenu1
//
this.uiNavMenu1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(56)))), ((int)(((byte)(56)))), ((int)(((byte)(56)))));
this.uiNavMenu1.BorderStyle = System.Windows.Forms.BorderStyle.None;
this.uiNavMenu1.DrawMode = System.Windows.Forms.TreeViewDrawMode.OwnerDrawAll;
this.uiNavMenu1.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiNavMenu1.ItemHeight = 50;
this.uiNavMenu1.Location = new System.Drawing.Point(30, 157);
this.uiNavMenu1.Name = "uiNavMenu1";
treeNode22.Name = "节点14";
treeNode22.Text = "节点14";
treeNode23.Name = "节点15";
treeNode23.Text = "节点15";
treeNode24.Name = "节点16";
treeNode24.Text = "节点16";
treeNode25.Name = "节点17";
treeNode25.Text = "节点17";
treeNode26.Name = "节点0";
treeNode26.Text = "节点0";
treeNode27.Name = "节点18";
treeNode27.Text = "节点18";
treeNode28.Name = "节点19";
treeNode28.Text = "节点19";
treeNode29.Name = "节点20";
treeNode29.Text = "节点20";
treeNode30.Name = "节点1";
treeNode30.Text = "节点1";
treeNode31.Name = "节点2";
treeNode31.Text = "节点2";
treeNode32.Name = "节点3";
treeNode32.Text = "节点3";
treeNode33.Name = "节点4";
treeNode33.Text = "节点4";
treeNode34.Name = "节点5";
treeNode34.Text = "节点5";
treeNode35.Name = "节点6";
treeNode35.Text = "节点6";
treeNode36.Name = "节点7";
treeNode36.Text = "节点7";
treeNode37.Name = "节点8";
treeNode37.Text = "节点8";
treeNode38.Name = "节点9";
treeNode38.Text = "节点9";
treeNode39.Name = "节点10";
treeNode39.Text = "节点10";
treeNode40.Name = "节点11";
treeNode40.Text = "节点11";
treeNode41.Name = "节点12";
treeNode41.Text = "节点12";
treeNode42.Name = "节点13";
treeNode42.Text = "节点13";
this.uiNavMenu1.Nodes.AddRange(new System.Windows.Forms.TreeNode[] {
treeNode26,
treeNode30,
treeNode31,
treeNode32,
treeNode33,
treeNode34,
treeNode35,
treeNode36,
treeNode37,
treeNode38,
treeNode39,
treeNode40,
treeNode41,
treeNode42});
this.uiNavMenu1.Size = new System.Drawing.Size(253, 353);
this.uiNavMenu1.TabIndex = 1;
//
// uiNavMenu2
//
this.uiNavMenu2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(250)))), ((int)(((byte)(250)))), ((int)(((byte)(250)))));
this.uiNavMenu2.BorderStyle = System.Windows.Forms.BorderStyle.None;
this.uiNavMenu2.DrawMode = System.Windows.Forms.TreeViewDrawMode.OwnerDrawAll;
this.uiNavMenu2.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(250)))), ((int)(((byte)(250)))), ((int)(((byte)(250)))));
this.uiNavMenu2.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiNavMenu2.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
this.uiNavMenu2.HoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(230)))), ((int)(((byte)(230)))), ((int)(((byte)(230)))));
this.uiNavMenu2.ItemHeight = 50;
this.uiNavMenu2.Location = new System.Drawing.Point(299, 157);
this.uiNavMenu2.MenuStyle = Sunny.UI.UIMenuStyle.White;
this.uiNavMenu2.Name = "uiNavMenu2";
treeNode1.Name = "节点14";
treeNode1.Text = "节点14";
treeNode2.Name = "节点15";
treeNode2.Text = "节点15";
treeNode3.Name = "节点16";
treeNode3.Text = "节点16";
treeNode4.Name = "节点17";
treeNode4.Text = "节点17";
treeNode5.Name = "节点0";
treeNode5.Text = "节点0";
treeNode6.Name = "节点18";
treeNode6.Text = "节点18";
treeNode7.Name = "节点19";
treeNode7.Text = "节点19";
treeNode8.Name = "节点20";
treeNode8.Text = "节点20";
treeNode9.Name = "节点1";
treeNode9.Text = "节点1";
treeNode10.Name = "节点2";
treeNode10.Text = "节点2";
treeNode11.Name = "节点3";
treeNode11.Text = "节点3";
treeNode12.Name = "节点4";
treeNode12.Text = "节点4";
treeNode13.Name = "节点5";
treeNode13.Text = "节点5";
treeNode14.Name = "节点6";
treeNode14.Text = "节点6";
treeNode15.Name = "节点7";
treeNode15.Text = "节点7";
treeNode16.Name = "节点8";
treeNode16.Text = "节点8";
treeNode17.Name = "节点9";
treeNode17.Text = "节点9";
treeNode18.Name = "节点10";
treeNode18.Text = "节点10";
treeNode19.Name = "节点11";
treeNode19.Text = "节点11";
treeNode20.Name = "节点12";
treeNode20.Text = "节点12";
treeNode21.Name = "节点13";
treeNode21.Text = "节点13";
this.uiNavMenu2.Nodes.AddRange(new System.Windows.Forms.TreeNode[] {
treeNode5,
treeNode9,
treeNode10,
treeNode11,
treeNode12,
treeNode13,
treeNode14,
treeNode15,
treeNode16,
treeNode17,
treeNode18,
treeNode19,
treeNode20,
treeNode21});
this.uiNavMenu2.SelectedColor = System.Drawing.Color.FromArgb(((int)(((byte)(240)))), ((int)(((byte)(240)))), ((int)(((byte)(240)))));
this.uiNavMenu2.Size = new System.Drawing.Size(253, 353);
this.uiNavMenu2.TabIndex = 2;
//
// uiLine2
//
this.uiLine2.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiLine2.Location = new System.Drawing.Point(30, 125);
this.uiLine2.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine2.Name = "uiLine2";
this.uiLine2.Size = new System.Drawing.Size(670, 20);
this.uiLine2.TabIndex = 19;
this.uiLine2.Text = "UINavMenu";
this.uiLine2.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// FNavigation
//
this.AutoScaleDimensions = new System.Drawing.SizeF(10F, 21F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 580);
this.Name = "FNavigation";
this.Text = "NavBar";
this.PagePanel.ResumeLayout(false);
this.uiNavBar1.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
private UINavBar uiNavBar1;
private UINavMenu uiNavMenu1;
private UINavMenu uiNavMenu2;
private UILine uiLine1;
private UILine uiLine2;
}
}

View File

@ -0,0 +1,10 @@
namespace Sunny.UI.Demo
{
public partial class FNavigation : UITitlePage
{
public FNavigation()
{
InitializeComponent();
}
}
}

View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

356
SunnyUI.Demo/Controls/FOther.Designer.cs generated Normal file
View File

@ -0,0 +1,356 @@
namespace Sunny.UI.Demo
{
partial class FOther
{
/// <summary>
/// Required designer variable.
/// </summary>
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.components = new System.ComponentModel.Container();
this.uiLight1 = new Sunny.UI.UILight();
this.uiLine2 = new Sunny.UI.UILine();
this.uiLight2 = new Sunny.UI.UILight();
this.uiLight3 = new Sunny.UI.UILight();
this.uiProcessBar1 = new Sunny.UI.UIProcessBar();
this.uiLine3 = new Sunny.UI.UILine();
this.uiProgressIndicator1 = new Sunny.UI.UIProgressIndicator();
this.uiLine4 = new Sunny.UI.UILine();
this.uiTrackBar1 = new Sunny.UI.UITrackBar();
this.uiLine5 = new Sunny.UI.UILine();
this.timer1 = new System.Windows.Forms.Timer(this.components);
this.uiScrollBar1 = new Sunny.UI.UIScrollBar();
this.uiLight4 = new Sunny.UI.UILight();
this.uiLedBulb1 = new Sunny.UI.UILedBulb();
this.uiLine8 = new Sunny.UI.UILine();
this.uiLedBulb2 = new Sunny.UI.UILedBulb();
this.uiLedBulb3 = new Sunny.UI.UILedBulb();
this.uiLedBulb4 = new Sunny.UI.UILedBulb();
this.uiLine1 = new Sunny.UI.UILine();
this.uiScrollBar2 = new Sunny.UI.UIScrollBar();
this.uiScrollBar3 = new Sunny.UI.UIScrollBar();
this.uiScrollBar4 = new Sunny.UI.UIScrollBar();
this.PagePanel.SuspendLayout();
this.SuspendLayout();
//
// PagePanel
//
this.PagePanel.Controls.Add(this.uiScrollBar4);
this.PagePanel.Controls.Add(this.uiScrollBar3);
this.PagePanel.Controls.Add(this.uiScrollBar2);
this.PagePanel.Controls.Add(this.uiLine1);
this.PagePanel.Controls.Add(this.uiLedBulb4);
this.PagePanel.Controls.Add(this.uiLedBulb3);
this.PagePanel.Controls.Add(this.uiLedBulb2);
this.PagePanel.Controls.Add(this.uiLine8);
this.PagePanel.Controls.Add(this.uiLedBulb1);
this.PagePanel.Controls.Add(this.uiLight4);
this.PagePanel.Controls.Add(this.uiScrollBar1);
this.PagePanel.Controls.Add(this.uiLine5);
this.PagePanel.Controls.Add(this.uiTrackBar1);
this.PagePanel.Controls.Add(this.uiLine4);
this.PagePanel.Controls.Add(this.uiProgressIndicator1);
this.PagePanel.Controls.Add(this.uiLine3);
this.PagePanel.Controls.Add(this.uiProcessBar1);
this.PagePanel.Controls.Add(this.uiLight3);
this.PagePanel.Controls.Add(this.uiLight2);
this.PagePanel.Controls.Add(this.uiLine2);
this.PagePanel.Controls.Add(this.uiLight1);
this.PagePanel.Size = new System.Drawing.Size(800, 472);
//
// uiLight1
//
this.uiLight1.CenterColor = System.Drawing.Color.FromArgb(((int)(((byte)(239)))), ((int)(((byte)(248)))), ((int)(((byte)(232)))));
this.uiLight1.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiLight1.Location = new System.Drawing.Point(30, 52);
this.uiLight1.Name = "uiLight1";
this.uiLight1.Radius = 35;
this.uiLight1.Size = new System.Drawing.Size(35, 35);
this.uiLight1.TabIndex = 20;
this.uiLight1.Text = "uiLight1";
//
// uiLine2
//
this.uiLine2.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiLine2.Location = new System.Drawing.Point(30, 20);
this.uiLine2.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine2.Name = "uiLine2";
this.uiLine2.Size = new System.Drawing.Size(319, 20);
this.uiLine2.TabIndex = 21;
this.uiLine2.Text = "UILight";
this.uiLine2.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// uiLight2
//
this.uiLight2.CenterColor = System.Drawing.Color.FromArgb(((int)(((byte)(239)))), ((int)(((byte)(248)))), ((int)(((byte)(232)))));
this.uiLight2.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiLight2.Location = new System.Drawing.Point(114, 52);
this.uiLight2.Name = "uiLight2";
this.uiLight2.Radius = 35;
this.uiLight2.Size = new System.Drawing.Size(35, 35);
this.uiLight2.State = Sunny.UI.UILightState.Off;
this.uiLight2.TabIndex = 22;
this.uiLight2.Text = "uiLight2";
//
// uiLight3
//
this.uiLight3.CenterColor = System.Drawing.Color.FromArgb(((int)(((byte)(239)))), ((int)(((byte)(248)))), ((int)(((byte)(232)))));
this.uiLight3.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiLight3.Location = new System.Drawing.Point(156, 52);
this.uiLight3.Name = "uiLight3";
this.uiLight3.Radius = 35;
this.uiLight3.Size = new System.Drawing.Size(35, 35);
this.uiLight3.State = Sunny.UI.UILightState.Blink;
this.uiLight3.TabIndex = 23;
this.uiLight3.Text = "uiLight3";
//
// uiProcessBar1
//
this.uiProcessBar1.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiProcessBar1.Location = new System.Drawing.Point(30, 136);
this.uiProcessBar1.MinimumSize = new System.Drawing.Size(70, 23);
this.uiProcessBar1.Name = "uiProcessBar1";
this.uiProcessBar1.Size = new System.Drawing.Size(319, 29);
this.uiProcessBar1.TabIndex = 24;
this.uiProcessBar1.Text = "0.0%";
//
// uiLine3
//
this.uiLine3.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiLine3.Location = new System.Drawing.Point(30, 103);
this.uiLine3.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine3.Name = "uiLine3";
this.uiLine3.Size = new System.Drawing.Size(319, 20);
this.uiLine3.TabIndex = 25;
this.uiLine3.Text = "UIProcessBar";
this.uiLine3.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// uiProgressIndicator1
//
this.uiProgressIndicator1.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiProgressIndicator1.Location = new System.Drawing.Point(30, 217);
this.uiProgressIndicator1.Name = "uiProgressIndicator1";
this.uiProgressIndicator1.Size = new System.Drawing.Size(119, 132);
this.uiProgressIndicator1.TabIndex = 26;
this.uiProgressIndicator1.Text = "uiProgressIndicator1";
//
// uiLine4
//
this.uiLine4.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiLine4.Location = new System.Drawing.Point(30, 182);
this.uiLine4.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine4.Name = "uiLine4";
this.uiLine4.Size = new System.Drawing.Size(319, 20);
this.uiLine4.TabIndex = 27;
this.uiLine4.Text = "UIProgressIndicator";
this.uiLine4.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// uiTrackBar1
//
this.uiTrackBar1.DisableColor = System.Drawing.Color.Silver;
this.uiTrackBar1.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiTrackBar1.Location = new System.Drawing.Point(381, 136);
this.uiTrackBar1.Name = "uiTrackBar1";
this.uiTrackBar1.Size = new System.Drawing.Size(158, 29);
this.uiTrackBar1.Style = Sunny.UI.UIStyle.Custom;
this.uiTrackBar1.TabIndex = 30;
this.uiTrackBar1.Text = "uiTrackBar1";
//
// uiLine5
//
this.uiLine5.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiLine5.Location = new System.Drawing.Point(381, 101);
this.uiLine5.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine5.Name = "uiLine5";
this.uiLine5.Size = new System.Drawing.Size(319, 20);
this.uiLine5.TabIndex = 31;
this.uiLine5.Text = "UITrackBar";
this.uiLine5.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// timer1
//
this.timer1.Tick += new System.EventHandler(this.timer1_Tick);
//
// uiScrollBar1
//
this.uiScrollBar1.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiScrollBar1.Location = new System.Drawing.Point(381, 217);
this.uiScrollBar1.Name = "uiScrollBar1";
this.uiScrollBar1.Size = new System.Drawing.Size(23, 163);
this.uiScrollBar1.TabIndex = 35;
this.uiScrollBar1.Text = "uiScrollBar1";
//
// uiLight4
//
this.uiLight4.CenterColor = System.Drawing.Color.FromArgb(((int)(((byte)(239)))), ((int)(((byte)(248)))), ((int)(((byte)(232)))));
this.uiLight4.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiLight4.Location = new System.Drawing.Point(72, 52);
this.uiLight4.Name = "uiLight4";
this.uiLight4.OnColor = System.Drawing.Color.FromArgb(((int)(((byte)(230)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.uiLight4.Radius = 35;
this.uiLight4.ShowLightLine = false;
this.uiLight4.Size = new System.Drawing.Size(35, 35);
this.uiLight4.TabIndex = 36;
this.uiLight4.Text = "uiLight4";
//
// uiLedBulb1
//
this.uiLedBulb1.Location = new System.Drawing.Point(381, 52);
this.uiLedBulb1.Name = "uiLedBulb1";
this.uiLedBulb1.Size = new System.Drawing.Size(32, 32);
this.uiLedBulb1.TabIndex = 37;
this.uiLedBulb1.Text = "uiLedBulb1";
//
// uiLine8
//
this.uiLine8.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiLine8.Location = new System.Drawing.Point(381, 20);
this.uiLine8.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine8.Name = "uiLine8";
this.uiLine8.Size = new System.Drawing.Size(319, 20);
this.uiLine8.TabIndex = 38;
this.uiLine8.Text = "UILedBulb";
this.uiLine8.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// uiLedBulb2
//
this.uiLedBulb2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(192)))), ((int)(((byte)(192)))));
this.uiLedBulb2.Location = new System.Drawing.Point(423, 52);
this.uiLedBulb2.Name = "uiLedBulb2";
this.uiLedBulb2.Size = new System.Drawing.Size(32, 32);
this.uiLedBulb2.TabIndex = 39;
this.uiLedBulb2.Text = "uiLedBulb2";
//
// uiLedBulb3
//
this.uiLedBulb3.Location = new System.Drawing.Point(465, 52);
this.uiLedBulb3.Name = "uiLedBulb3";
this.uiLedBulb3.On = false;
this.uiLedBulb3.Size = new System.Drawing.Size(32, 32);
this.uiLedBulb3.TabIndex = 40;
this.uiLedBulb3.Text = "uiLedBulb3";
//
// uiLedBulb4
//
this.uiLedBulb4.Blink = true;
this.uiLedBulb4.BlinkInterval = 500;
this.uiLedBulb4.Location = new System.Drawing.Point(507, 52);
this.uiLedBulb4.Name = "uiLedBulb4";
this.uiLedBulb4.Size = new System.Drawing.Size(32, 32);
this.uiLedBulb4.TabIndex = 41;
this.uiLedBulb4.Text = "uiLedBulb4";
//
// uiLine1
//
this.uiLine1.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiLine1.Location = new System.Drawing.Point(381, 182);
this.uiLine1.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine1.Name = "uiLine1";
this.uiLine1.Size = new System.Drawing.Size(319, 20);
this.uiLine1.TabIndex = 42;
this.uiLine1.Text = "UIScrollBar";
this.uiLine1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// uiScrollBar2
//
this.uiScrollBar2.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(239)))), ((int)(((byte)(248)))), ((int)(((byte)(232)))));
this.uiScrollBar2.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiScrollBar2.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(110)))), ((int)(((byte)(190)))), ((int)(((byte)(40)))));
this.uiScrollBar2.HoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(136)))), ((int)(((byte)(202)))), ((int)(((byte)(81)))));
this.uiScrollBar2.Location = new System.Drawing.Point(423, 217);
this.uiScrollBar2.Name = "uiScrollBar2";
this.uiScrollBar2.PressColor = System.Drawing.Color.FromArgb(((int)(((byte)(100)))), ((int)(((byte)(168)))), ((int)(((byte)(35)))));
this.uiScrollBar2.Size = new System.Drawing.Size(23, 163);
this.uiScrollBar2.Style = Sunny.UI.UIStyle.Green;
this.uiScrollBar2.StyleCustomMode = true;
this.uiScrollBar2.TabIndex = 43;
this.uiScrollBar2.Text = "uiScrollBar2";
//
// uiScrollBar3
//
this.uiScrollBar3.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(251)))), ((int)(((byte)(245)))), ((int)(((byte)(233)))));
this.uiScrollBar3.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiScrollBar3.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(220)))), ((int)(((byte)(155)))), ((int)(((byte)(40)))));
this.uiScrollBar3.HoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(223)))), ((int)(((byte)(174)))), ((int)(((byte)(86)))));
this.uiScrollBar3.Location = new System.Drawing.Point(465, 217);
this.uiScrollBar3.Name = "uiScrollBar3";
this.uiScrollBar3.PressColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(137)))), ((int)(((byte)(43)))));
this.uiScrollBar3.Size = new System.Drawing.Size(23, 163);
this.uiScrollBar3.Style = Sunny.UI.UIStyle.Orange;
this.uiScrollBar3.StyleCustomMode = true;
this.uiScrollBar3.TabIndex = 44;
this.uiScrollBar3.Text = "uiScrollBar3";
//
// uiScrollBar4
//
this.uiScrollBar4.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(251)))), ((int)(((byte)(238)))), ((int)(((byte)(238)))));
this.uiScrollBar4.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiScrollBar4.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(230)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.uiScrollBar4.HoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(232)))), ((int)(((byte)(127)))), ((int)(((byte)(128)))));
this.uiScrollBar4.Location = new System.Drawing.Point(507, 217);
this.uiScrollBar4.Name = "uiScrollBar4";
this.uiScrollBar4.PressColor = System.Drawing.Color.FromArgb(((int)(((byte)(202)))), ((int)(((byte)(87)))), ((int)(((byte)(89)))));
this.uiScrollBar4.Size = new System.Drawing.Size(23, 163);
this.uiScrollBar4.Style = Sunny.UI.UIStyle.Red;
this.uiScrollBar4.StyleCustomMode = true;
this.uiScrollBar4.TabIndex = 45;
this.uiScrollBar4.Text = "uiScrollBar4";
//
// FOther
//
this.AutoScaleDimensions = new System.Drawing.SizeF(10F, 21F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 507);
this.Name = "FOther";
this.Text = "Other";
this.PagePanel.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
private UILight uiLight3;
private UILight uiLight2;
private UILine uiLine2;
private UILight uiLight1;
private UITrackBar uiTrackBar1;
private UILine uiLine4;
private UIProgressIndicator uiProgressIndicator1;
private UILine uiLine3;
private UIProcessBar uiProcessBar1;
private UILine uiLine5;
private System.Windows.Forms.Timer timer1;
private UIScrollBar uiScrollBar1;
private UILight uiLight4;
private UILedBulb uiLedBulb2;
private UILine uiLine8;
private UILedBulb uiLedBulb1;
private UILedBulb uiLedBulb4;
private UILedBulb uiLedBulb3;
private UIScrollBar uiScrollBar2;
private UILine uiLine1;
private UIScrollBar uiScrollBar4;
private UIScrollBar uiScrollBar3;
}
}

View File

@ -0,0 +1,26 @@
namespace Sunny.UI.Demo
{
public partial class FOther : UITitlePage
{
public FOther()
{
InitializeComponent();
}
private int value;
public override void Init()
{
value = 0;
timer1.ReStart();
}
private void timer1_Tick(object sender, System.EventArgs e)
{
value++;
uiTrackBar1.Value = value;
uiProcessBar1.Value = value;
uiScrollBar1.Value = value;
}
}
}

View File

@ -0,0 +1,123 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="timer1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
</root>

95
SunnyUI.Demo/Controls/FPanel.Designer.cs generated Normal file
View File

@ -0,0 +1,95 @@
namespace Sunny.UI.Demo
{
partial class FPanel
{
/// <summary>
/// Required designer variable.
/// </summary>
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.uiTitlePanel1 = new Sunny.UI.UITitlePanel();
this.uiPanel1 = new Sunny.UI.UIPanel();
this.uiGroupBox1 = new Sunny.UI.UIGroupBox();
this.PagePanel.SuspendLayout();
this.SuspendLayout();
//
// PagePanel
//
this.PagePanel.Controls.Add(this.uiGroupBox1);
this.PagePanel.Controls.Add(this.uiPanel1);
this.PagePanel.Controls.Add(this.uiTitlePanel1);
this.PagePanel.Size = new System.Drawing.Size(800, 453);
//
// uiTitlePanel1
//
this.uiTitlePanel1.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiTitlePanel1.ForeColor = System.Drawing.Color.White;
this.uiTitlePanel1.Location = new System.Drawing.Point(30, 230);
this.uiTitlePanel1.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.uiTitlePanel1.Name = "uiTitlePanel1";
this.uiTitlePanel1.Padding = new System.Windows.Forms.Padding(1, 35, 1, 1);
this.uiTitlePanel1.Size = new System.Drawing.Size(270, 180);
this.uiTitlePanel1.Style = Sunny.UI.UIStyle.Custom;
this.uiTitlePanel1.TabIndex = 1;
this.uiTitlePanel1.Text = "uiTitlePanel1";
//
// uiPanel1
//
this.uiPanel1.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiPanel1.Location = new System.Drawing.Point(30, 20);
this.uiPanel1.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.uiPanel1.Name = "uiPanel1";
this.uiPanel1.Size = new System.Drawing.Size(270, 180);
this.uiPanel1.TabIndex = 3;
this.uiPanel1.Text = "uiPanel1";
//
// uiGroupBox1
//
this.uiGroupBox1.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiGroupBox1.Location = new System.Drawing.Point(331, 4);
this.uiGroupBox1.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.uiGroupBox1.Name = "uiGroupBox1";
this.uiGroupBox1.Size = new System.Drawing.Size(270, 196);
this.uiGroupBox1.TabIndex = 4;
this.uiGroupBox1.Text = "uiGroupBox1";
//
// FPanel
//
this.AutoScaleDimensions = new System.Drawing.SizeF(10F, 21F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 488);
this.Name = "FPanel";
this.PageIndex = 1005;
this.Text = "Panel";
this.PagePanel.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
private UITitlePanel uiTitlePanel1;
private UIPanel uiPanel1;
private UIGroupBox uiGroupBox1;
}
}

View File

@ -0,0 +1,10 @@
namespace Sunny.UI.Demo
{
public partial class FPanel : UITitlePage
{
public FPanel()
{
InitializeComponent();
}
}
}

View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -0,0 +1,350 @@
namespace Sunny.UI.Demo
{
partial class FRadioButton
{
/// <summary>
/// Required designer variable.
/// </summary>
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.uiRadioButton12 = new Sunny.UI.UIRadioButton();
this.uiRadioButton13 = new Sunny.UI.UIRadioButton();
this.uiLabel3 = new Sunny.UI.UILabel();
this.uiRadioButton9 = new Sunny.UI.UIRadioButton();
this.uiRadioButton10 = new Sunny.UI.UIRadioButton();
this.uiRadioButton11 = new Sunny.UI.UIRadioButton();
this.uiLabel2 = new Sunny.UI.UILabel();
this.uiRadioButton5 = new Sunny.UI.UIRadioButton();
this.uiRadioButton7 = new Sunny.UI.UIRadioButton();
this.uiRadioButton8 = new Sunny.UI.UIRadioButton();
this.uiLabel1 = new Sunny.UI.UILabel();
this.uiRadioButton6 = new Sunny.UI.UIRadioButton();
this.uiRadioButton3 = new Sunny.UI.UIRadioButton();
this.uiRadioButton4 = new Sunny.UI.UIRadioButton();
this.uiLine3 = new Sunny.UI.UILine();
this.uiRadioButton2 = new Sunny.UI.UIRadioButton();
this.uiRadioButton1 = new Sunny.UI.UIRadioButton();
this.uiLine2 = new Sunny.UI.UILine();
this.uiRadioButtonGroup1 = new Sunny.UI.UIRadioButtonGroup();
this.PagePanel.SuspendLayout();
this.SuspendLayout();
//
// PagePanel
//
this.PagePanel.Controls.Add(this.uiRadioButtonGroup1);
this.PagePanel.Controls.Add(this.uiRadioButton12);
this.PagePanel.Controls.Add(this.uiRadioButton13);
this.PagePanel.Controls.Add(this.uiLabel3);
this.PagePanel.Controls.Add(this.uiRadioButton9);
this.PagePanel.Controls.Add(this.uiRadioButton10);
this.PagePanel.Controls.Add(this.uiRadioButton11);
this.PagePanel.Controls.Add(this.uiLabel2);
this.PagePanel.Controls.Add(this.uiRadioButton5);
this.PagePanel.Controls.Add(this.uiRadioButton7);
this.PagePanel.Controls.Add(this.uiRadioButton8);
this.PagePanel.Controls.Add(this.uiLabel1);
this.PagePanel.Controls.Add(this.uiRadioButton6);
this.PagePanel.Controls.Add(this.uiRadioButton3);
this.PagePanel.Controls.Add(this.uiRadioButton4);
this.PagePanel.Controls.Add(this.uiLine3);
this.PagePanel.Controls.Add(this.uiRadioButton2);
this.PagePanel.Controls.Add(this.uiRadioButton1);
this.PagePanel.Controls.Add(this.uiLine2);
this.PagePanel.Size = new System.Drawing.Size(800, 563);
//
// uiRadioButton12
//
this.uiRadioButton12.Cursor = System.Windows.Forms.Cursors.Hand;
this.uiRadioButton12.Enabled = false;
this.uiRadioButton12.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiRadioButton12.GroupIndex = 4;
this.uiRadioButton12.Location = new System.Drawing.Point(516, 48);
this.uiRadioButton12.Name = "uiRadioButton12";
this.uiRadioButton12.Padding = new System.Windows.Forms.Padding(22, 0, 0, 0);
this.uiRadioButton12.Size = new System.Drawing.Size(156, 35);
this.uiRadioButton12.TabIndex = 61;
this.uiRadioButton12.Text = "uiRadioButton12";
//
// uiRadioButton13
//
this.uiRadioButton13.Checked = true;
this.uiRadioButton13.Cursor = System.Windows.Forms.Cursors.Hand;
this.uiRadioButton13.Enabled = false;
this.uiRadioButton13.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiRadioButton13.GroupIndex = 4;
this.uiRadioButton13.Location = new System.Drawing.Point(354, 48);
this.uiRadioButton13.Name = "uiRadioButton13";
this.uiRadioButton13.Padding = new System.Windows.Forms.Padding(22, 0, 0, 0);
this.uiRadioButton13.Size = new System.Drawing.Size(156, 35);
this.uiRadioButton13.TabIndex = 60;
this.uiRadioButton13.Text = "uiRadioButton13";
//
// uiLabel3
//
this.uiLabel3.AutoSize = true;
this.uiLabel3.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiLabel3.Location = new System.Drawing.Point(49, 219);
this.uiLabel3.Name = "uiLabel3";
this.uiLabel3.Size = new System.Drawing.Size(131, 21);
this.uiLabel3.TabIndex = 59;
this.uiLabel3.Text = "GroupIndex = 3";
this.uiLabel3.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// uiRadioButton9
//
this.uiRadioButton9.Checked = true;
this.uiRadioButton9.Cursor = System.Windows.Forms.Cursors.Hand;
this.uiRadioButton9.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiRadioButton9.GroupIndex = 3;
this.uiRadioButton9.Location = new System.Drawing.Point(516, 212);
this.uiRadioButton9.Name = "uiRadioButton9";
this.uiRadioButton9.Padding = new System.Windows.Forms.Padding(22, 0, 0, 0);
this.uiRadioButton9.Size = new System.Drawing.Size(156, 35);
this.uiRadioButton9.TabIndex = 58;
this.uiRadioButton9.Text = "uiRadioButton33";
//
// uiRadioButton10
//
this.uiRadioButton10.Cursor = System.Windows.Forms.Cursors.Hand;
this.uiRadioButton10.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiRadioButton10.GroupIndex = 3;
this.uiRadioButton10.Location = new System.Drawing.Point(354, 212);
this.uiRadioButton10.Name = "uiRadioButton10";
this.uiRadioButton10.Padding = new System.Windows.Forms.Padding(22, 0, 0, 0);
this.uiRadioButton10.Size = new System.Drawing.Size(156, 35);
this.uiRadioButton10.TabIndex = 57;
this.uiRadioButton10.Text = "uiRadioButton32";
//
// uiRadioButton11
//
this.uiRadioButton11.Cursor = System.Windows.Forms.Cursors.Hand;
this.uiRadioButton11.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiRadioButton11.GroupIndex = 3;
this.uiRadioButton11.Location = new System.Drawing.Point(192, 212);
this.uiRadioButton11.Name = "uiRadioButton11";
this.uiRadioButton11.Padding = new System.Windows.Forms.Padding(22, 0, 0, 0);
this.uiRadioButton11.Size = new System.Drawing.Size(156, 35);
this.uiRadioButton11.TabIndex = 56;
this.uiRadioButton11.Text = "uiRadioButton31";
//
// uiLabel2
//
this.uiLabel2.AutoSize = true;
this.uiLabel2.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiLabel2.Location = new System.Drawing.Point(49, 178);
this.uiLabel2.Name = "uiLabel2";
this.uiLabel2.Size = new System.Drawing.Size(131, 21);
this.uiLabel2.TabIndex = 55;
this.uiLabel2.Text = "GroupIndex = 2";
this.uiLabel2.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// uiRadioButton5
//
this.uiRadioButton5.Cursor = System.Windows.Forms.Cursors.Hand;
this.uiRadioButton5.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiRadioButton5.GroupIndex = 2;
this.uiRadioButton5.Location = new System.Drawing.Point(516, 171);
this.uiRadioButton5.Name = "uiRadioButton5";
this.uiRadioButton5.Padding = new System.Windows.Forms.Padding(22, 0, 0, 0);
this.uiRadioButton5.Size = new System.Drawing.Size(156, 35);
this.uiRadioButton5.TabIndex = 54;
this.uiRadioButton5.Text = "uiRadioButton23";
//
// uiRadioButton7
//
this.uiRadioButton7.Checked = true;
this.uiRadioButton7.Cursor = System.Windows.Forms.Cursors.Hand;
this.uiRadioButton7.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiRadioButton7.GroupIndex = 2;
this.uiRadioButton7.Location = new System.Drawing.Point(354, 171);
this.uiRadioButton7.Name = "uiRadioButton7";
this.uiRadioButton7.Padding = new System.Windows.Forms.Padding(22, 0, 0, 0);
this.uiRadioButton7.Size = new System.Drawing.Size(156, 35);
this.uiRadioButton7.TabIndex = 53;
this.uiRadioButton7.Text = "uiRadioButton22";
//
// uiRadioButton8
//
this.uiRadioButton8.Cursor = System.Windows.Forms.Cursors.Hand;
this.uiRadioButton8.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiRadioButton8.GroupIndex = 2;
this.uiRadioButton8.Location = new System.Drawing.Point(192, 171);
this.uiRadioButton8.Name = "uiRadioButton8";
this.uiRadioButton8.Padding = new System.Windows.Forms.Padding(22, 0, 0, 0);
this.uiRadioButton8.Size = new System.Drawing.Size(156, 35);
this.uiRadioButton8.TabIndex = 52;
this.uiRadioButton8.Text = "uiRadioButton21";
//
// uiLabel1
//
this.uiLabel1.AutoSize = true;
this.uiLabel1.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiLabel1.Location = new System.Drawing.Point(49, 137);
this.uiLabel1.Name = "uiLabel1";
this.uiLabel1.Size = new System.Drawing.Size(131, 21);
this.uiLabel1.TabIndex = 51;
this.uiLabel1.Text = "GroupIndex = 1";
this.uiLabel1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// uiRadioButton6
//
this.uiRadioButton6.Cursor = System.Windows.Forms.Cursors.Hand;
this.uiRadioButton6.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiRadioButton6.GroupIndex = 1;
this.uiRadioButton6.Location = new System.Drawing.Point(516, 130);
this.uiRadioButton6.Name = "uiRadioButton6";
this.uiRadioButton6.Padding = new System.Windows.Forms.Padding(22, 0, 0, 0);
this.uiRadioButton6.Size = new System.Drawing.Size(156, 35);
this.uiRadioButton6.TabIndex = 50;
this.uiRadioButton6.Text = "uiRadioButton13";
//
// uiRadioButton3
//
this.uiRadioButton3.Cursor = System.Windows.Forms.Cursors.Hand;
this.uiRadioButton3.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiRadioButton3.GroupIndex = 1;
this.uiRadioButton3.Location = new System.Drawing.Point(354, 130);
this.uiRadioButton3.Name = "uiRadioButton3";
this.uiRadioButton3.Padding = new System.Windows.Forms.Padding(22, 0, 0, 0);
this.uiRadioButton3.Size = new System.Drawing.Size(156, 35);
this.uiRadioButton3.TabIndex = 49;
this.uiRadioButton3.Text = "uiRadioButton12";
//
// uiRadioButton4
//
this.uiRadioButton4.Checked = true;
this.uiRadioButton4.Cursor = System.Windows.Forms.Cursors.Hand;
this.uiRadioButton4.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiRadioButton4.GroupIndex = 1;
this.uiRadioButton4.Location = new System.Drawing.Point(192, 130);
this.uiRadioButton4.Name = "uiRadioButton4";
this.uiRadioButton4.Padding = new System.Windows.Forms.Padding(22, 0, 0, 0);
this.uiRadioButton4.Size = new System.Drawing.Size(156, 35);
this.uiRadioButton4.TabIndex = 48;
this.uiRadioButton4.Text = "uiRadioButton11";
//
// uiLine3
//
this.uiLine3.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiLine3.Location = new System.Drawing.Point(30, 96);
this.uiLine3.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine3.Name = "uiLine3";
this.uiLine3.Size = new System.Drawing.Size(670, 20);
this.uiLine3.TabIndex = 47;
this.uiLine3.Text = "UIRadioButton 分组";
this.uiLine3.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// uiRadioButton2
//
this.uiRadioButton2.Cursor = System.Windows.Forms.Cursors.Hand;
this.uiRadioButton2.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiRadioButton2.Location = new System.Drawing.Point(192, 48);
this.uiRadioButton2.Name = "uiRadioButton2";
this.uiRadioButton2.Padding = new System.Windows.Forms.Padding(22, 0, 0, 0);
this.uiRadioButton2.Size = new System.Drawing.Size(150, 35);
this.uiRadioButton2.TabIndex = 46;
this.uiRadioButton2.Text = "uiRadioButton2";
//
// uiRadioButton1
//
this.uiRadioButton1.Checked = true;
this.uiRadioButton1.Cursor = System.Windows.Forms.Cursors.Hand;
this.uiRadioButton1.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiRadioButton1.Location = new System.Drawing.Point(30, 48);
this.uiRadioButton1.Name = "uiRadioButton1";
this.uiRadioButton1.Padding = new System.Windows.Forms.Padding(22, 0, 0, 0);
this.uiRadioButton1.Size = new System.Drawing.Size(150, 35);
this.uiRadioButton1.TabIndex = 45;
this.uiRadioButton1.Text = "uiRadioButton1";
//
// uiLine2
//
this.uiLine2.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiLine2.Location = new System.Drawing.Point(30, 20);
this.uiLine2.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine2.Name = "uiLine2";
this.uiLine2.Size = new System.Drawing.Size(670, 20);
this.uiLine2.TabIndex = 44;
this.uiLine2.Text = "UIRadioButton";
this.uiLine2.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// uiRadioButtonGroup1
//
this.uiRadioButtonGroup1.ColumnCount = 3;
this.uiRadioButtonGroup1.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiRadioButtonGroup1.Items.AddRange(new object[] {
"0",
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9"});
this.uiRadioButtonGroup1.Location = new System.Drawing.Point(30, 253);
this.uiRadioButtonGroup1.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.uiRadioButtonGroup1.Name = "uiRadioButtonGroup1";
this.uiRadioButtonGroup1.Size = new System.Drawing.Size(670, 173);
this.uiRadioButtonGroup1.TabIndex = 63;
this.uiRadioButtonGroup1.Text = "UIRadioButtonGroup";
this.uiRadioButtonGroup1.ValueChanged += new Sunny.UI.UIRadioButtonGroup.OnValueChanged(this.uiRadioButtonGroup1_ValueChanged);
//
// FRadioButton
//
this.AutoScaleDimensions = new System.Drawing.SizeF(10F, 21F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 598);
this.Name = "FRadioButton";
this.Text = "RadioButton";
this.PagePanel.ResumeLayout(false);
this.PagePanel.PerformLayout();
this.ResumeLayout(false);
}
#endregion
private UIRadioButton uiRadioButton12;
private UIRadioButton uiRadioButton13;
private UILabel uiLabel3;
private UIRadioButton uiRadioButton9;
private UIRadioButton uiRadioButton10;
private UIRadioButton uiRadioButton11;
private UILabel uiLabel2;
private UIRadioButton uiRadioButton5;
private UIRadioButton uiRadioButton7;
private UIRadioButton uiRadioButton8;
private UILabel uiLabel1;
private UIRadioButton uiRadioButton6;
private UIRadioButton uiRadioButton3;
private UIRadioButton uiRadioButton4;
private UILine uiLine3;
private UIRadioButton uiRadioButton2;
private UIRadioButton uiRadioButton1;
private UILine uiLine2;
private UIRadioButtonGroup uiRadioButtonGroup1;
}
}

View File

@ -0,0 +1,15 @@
namespace Sunny.UI.Demo
{
public partial class FRadioButton : UITitlePage
{
public FRadioButton()
{
InitializeComponent();
}
private void uiRadioButtonGroup1_ValueChanged(object sender, int index, string text)
{
this.ShowInfoDialog("SelectedIndex: " + index + ", SelectedText: " + text);
}
}
}

View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -0,0 +1,214 @@
namespace Sunny.UI.Demo
{
partial class FTabControl
{
/// <summary>
/// Required designer variable.
/// </summary>
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.uiTabControl1 = new Sunny.UI.UITabControl();
this.tabPage1 = new System.Windows.Forms.TabPage();
this.tabPage2 = new System.Windows.Forms.TabPage();
this.uiLine1 = new Sunny.UI.UILine();
this.tabPage3 = new System.Windows.Forms.TabPage();
this.tabPage4 = new System.Windows.Forms.TabPage();
this.uiLine2 = new Sunny.UI.UILine();
this.uiTabControlMenu1 = new Sunny.UI.UITabControlMenu();
this.tabPage5 = new System.Windows.Forms.TabPage();
this.tabPage6 = new System.Windows.Forms.TabPage();
this.tabPage7 = new System.Windows.Forms.TabPage();
this.tabPage8 = new System.Windows.Forms.TabPage();
this.PagePanel.SuspendLayout();
this.uiTabControl1.SuspendLayout();
this.uiTabControlMenu1.SuspendLayout();
this.SuspendLayout();
//
// PagePanel
//
this.PagePanel.Controls.Add(this.uiTabControlMenu1);
this.PagePanel.Controls.Add(this.uiLine2);
this.PagePanel.Controls.Add(this.uiLine1);
this.PagePanel.Controls.Add(this.uiTabControl1);
this.PagePanel.Size = new System.Drawing.Size(800, 619);
//
// uiTabControl1
//
this.uiTabControl1.Controls.Add(this.tabPage1);
this.uiTabControl1.Controls.Add(this.tabPage2);
this.uiTabControl1.Controls.Add(this.tabPage3);
this.uiTabControl1.Controls.Add(this.tabPage4);
this.uiTabControl1.DrawMode = System.Windows.Forms.TabDrawMode.OwnerDrawFixed;
this.uiTabControl1.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiTabControl1.ItemSize = new System.Drawing.Size(150, 40);
this.uiTabControl1.Location = new System.Drawing.Point(30, 52);
this.uiTabControl1.Name = "uiTabControl1";
this.uiTabControl1.SelectedIndex = 0;
this.uiTabControl1.Size = new System.Drawing.Size(670, 183);
this.uiTabControl1.SizeMode = System.Windows.Forms.TabSizeMode.Fixed;
this.uiTabControl1.TabIndex = 0;
//
// tabPage1
//
this.tabPage1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(192)))), ((int)(((byte)(255)))));
this.tabPage1.Location = new System.Drawing.Point(0, 40);
this.tabPage1.Name = "tabPage1";
this.tabPage1.Size = new System.Drawing.Size(670, 143);
this.tabPage1.TabIndex = 0;
this.tabPage1.Text = "tabPage1";
//
// tabPage2
//
this.tabPage2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(255)))));
this.tabPage2.Location = new System.Drawing.Point(0, 40);
this.tabPage2.Name = "tabPage2";
this.tabPage2.Size = new System.Drawing.Size(670, 143);
this.tabPage2.TabIndex = 1;
this.tabPage2.Text = "tabPage2";
//
// uiLine1
//
this.uiLine1.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiLine1.Location = new System.Drawing.Point(30, 20);
this.uiLine1.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine1.Name = "uiLine1";
this.uiLine1.Size = new System.Drawing.Size(670, 20);
this.uiLine1.TabIndex = 19;
this.uiLine1.Text = "UITabControl";
this.uiLine1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// tabPage3
//
this.tabPage3.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
this.tabPage3.Location = new System.Drawing.Point(0, 40);
this.tabPage3.Name = "tabPage3";
this.tabPage3.Size = new System.Drawing.Size(670, 143);
this.tabPage3.TabIndex = 2;
this.tabPage3.Text = "tabPage3";
//
// tabPage4
//
this.tabPage4.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
this.tabPage4.Location = new System.Drawing.Point(0, 40);
this.tabPage4.Name = "tabPage4";
this.tabPage4.Size = new System.Drawing.Size(670, 143);
this.tabPage4.TabIndex = 3;
this.tabPage4.Text = "tabPage4";
//
// uiLine2
//
this.uiLine2.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiLine2.Location = new System.Drawing.Point(30, 253);
this.uiLine2.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine2.Name = "uiLine2";
this.uiLine2.Size = new System.Drawing.Size(670, 20);
this.uiLine2.TabIndex = 20;
this.uiLine2.Text = "UITabControlMenu";
this.uiLine2.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// uiTabControlMenu1
//
this.uiTabControlMenu1.Alignment = System.Windows.Forms.TabAlignment.Left;
this.uiTabControlMenu1.Controls.Add(this.tabPage5);
this.uiTabControlMenu1.Controls.Add(this.tabPage6);
this.uiTabControlMenu1.Controls.Add(this.tabPage7);
this.uiTabControlMenu1.Controls.Add(this.tabPage8);
this.uiTabControlMenu1.DrawMode = System.Windows.Forms.TabDrawMode.OwnerDrawFixed;
this.uiTabControlMenu1.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiTabControlMenu1.ItemSize = new System.Drawing.Size(40, 200);
this.uiTabControlMenu1.Location = new System.Drawing.Point(30, 288);
this.uiTabControlMenu1.Multiline = true;
this.uiTabControlMenu1.Name = "uiTabControlMenu1";
this.uiTabControlMenu1.SelectedIndex = 0;
this.uiTabControlMenu1.Size = new System.Drawing.Size(670, 239);
this.uiTabControlMenu1.SizeMode = System.Windows.Forms.TabSizeMode.Fixed;
this.uiTabControlMenu1.TabIndex = 21;
this.uiTabControlMenu1.TextAlignment = System.Windows.Forms.HorizontalAlignment.Center;
//
// tabPage5
//
this.tabPage5.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(192)))), ((int)(((byte)(255)))));
this.tabPage5.Location = new System.Drawing.Point(201, 0);
this.tabPage5.Name = "tabPage5";
this.tabPage5.Size = new System.Drawing.Size(469, 239);
this.tabPage5.TabIndex = 0;
this.tabPage5.Text = "tabPage5";
//
// tabPage6
//
this.tabPage6.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(255)))));
this.tabPage6.Location = new System.Drawing.Point(201, 0);
this.tabPage6.Name = "tabPage6";
this.tabPage6.Size = new System.Drawing.Size(469, 239);
this.tabPage6.TabIndex = 1;
this.tabPage6.Text = "tabPage6";
//
// tabPage7
//
this.tabPage7.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
this.tabPage7.Location = new System.Drawing.Point(201, 0);
this.tabPage7.Name = "tabPage7";
this.tabPage7.Size = new System.Drawing.Size(469, 239);
this.tabPage7.TabIndex = 2;
this.tabPage7.Text = "tabPage7";
//
// tabPage8
//
this.tabPage8.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(192)))));
this.tabPage8.Location = new System.Drawing.Point(201, 0);
this.tabPage8.Name = "tabPage8";
this.tabPage8.Size = new System.Drawing.Size(469, 239);
this.tabPage8.TabIndex = 3;
this.tabPage8.Text = "tabPage8";
//
// FTabControl
//
this.AutoScaleDimensions = new System.Drawing.SizeF(10F, 21F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 654);
this.Name = "FTabControl";
this.Text = "TabControl";
this.PagePanel.ResumeLayout(false);
this.uiTabControl1.ResumeLayout(false);
this.uiTabControlMenu1.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
private UITabControl uiTabControl1;
private System.Windows.Forms.TabPage tabPage1;
private System.Windows.Forms.TabPage tabPage2;
private UITabControlMenu uiTabControlMenu1;
private System.Windows.Forms.TabPage tabPage5;
private System.Windows.Forms.TabPage tabPage6;
private UILine uiLine2;
private UILine uiLine1;
private System.Windows.Forms.TabPage tabPage3;
private System.Windows.Forms.TabPage tabPage4;
private System.Windows.Forms.TabPage tabPage7;
private System.Windows.Forms.TabPage tabPage8;
}
}

View File

@ -0,0 +1,10 @@
namespace Sunny.UI.Demo
{
public partial class FTabControl : UITitlePage
{
public FTabControl()
{
InitializeComponent();
}
}
}

View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

314
SunnyUI.Demo/Controls/FTextBox.Designer.cs generated Normal file
View File

@ -0,0 +1,314 @@
namespace Sunny.UI.Demo
{
partial class FTextBox
{
/// <summary>
/// Required designer variable.
/// </summary>
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.uiIntegerUpDown1 = new Sunny.UI.UIIntegerUpDown();
this.uiTextBox1 = new Sunny.UI.UITextBox();
this.uiLabel1 = new Sunny.UI.UILabel();
this.uiLabel2 = new Sunny.UI.UILabel();
this.uiTextBox2 = new Sunny.UI.UITextBox();
this.uiLabel3 = new Sunny.UI.UILabel();
this.uiTextBox3 = new Sunny.UI.UITextBox();
this.uiComboBox1 = new Sunny.UI.UIComboBox();
this.uiComboBox2 = new Sunny.UI.UIComboBox();
this._uiDatePicker1 = new Sunny.UI.UIDatePicker();
this.uiDoubleUpDown1 = new Sunny.UI.UIDoubleUpDown();
this.uiLine1 = new Sunny.UI.UILine();
this.uiLine2 = new Sunny.UI.UILine();
this.uiLine3 = new Sunny.UI.UILine();
this.uiLine4 = new Sunny.UI.UILine();
this.uiLine5 = new Sunny.UI.UILine();
this.PagePanel.SuspendLayout();
this.SuspendLayout();
//
// PagePanel
//
this.PagePanel.Controls.Add(this.uiLine5);
this.PagePanel.Controls.Add(this.uiLine4);
this.PagePanel.Controls.Add(this.uiLine3);
this.PagePanel.Controls.Add(this.uiLine2);
this.PagePanel.Controls.Add(this.uiLine1);
this.PagePanel.Controls.Add(this.uiDoubleUpDown1);
this.PagePanel.Controls.Add(this._uiDatePicker1);
this.PagePanel.Controls.Add(this.uiComboBox2);
this.PagePanel.Controls.Add(this.uiComboBox1);
this.PagePanel.Controls.Add(this.uiLabel3);
this.PagePanel.Controls.Add(this.uiTextBox3);
this.PagePanel.Controls.Add(this.uiLabel2);
this.PagePanel.Controls.Add(this.uiTextBox2);
this.PagePanel.Controls.Add(this.uiLabel1);
this.PagePanel.Controls.Add(this.uiTextBox1);
this.PagePanel.Controls.Add(this.uiIntegerUpDown1);
this.PagePanel.Size = new System.Drawing.Size(800, 530);
//
// uiIntegerUpDown1
//
this.uiIntegerUpDown1.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiIntegerUpDown1.Location = new System.Drawing.Point(394, 212);
this.uiIntegerUpDown1.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.uiIntegerUpDown1.Maximum = 100;
this.uiIntegerUpDown1.Minimum = -100;
this.uiIntegerUpDown1.MinimumSize = new System.Drawing.Size(100, 0);
this.uiIntegerUpDown1.Name = "uiIntegerUpDown1";
this.uiIntegerUpDown1.Size = new System.Drawing.Size(150, 29);
this.uiIntegerUpDown1.TabIndex = 2;
this.uiIntegerUpDown1.Text = "_uiIntegerUpDown1";
//
// uiTextBox1
//
this.uiTextBox1.Cursor = System.Windows.Forms.Cursors.IBeam;
this.uiTextBox1.FillColor = System.Drawing.Color.White;
this.uiTextBox1.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiTextBox1.Location = new System.Drawing.Point(117, 54);
this.uiTextBox1.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.uiTextBox1.Name = "uiTextBox1";
this.uiTextBox1.Padding = new System.Windows.Forms.Padding(5);
this.uiTextBox1.Size = new System.Drawing.Size(221, 29);
this.uiTextBox1.TabIndex = 3;
this.uiTextBox1.Text = "uiTextBox1";
//
// uiLabel1
//
this.uiLabel1.AutoSize = true;
this.uiLabel1.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiLabel1.Location = new System.Drawing.Point(38, 58);
this.uiLabel1.Name = "uiLabel1";
this.uiLabel1.Size = new System.Drawing.Size(55, 21);
this.uiLabel1.TabIndex = 4;
this.uiLabel1.Text = "String";
this.uiLabel1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// uiLabel2
//
this.uiLabel2.AutoSize = true;
this.uiLabel2.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiLabel2.Location = new System.Drawing.Point(38, 97);
this.uiLabel2.Name = "uiLabel2";
this.uiLabel2.Size = new System.Drawing.Size(65, 21);
this.uiLabel2.TabIndex = 6;
this.uiLabel2.Text = "Integer";
this.uiLabel2.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// uiTextBox2
//
this.uiTextBox2.Cursor = System.Windows.Forms.Cursors.IBeam;
this.uiTextBox2.FillColor = System.Drawing.Color.White;
this.uiTextBox2.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiTextBox2.Location = new System.Drawing.Point(117, 93);
this.uiTextBox2.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.uiTextBox2.Maximum = 9D;
this.uiTextBox2.Minimum = 0D;
this.uiTextBox2.Name = "uiTextBox2";
this.uiTextBox2.Padding = new System.Windows.Forms.Padding(5);
this.uiTextBox2.Size = new System.Drawing.Size(221, 29);
this.uiTextBox2.TabIndex = 5;
this.uiTextBox2.Text = "0";
this.uiTextBox2.Type = Sunny.UI.UITextBox.UIEditType.Integer;
//
// uiLabel3
//
this.uiLabel3.AutoSize = true;
this.uiLabel3.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiLabel3.Location = new System.Drawing.Point(38, 136);
this.uiLabel3.Name = "uiLabel3";
this.uiLabel3.Size = new System.Drawing.Size(65, 21);
this.uiLabel3.TabIndex = 8;
this.uiLabel3.Text = "Double";
this.uiLabel3.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// uiTextBox3
//
this.uiTextBox3.Cursor = System.Windows.Forms.Cursors.IBeam;
this.uiTextBox3.FillColor = System.Drawing.Color.White;
this.uiTextBox3.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiTextBox3.Location = new System.Drawing.Point(117, 132);
this.uiTextBox3.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.uiTextBox3.Name = "uiTextBox3";
this.uiTextBox3.Padding = new System.Windows.Forms.Padding(5);
this.uiTextBox3.Size = new System.Drawing.Size(221, 29);
this.uiTextBox3.TabIndex = 7;
this.uiTextBox3.Text = "0.00";
this.uiTextBox3.Type = Sunny.UI.UITextBox.UIEditType.Double;
//
// uiComboBox1
//
this.uiComboBox1.FillColor = System.Drawing.Color.White;
this.uiComboBox1.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiComboBox1.Items.AddRange(new object[] {
"1",
"2",
"3",
"4",
"5",
"6"});
this.uiComboBox1.Location = new System.Drawing.Point(30, 212);
this.uiComboBox1.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.uiComboBox1.MinimumSize = new System.Drawing.Size(63, 0);
this.uiComboBox1.Name = "uiComboBox1";
this.uiComboBox1.Padding = new System.Windows.Forms.Padding(0, 0, 30, 0);
this.uiComboBox1.Size = new System.Drawing.Size(150, 29);
this.uiComboBox1.TabIndex = 11;
this.uiComboBox1.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft;
//
// uiComboBox2
//
this.uiComboBox2.DropDownStyle = Sunny.UI.UIDropDownStyle.DropDownList;
this.uiComboBox2.FillColor = System.Drawing.Color.White;
this.uiComboBox2.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiComboBox2.Items.AddRange(new object[] {
"1",
"2",
"3",
"4",
"5",
"6"});
this.uiComboBox2.Location = new System.Drawing.Point(188, 212);
this.uiComboBox2.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.uiComboBox2.MinimumSize = new System.Drawing.Size(63, 0);
this.uiComboBox2.Name = "uiComboBox2";
this.uiComboBox2.Padding = new System.Windows.Forms.Padding(0, 0, 30, 0);
this.uiComboBox2.Size = new System.Drawing.Size(150, 29);
this.uiComboBox2.TabIndex = 12;
this.uiComboBox2.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft;
//
// _uiDatePicker1
//
this._uiDatePicker1.DropDownStyle = Sunny.UI.UIDropDownStyle.DropDownList;
this._uiDatePicker1.FillColor = System.Drawing.Color.White;
this._uiDatePicker1.Font = new System.Drawing.Font("微软雅黑", 12F);
this._uiDatePicker1.Location = new System.Drawing.Point(30, 294);
this._uiDatePicker1.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this._uiDatePicker1.MinimumSize = new System.Drawing.Size(63, 0);
this._uiDatePicker1.Name = "_uiDatePicker1";
this._uiDatePicker1.Padding = new System.Windows.Forms.Padding(0, 0, 30, 0);
this._uiDatePicker1.Size = new System.Drawing.Size(150, 29);
this._uiDatePicker1.TabIndex = 13;
this._uiDatePicker1.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft;
this._uiDatePicker1.Value = new System.DateTime(2020, 4, 16, 0, 0, 0, 0);
//
// uiDoubleUpDown1
//
this.uiDoubleUpDown1.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiDoubleUpDown1.Location = new System.Drawing.Point(394, 294);
this.uiDoubleUpDown1.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.uiDoubleUpDown1.MinimumSize = new System.Drawing.Size(100, 0);
this.uiDoubleUpDown1.Name = "uiDoubleUpDown1";
this.uiDoubleUpDown1.Size = new System.Drawing.Size(150, 29);
this.uiDoubleUpDown1.TabIndex = 14;
this.uiDoubleUpDown1.Text = "uiDoubleUpDown1";
this.uiDoubleUpDown1.Value = 0D;
//
// uiLine1
//
this.uiLine1.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiLine1.Location = new System.Drawing.Point(30, 20);
this.uiLine1.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine1.Name = "uiLine1";
this.uiLine1.Size = new System.Drawing.Size(670, 20);
this.uiLine1.TabIndex = 20;
this.uiLine1.Text = "UITextBox";
this.uiLine1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// uiLine2
//
this.uiLine2.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiLine2.Location = new System.Drawing.Point(30, 178);
this.uiLine2.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine2.Name = "uiLine2";
this.uiLine2.Size = new System.Drawing.Size(308, 20);
this.uiLine2.TabIndex = 21;
this.uiLine2.Text = "UICombobox";
this.uiLine2.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// uiLine3
//
this.uiLine3.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiLine3.Location = new System.Drawing.Point(30, 260);
this.uiLine3.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine3.Name = "uiLine3";
this.uiLine3.Size = new System.Drawing.Size(306, 20);
this.uiLine3.TabIndex = 22;
this.uiLine3.Text = "UIDatePicker";
this.uiLine3.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// uiLine4
//
this.uiLine4.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiLine4.Location = new System.Drawing.Point(394, 178);
this.uiLine4.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine4.Name = "uiLine4";
this.uiLine4.Size = new System.Drawing.Size(306, 20);
this.uiLine4.TabIndex = 23;
this.uiLine4.Text = "UIIntegerUpDown";
this.uiLine4.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// uiLine5
//
this.uiLine5.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiLine5.Location = new System.Drawing.Point(394, 260);
this.uiLine5.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine5.Name = "uiLine5";
this.uiLine5.Size = new System.Drawing.Size(306, 20);
this.uiLine5.TabIndex = 24;
this.uiLine5.Text = "UIDoubleUpDown";
this.uiLine5.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// FTextBox
//
this.AutoScaleDimensions = new System.Drawing.SizeF(10F, 21F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 565);
this.Name = "FTextBox";
this.PageIndex = 1003;
this.Text = "TextBox";
this.PagePanel.ResumeLayout(false);
this.PagePanel.PerformLayout();
this.ResumeLayout(false);
}
#endregion
private UILabel uiLabel3;
private UITextBox uiTextBox3;
private UILabel uiLabel2;
private UITextBox uiTextBox2;
private UILabel uiLabel1;
private UITextBox uiTextBox1;
private UIIntegerUpDown uiIntegerUpDown1;
private UIDatePicker _uiDatePicker1;
private UIComboBox uiComboBox2;
private UIComboBox uiComboBox1;
private UIDoubleUpDown uiDoubleUpDown1;
private UILine uiLine4;
private UILine uiLine3;
private UILine uiLine2;
private UILine uiLine1;
private UILine uiLine5;
}
}

View File

@ -0,0 +1,19 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Sunny.UI.Demo
{
public partial class FTextBox : UITitlePage
{
public FTextBox()
{
InitializeComponent();
}
}
}

View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -0,0 +1,100 @@
namespace Sunny.UI.Demo
{
partial class FTransfer
{
/// <summary>
/// Required designer variable.
/// </summary>
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.uiTransfer1 = new Sunny.UI.UITransfer();
this.uiLine1 = new Sunny.UI.UILine();
this.PagePanel.SuspendLayout();
this.SuspendLayout();
//
// PagePanel
//
this.PagePanel.Controls.Add(this.uiLine1);
this.PagePanel.Controls.Add(this.uiTransfer1);
//
// uiTransfer1
//
this.uiTransfer1.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiTransfer1.ItemsLeft.AddRange(new object[] {
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8"});
this.uiTransfer1.ItemsRight.AddRange(new object[] {
"9",
"10",
"11",
"12",
"13",
"14",
"15",
"16"});
this.uiTransfer1.Location = new System.Drawing.Point(30, 55);
this.uiTransfer1.Margin = new System.Windows.Forms.Padding(7, 9, 7, 9);
this.uiTransfer1.Name = "uiTransfer1";
this.uiTransfer1.Padding = new System.Windows.Forms.Padding(1);
this.uiTransfer1.RadiusSides = Sunny.UI.UICornerRadiusSides.None;
this.uiTransfer1.RectSides = System.Windows.Forms.ToolStripStatusLabelBorderSides.None;
this.uiTransfer1.Size = new System.Drawing.Size(427, 370);
this.uiTransfer1.TabIndex = 3;
this.uiTransfer1.Text = "uiTransfer1";
//
// uiLine1
//
this.uiLine1.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiLine1.Location = new System.Drawing.Point(30, 20);
this.uiLine1.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine1.Name = "uiLine1";
this.uiLine1.Size = new System.Drawing.Size(670, 20);
this.uiLine1.TabIndex = 19;
this.uiLine1.Text = "UITransfer";
this.uiLine1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// FTransfer
//
this.AutoScaleDimensions = new System.Drawing.SizeF(10F, 21F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 450);
this.Name = "FTransfer";
this.Text = "Transfer";
this.PagePanel.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
private UITransfer uiTransfer1;
private UILine uiLine1;
}
}

View File

@ -0,0 +1,10 @@
namespace Sunny.UI.Demo
{
public partial class FTransfer : UITitlePage
{
public FTransfer()
{
InitializeComponent();
}
}
}

View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -0,0 +1,162 @@
namespace Sunny.UI.Demo
{
partial class FTreeView
{
/// <summary>
/// Required designer variable.
/// </summary>
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()
{
System.Windows.Forms.TreeNode treeNode1 = new System.Windows.Forms.TreeNode("节点8");
System.Windows.Forms.TreeNode treeNode2 = new System.Windows.Forms.TreeNode("节点9");
System.Windows.Forms.TreeNode treeNode3 = new System.Windows.Forms.TreeNode("节点10");
System.Windows.Forms.TreeNode treeNode4 = new System.Windows.Forms.TreeNode("节点11");
System.Windows.Forms.TreeNode treeNode5 = new System.Windows.Forms.TreeNode("节点12");
System.Windows.Forms.TreeNode treeNode6 = new System.Windows.Forms.TreeNode("节点13");
System.Windows.Forms.TreeNode treeNode7 = new System.Windows.Forms.TreeNode("节点0", new System.Windows.Forms.TreeNode[] {
treeNode1,
treeNode2,
treeNode3,
treeNode4,
treeNode5,
treeNode6});
System.Windows.Forms.TreeNode treeNode8 = new System.Windows.Forms.TreeNode("节点14");
System.Windows.Forms.TreeNode treeNode9 = new System.Windows.Forms.TreeNode("节点15");
System.Windows.Forms.TreeNode treeNode10 = new System.Windows.Forms.TreeNode("节点16");
System.Windows.Forms.TreeNode treeNode11 = new System.Windows.Forms.TreeNode("节点1", new System.Windows.Forms.TreeNode[] {
treeNode8,
treeNode9,
treeNode10});
System.Windows.Forms.TreeNode treeNode12 = new System.Windows.Forms.TreeNode("节点2");
System.Windows.Forms.TreeNode treeNode13 = new System.Windows.Forms.TreeNode("节点3");
System.Windows.Forms.TreeNode treeNode14 = new System.Windows.Forms.TreeNode("节点4");
System.Windows.Forms.TreeNode treeNode15 = new System.Windows.Forms.TreeNode("节点5");
System.Windows.Forms.TreeNode treeNode16 = new System.Windows.Forms.TreeNode("节点6");
System.Windows.Forms.TreeNode treeNode17 = new System.Windows.Forms.TreeNode("节点17");
System.Windows.Forms.TreeNode treeNode18 = new System.Windows.Forms.TreeNode("节点18");
System.Windows.Forms.TreeNode treeNode19 = new System.Windows.Forms.TreeNode("节点19");
System.Windows.Forms.TreeNode treeNode20 = new System.Windows.Forms.TreeNode("节点7", new System.Windows.Forms.TreeNode[] {
treeNode17,
treeNode18,
treeNode19});
this.uiTreeView1 = new Sunny.UI.UITreeView();
this.uiLine1 = new Sunny.UI.UILine();
this.PagePanel.SuspendLayout();
this.SuspendLayout();
//
// PagePanel
//
this.PagePanel.Controls.Add(this.uiLine1);
this.PagePanel.Controls.Add(this.uiTreeView1);
//
// uiTreeView1
//
this.uiTreeView1.BackColor = System.Drawing.Color.White;
this.uiTreeView1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.uiTreeView1.DrawMode = System.Windows.Forms.TreeViewDrawMode.OwnerDrawAll;
this.uiTreeView1.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiTreeView1.ItemHeight = 28;
this.uiTreeView1.Location = new System.Drawing.Point(33, 54);
this.uiTreeView1.Name = "uiTreeView1";
treeNode1.Name = "节点8";
treeNode1.Text = "节点8";
treeNode2.Name = "节点9";
treeNode2.Text = "节点9";
treeNode3.Name = "节点10";
treeNode3.Text = "节点10";
treeNode4.Name = "节点11";
treeNode4.Text = "节点11";
treeNode5.Name = "节点12";
treeNode5.Text = "节点12";
treeNode6.Name = "节点13";
treeNode6.Text = "节点13";
treeNode7.Name = "节点0";
treeNode7.Text = "节点0";
treeNode8.Name = "节点14";
treeNode8.Text = "节点14";
treeNode9.Name = "节点15";
treeNode9.Text = "节点15";
treeNode10.Name = "节点16";
treeNode10.Text = "节点16";
treeNode11.Name = "节点1";
treeNode11.Text = "节点1";
treeNode12.Name = "节点2";
treeNode12.Text = "节点2";
treeNode13.Name = "节点3";
treeNode13.Text = "节点3";
treeNode14.Name = "节点4";
treeNode14.Text = "节点4";
treeNode15.Name = "节点5";
treeNode15.Text = "节点5";
treeNode16.Name = "节点6";
treeNode16.Text = "节点6";
treeNode17.Name = "节点17";
treeNode17.Text = "节点17";
treeNode18.Name = "节点18";
treeNode18.Text = "节点18";
treeNode19.Name = "节点19";
treeNode19.Text = "节点19";
treeNode20.Name = "节点7";
treeNode20.Text = "节点7";
this.uiTreeView1.Nodes.AddRange(new System.Windows.Forms.TreeNode[] {
treeNode7,
treeNode11,
treeNode12,
treeNode13,
treeNode14,
treeNode15,
treeNode16,
treeNode20});
this.uiTreeView1.Size = new System.Drawing.Size(266, 313);
this.uiTreeView1.TabIndex = 0;
//
// uiLine1
//
this.uiLine1.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiLine1.Location = new System.Drawing.Point(33, 20);
this.uiLine1.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine1.Name = "uiLine1";
this.uiLine1.Size = new System.Drawing.Size(670, 16);
this.uiLine1.TabIndex = 19;
this.uiLine1.Text = "UITreeView";
this.uiLine1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// FTreeView
//
this.AutoScaleDimensions = new System.Drawing.SizeF(10F, 21F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 450);
this.Name = "FTreeView";
this.Text = "TreeView";
this.PagePanel.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
private UITreeView uiTreeView1;
private UILine uiLine1;
}
}

View File

@ -0,0 +1,10 @@
namespace Sunny.UI.Demo
{
public partial class FTreeView : UITitlePage
{
public FTreeView()
{
InitializeComponent();
}
}
}

View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

111
SunnyUI.Demo/FMain.Designer.cs generated Normal file
View File

@ -0,0 +1,111 @@
namespace Sunny.UI.Demo
{
partial class FMain
{
/// <summary>
/// Required designer variable.
/// </summary>
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.components = new System.ComponentModel.Container();
System.Windows.Forms.TreeNode treeNode1 = new System.Windows.Forms.TreeNode("控件");
System.Windows.Forms.TreeNode treeNode2 = new System.Windows.Forms.TreeNode("窗体");
System.Windows.Forms.TreeNode treeNode3 = new System.Windows.Forms.TreeNode("主题");
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FMain));
this.uiLogo1 = new Sunny.UI.UILogo();
this.uiAvatar = new Sunny.UI.UIAvatar();
this.StyleManager = new Sunny.UI.UIStyleManager(this.components);
this.Header.SuspendLayout();
this.SuspendLayout();
//
// Aside
//
this.Aside.ItemHeight = 36;
this.Aside.LineColor = System.Drawing.Color.Black;
this.Aside.Size = new System.Drawing.Size(250, 575);
//
// Header
//
this.Header.Controls.Add(this.uiAvatar);
this.Header.Controls.Add(this.uiLogo1);
treeNode1.Name = "节点0";
treeNode1.Text = "控件";
treeNode2.Name = "节点1";
treeNode2.Text = "窗体";
treeNode3.Name = "节点2";
treeNode3.Text = "主题";
this.Header.Nodes.AddRange(new System.Windows.Forms.TreeNode[] {
treeNode1,
treeNode2,
treeNode3});
this.Header.SelectedIndex = 0;
this.Header.Size = new System.Drawing.Size(1024, 110);
this.Header.MenuItemClick += new Sunny.UI.UINavBar.OnMenuItemClick(this.Header_MenuItemClick);
//
// Main
//
this.Main.Size = new System.Drawing.Size(774, 575);
//
// uiLogo1
//
this.uiLogo1.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiLogo1.Location = new System.Drawing.Point(20, 15);
this.uiLogo1.MaximumSize = new System.Drawing.Size(300, 80);
this.uiLogo1.MinimumSize = new System.Drawing.Size(300, 80);
this.uiLogo1.Name = "uiLogo1";
this.uiLogo1.Size = new System.Drawing.Size(300, 80);
this.uiLogo1.Style = Sunny.UI.UIStyle.Custom;
this.uiLogo1.TabIndex = 3;
this.uiLogo1.Text = "uiLogo1";
//
// uiAvatar
//
this.uiAvatar.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.uiAvatar.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiAvatar.Location = new System.Drawing.Point(943, 25);
this.uiAvatar.Name = "uiAvatar";
this.uiAvatar.Size = new System.Drawing.Size(65, 61);
this.uiAvatar.TabIndex = 4;
this.uiAvatar.Text = "uiAvatar1";
//
// FMain
//
this.AutoScaleDimensions = new System.Drawing.SizeF(10F, 21F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(1024, 720);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Name = "FMain";
this.Text = "SunnyUI.Net";
this.Header.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
private UILogo uiLogo1;
private UIAvatar uiAvatar;
private UIStyleManager StyleManager;
}
}

64
SunnyUI.Demo/FMain.cs Normal file
View File

@ -0,0 +1,64 @@
using Sunny.UI.Demo.Forms;
using System.Windows.Forms;
namespace Sunny.UI.Demo
{
public partial class FMain : UIHeaderAsideMainFrame
{
public FMain()
{
InitializeComponent();
int pageIndex = 1000;
Header.SetNodePageIndex(Header.Nodes[0], pageIndex);
TreeNode parent = Aside.CreateNode("Controls", pageIndex);
Aside.CreateChildNode(parent, AddPage(new FButton(), ++pageIndex));
Aside.CreateChildNode(parent, AddPage(new FLabel(), ++pageIndex));
Aside.CreateChildNode(parent, AddPage(new FCheckBox(), ++pageIndex));
Aside.CreateChildNode(parent, AddPage(new FRadioButton(), ++pageIndex));
Aside.CreateChildNode(parent, AddPage(new FTextBox(), ++pageIndex));
Aside.CreateChildNode(parent, AddPage(new FDataGridView(), ++pageIndex));
Aside.CreateChildNode(parent, AddPage(new FListBox(), ++pageIndex));
Aside.CreateChildNode(parent, AddPage(new FTreeView(), ++pageIndex));
Aside.CreateChildNode(parent, AddPage(new FNavigation(), ++pageIndex));
Aside.CreateChildNode(parent, AddPage(new FTabControl(), ++pageIndex));
Aside.CreateChildNode(parent, AddPage(new FLine(), ++pageIndex));
Aside.CreateChildNode(parent, AddPage(new FPanel(), ++pageIndex));
Aside.CreateChildNode(parent, AddPage(new FAvatar(), ++pageIndex));
Aside.CreateChildNode(parent, AddPage(new FContextMenuStrip(), ++pageIndex));
Aside.CreateChildNode(parent, AddPage(new FMeter(), ++pageIndex));
Aside.CreateChildNode(parent, AddPage(new FOther(), ++pageIndex));
pageIndex = 2000;
Header.SetNodePageIndex(Header.Nodes[1], pageIndex);
parent = Aside.CreateNode("Forms", pageIndex);
Aside.CreateChildNode(parent, AddPage(new FDialogs(), ++pageIndex));
Aside.CreateChildNode(parent, AddPage(new FEditor(), ++pageIndex));
Aside.CreateChildNode(parent, AddPage(new FFrames(), ++pageIndex));
var styles = UIStyles.PopularStyles();
foreach (UIStyle style in styles)
{
Header.CreateChildNode(Header.Nodes[2], style.DisplayText(), style.Value());
}
Aside.SelectFirst();
}
private void Header_MenuItemClick(string text, int menuIndex, int pageIndex)
{
switch (menuIndex)
{
case 0:
case 1:
Aside.SelectPage(pageIndex);
break;
case 2:
UIStyle style = (UIStyle)pageIndex;
StyleManager.Style = style;
break;
}
}
}
}

786
SunnyUI.Demo/FMain.resx Normal file
View File

@ -0,0 +1,786 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="StyleManager.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAcAMDAAAAEACACoDgAAdgAAACAgAAABAAgAqAgAAB4PAAAQEAAAAQAIAGgFAADGFwAAQEAAAAEA
IAAoQgAALh0AADAwAAABACAAqCUAAFZfAAAgIAAAAQAgAKgQAAD+hAAAEBAAAAEAIABoBAAAppUAACgA
AAAwAAAAYAAAAAEACAAAAAAAAAkAAAAAAAAAAAAAAAEAAAABAAAAAAAAOsFnAEPDbQBLxnUAVMh6AGDI
egD+nT4A/p5BAP2gRQD8o0sA/KZTAPqpVQD4p1gA9qtbAPurXAD2rGAA+axiAPOuawDstW0A8rFlAPqx
ZwD3sWsA+7JrAOi6dgDvsngA87VyAPm1cwD2t3oA9Lp8APm7ewA8bPQAQG/0AERy9ABJdfQATXn1AFJ8
9QBby4MAZMyIAHPNiQB10I8AYs+QAGjRlgB505cAXNG5AHXUogBk070APKHlAHuT3ABVgPUAW4P0AF+J
9QBlivUAao71AGyR9QBylPUAdZr1AHub9gBCpOUASafmAEyp5gBRqucAVK3oAFmu6ABcsekAYq/qAGOz
6gBptOoAYbruAGy77ABxtewAfrfvAHO77AB7vO0AeqL0AATD/QAWx/0AJ8v7ADXO9wAzzPsAOs78ADzQ
/QBEztYATdDYAHrYxgBm1t0Ad9zfAEPO+wBMz/sAWM/5AEnS/ABS1PYAXtj3AFTU/ABa1fwAX9j8AGnA
7wB0wO4AfcLuAGvJ9AB0xfEAe8bwAHPN9QB8zfQAY9j0AGXT+gBr0vkAY9j5AGva/QB63PYAftb5AHLb
+wB93PsAmJKPAJqUkQCdmJUAn5qZAKGalgChnJwApqGdAKujnACzppwAop+hAKaioACqpaIArqmlAKel
qACopqsAqqisALKpowC8raAAsayqAL6xpQC1sK0AvbOsAK6tswCzsbMAvbi2ALKyuQC4trkAvLm5ANu3
lwDTt5wA2riZAOu3hQDtu4IA6rqMAPC3gQD1vYIA+b6DAPa+iwDku5QA472aAPC/kQDEsqIAyrakAM+4
owDLuakAyLyzAMC8ugCDzo0AiNKXAJTQkwCW0psAndGZALDPmACj0ZcApNCYALLRmgCJ2agAltaiAJPb
qgCM3LYAm92xAKnWpADXyZEA2c6aAMDRnQDP0J4A0dGfAN3QnwDgwYMA7MGFAPbAhQD0w4kA+sGLAOHI
kADrypYA7saZAOXNnADtyJoA9caQAPrFkwDwy5cA88WYAPHKnAD8y5wA2cKtAMnWqQDT1KcAx8G+AMzD
uwDWwbAA6sWjAO3JpgDixKkA5MiuAO/NrADxzawA6NGjAODMugCDmd4AmKPJAJ2ozAC8vMQApq/RALa/
2wCPo+AAgL7uAIOi9gCNp/QAhKv0AI2p9ACGo/gAiqb4AI2o+ACSrPQAg7XxAIy09ACEufAAlbX2AJ2z
9QCVvPQAnLv2AJmx+QCnt+YAobfyAKC5+ACH3c8AgsHuAIrG7wCPxfAAhszzAIrK8ACUxPEAm8P0AJLK
8ACayPIAidT2AITW+ACA3/oAmNDyAMrGwwDMyMYAw8PJAMrJywD///8AAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADm4dvd4eHq1wD91YrV/f4AAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAA4Dg0MjAxMTTS1IqGfnV7fIee/gAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAOneNjIxIiIiMDEv1Ip/e3Jze3uEivwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADp2jYzMSMh
IR8iMDEv04Z/eXFzcnV7goSK/AAAAAAAAAAAAAAAAAAAAAAAAAAAAOA2MCIgHx8fHh8fIzEv04l/eXFx
cXJwcnJ3gor8AAAAAAAAAAAAAAAAAAAAAAAA4DYxIh4eHh4eHh4hITEv1IZ/eXBxcHBwcHJye4KeAAAA
AAAAAAAAAAAAAAAAAADgNTEiHx4eHh4eHh4hIzEv04l/eXBwcHBwcHByc3qCngAAAAAAAAAAAAAAAAAA
AOA1MCAfHx4eHh4eHh4gIjAv04Z/eXBwcHFwcHBwcnJ1goj8AAAAAAAAAAAAAAAA7No0IiAfHh4eHh4e
Hh4hIjEv04l/eXBwcHBxcHBwcHB0e4THAAAAAAAAAAAAAAAAAOE3MSEhHx4eHh4eHh4hIzEv1IZ/eXBw
cHBwcHBxcnJygoTHAAAAAAAAAAAAAAAAAOxJNTEhHx4eHh4eHh4hIzEv04l/eXBwcHBwcXBwcHJ0goXI
AAAAAAAAAAAAAAAAAOfgNzUyMCIgICAgICExMjjY1tWGf3NzcXBxcXJydHd4gZvEAAAAAAAAAAAAAADz
5OLi4txJNzUyIyEjMjQ44eYAAAD9in55eXJzc3V4gYGNjY6Xys8AAAAAAAAA8NlFQkXi5+fn5eA3MTE0
Nt7pAAAAAAAA/YqCe3FzdYKBnMTNl5GSk5XBAAAAAAAAR0I+PD5I8PT07OfeNzU44AAAAAAAAAAAAP6e
gnt3gYGcxM3KmBsWFhYdAAAAAAD6Qj08Oj1ARUZG5OPj4+UAAAAAAAAAAAAAAAAA/J2cm42OlpGVGBQO
Dg4WwwAAAADvPjw6Ojo6PT5ARUbzAAAAAAAAAAAAAAAAAAAAAADRzZGPGBEPDAkJCQwOvwAAAADuPDou
Li4uLjk6PkX2AAAAAAAAAAAAAAAAAAAAAAAAzpgaFAkHBwcHBwgKuAAAAABIPC4uLi4uLjk6PUXzAAAA
AAAAAAAAAAAAAAAAAAAAyx0UDAcHBwYGBwcMlAAAAABHOi4uLi4uLi45OkLwAAAAAAAAAAAAAAAAAAAA
AAAAyxUMCAkHBgYGBwcJlAAAAABHLi4uLi4uLi45OT/wAAAAAAAAAAAAAAAAAAAAAAAAmBQHBwcGBgYG
BgYJHQAAAABHOi4uLi4uLi45OT/6AAAAAAAAAAAAAAAAAAAAAAAAuxQHCAcGBgYGBgYJHQAAAABHLi4u
Li4uLi45OT/6AAAAAAAAAAAAAAAAAAAAAAAAuw8JCAcGBgYGBgYJHQAAAABHLi4uLi4uLi45OULwAAAA
AAAAAAAAAAAAAAAAAAAAvQ8JCAcGBgYGBgYJHQAAAABHOi4uLi4uLjk7PUT6AAAAAAAAAAAAAAAAAAAA
AAAAAJATDgkIBwcGBwcJkwAAAABhOjouLi4uLjo9QmQAAAAAAAAAAAAAAAAAAAAAAAAAALy1GQ0JCQcH
BwcMHQAAAABhPC4uLi4uOTtCYPAAAAAAAAAAAAAAAAAAAAAAAAAAAADQtRUKCQgHBwgMtgAAAADuPTw8
Ojw9P0NfYmb3AAAAAAAAAAAAAAAAAAAAAAAAAACyrrQXEhMOCgoOvgAAAAD6Pz89PUNfZWZlZWlpaG4A
AAAAAAAAAAAAAAAAAKmio6aksLGvubUcGRQWwgAAAAAARERCREfxAABtaV1WTk5dAAAAAAAAAAAAAACs
KgUFJSafrQAAANDAtx0dAAAAAAAA8GRjX2Vm921pXFBMS0xQXvkAAAAAAAAAAKwqJQMCAwQmoa0Axcaz
vMDCAAAAAAAAAAD3ZmJpWFxWTkxLS0tMTllqbAAAAAAAqColBAICAgMFJp+hpaSwxgAAAAAAAAAAAAAA
bWhXTkxLS0tKSkpLS0tMUFpUU6sqKAMCAgEBAQECAgMFJqCtAAAAAAAAAAAAAAAAbV5QS0tLSkpKSkpK
SkpLTFBSLSwpBAEBAQEBAQEBAQEDBSepAAAAAAAAAAAAAAAAblxOS0pKSkpKSkpKSkpLTExSLSwpBAEB
AQEBAQEBAQEDBSWpAAAAAAAAAAAAAAAAa1lOS0pKSkpKSkpKSkpLS05RKywpAwEBAQEBAQEBAQECBSao
AAAAAAAAAAAAAAAAbV5PS0tKSkpKSkpKSkpLS0xRKywoBAEBAQEBAQEBAgIDJSqqAAAAAAAAAAAAAAAA
AABqT0tLS0pKSkpKSkpLS0xRKywoAwEBAQEBAQECAgMlKqwAAAAAAAAAAAAAAAAAAAAAXlBMSkpKSkpK
SkpLS0xRKywoBAEBAQEBAQECBCUqrAAAAAAAAAAAAAAAAAAAAAAAb1xQTEtLSkpKSkpLS0xRKywoAwEB
AQEBAgIEJieqAAAAAAAAAAAAAAAAAAAAAAAAAABuXFBMS0tLSkpLS0xRKywoBAEBAwMDJSYqqAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAGtcT0tLS0pLS0xRKywoBAICAwMoJ6gAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAABuXFBOS0tMT01SLSwpKAMEJCgnqwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG9u
bltbW1tV7QCrqywsq6sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAA////////AAD///////8AAP//gED//wAA//4AAD//AAD/+AAAH/8AAP/gAAAH/wAA/8AAAAH/
AAD/gAAAAf8AAP8AAAAA/wAA/gAAAAA/AAD8AAAAAD8AAP4AAAAAPwAA/gAAAAA/AAD+AAAAAD8AAPgA
AcAADwAA4AAH4AAHAADgAB/wAAcAAMAAf/wAAwAAwAH//wADAADAAf//gAMAAMAB//+AAwAAwAH//4AD
AADAAf//gAMAAMAB//+AAwAAwAH//4ADAADAAf//gAMAAMAB///AAwAAwAP//8ADAADAA///4AMAAMAB
///gAwAAwAB//gADAADgYD/4BwcAAOAAD/ACBwAA+AAD4AAfAAD8AAAAAD8AAPwAAAAAPwAA/AAAAAA/
AAD8AAAAAD8AAPwAAAAAPwAA/wAAAAB/AAD/gAAAAP8AAP+AAAAB/wAA/+AAAAf/AAD/+AAAH/8AAP/8
AAA//wAA//8AQP//AAD///////8AAP///////wAAKAAAACAAAABAAAAAAQAIAAAAAAAABAAAAAAAAAAA
AAAAAQAAAAEAAAAAAAA5wWYAPcFoAEDCawBAw2wAQ8RuAETEbwBKxXIATMd0AFjKfgD+nT4A/p5AAP6f
RAD+oEUA/qJJAP6kTQD+p1QA/ahVAP6qWQD9rmAA/LBoAP60cAD+t3QA/Lh1AP68fgA7a/UAPWz1AEBv
9QBEcfUASXb1AE559QBQevUAUnz2AF3LgQBezIEAYs2FAGbPiABozogAbNCMAHDSkAA7oeUAPKHlAFqC
9gBni/cAaY33AG2S+AB0lfcAdpj4AEGj5QBBpOUARaXmAEim5gBLqOcATKjnAFCr5wBTq+gAUqzoAFWt
6ABasOkAXLDoAGa16gBsuewAc7vrAHO77AB5vu0AAcP+AATD/gAFxP4ACcX+AA7G/gASx/4AG8n+ACLK
/gAky/4AKcz+ADbP/gA70P4AQdL+AETT/gBJ1P4ATdX+AFnX/gBd2P4Abdz+AHXd9gB33v0AmJKPAJmT
kACalJEAnJaTAJ6YlQCgmpcAopyZAKahngCoo6EAqKShALWyrwC2srAAuLOwALm1tAC8t7QAvbm4AInX
oACG2aIAkdmkAJfergCP3bgAnN6xAP7BiAD6xIwA/MSPAPnImgD+zp8Agp73AIKe+ACCofcAhqL3AIOh
+ACNp/kAmrL5AJ+1+QCDwu0Aj8nwAJXJ8QCRzPEAmczxAM/HwQDLyMcAz83OANDJwwAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB2LCAdLwBdW19lAAAAAAAAAAAAAAAAAAAAAAAAAAB0
IBwaGhotAFxWVllcYwAAAAAAAAAAAAAAAAAAAAB3HBoaGhoaGi0AXFZWVlZWWWUAAAAAAAAAAAAAAAAA
ciAaGhkZGRoaLQBcVlZWVlZWW2EAAAAAAAAAAAAAAHEaGhoZGRkZGRotAFxWVlZWVlZWWWAAAAAAAAAA
AAB3IBoaGRkZGRkaGi0AXFZWVlZWVlZWW2MAAAAAAAAAAAB0HRsZGRkZGRkaLQBcVlZWVlZWVllcYQAA
AAAAAAAAAAAAKxoaGRkZGhwvAFxWVlZWVlZZXYEAAAAAAAAAADk1PgAAdyscGh0vAAAAgGBcWVZZX34A
ABcSAAAAAAB5MikyPHsAAHMqdwAAAAAAAIFZW2MAAG8RDQ0YAAAAADopKSkpKTp9AAAAAAAAAAAAAAAA
AG4PCwoKChIAAAAANikpKSkpKTUAAAAAAAAAAAAAAAAUDwoKCgoKDwAAAAApKSkoKCkpMgAAAAAAAAAA
AAAAAA8KCgoKCgoKAAAAACkpKSgoKSk5AAAAAAAAAAAAAAAAEgoKCgoKCgoAAAAAKSkoKCgoKTkAAAAA
AAAAAAAAAAASCgoKCgoKCgAAAAApKSgoKCgpNQAAAAAAAAAAAAAAABAKCgoKCgoKAAAAADIpKSgoKDI9
AAAAAAAAAAAAAAAAABcPCgoKCgsAAAAAOSkpKSk1egAAAAAAAAAAAAAAAAAAAGwQCgoLEAAAAABAMik5
egAAVUdKAAAAAAAAAAAJAyNrAABuEg8UAAAAAAA5PgAAAEtGQUFOAAAAAAAAJgIBAgdoAAAAF3AAAAAA
AAAAAE5FQUFBQUFBSVMAIgICAQEBAQIHZgAAAAAAAAAAAFJJQUFBQUFBQUFBTwAHAgEBAQEBAQEDJgAA
AAAAAAAAUUZBQUFBQUFBQUFPAAgBAQEBAQEBAQMnAAAAAAAAAAAAT0FBQUFBQUFBQU4ABwEBAQEBAQEB
IwAAAAAAAAAAAAAAT0VBQUFBQUFFTgAIAQEBAQEBAyIAAAAAAAAAAAAAAAAAT0VBQUFBQUFOAAcBAQEB
AQEmAAAAAAAAAAAAAAAAAAAAAExFQUFBQU4ACAEBAQMmaQAAAAAAAAAAAAAAAAAAAAAAAFNMRkVFTgAH
AwYiZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQAAGoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAA////////////4If//4CB//4AgH/8AIA/+ACAH/AAgA/4AIAP/gCAH+MD
gGfAx+GDwD/+A8A//APAP/wDwD/8A8A//APAP/wDwD/+A8B//wPBj/DD5wfgc/wAgB/wAIAP8ACAD/gA
gB/8AIA//gCAf/+AgP//wIP///2///////8oAAAAEAAAACAAAAABAAgAAAAAAAABAAAAAAAAAAAAAAAB
AAAAAQAAAAAAADnBZgA8wWcAPcJpAEPDbQBXyn0A/p0+AP6fQgD+oEQA/qJIAP6qWQD9tnIAO2v1ADxr
9QA9bPUATXj1AFV/9gBhzIQAO6HlADyh5QBXgPUAWYL2AHqe9gBEpeYASKfmAFCq5wBesekAAcP+AATD
/gAIxP4AEcb+ABXH/gAjy/4AJcv+AC3N/gA2z/4AeMPvAH3D7wBr1/sAY9j9AGnY/ACYko8AmZOQAJyW
kwCdl5QAnpiVALi3ugDzvYgA9r6JAMO6sQDEvbcAwr26AIPVmgCK1ZoAltWdAPLBkwDMwbcAhaL2AJGt
8wCTr/cAk634AMK+wACDwO4AhMnwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAA////AAAAAAAAAAAAAAAAAAAAAAAAAAAAADkPFQAtLgAAAAAAAAAAPA4ODhAAKSkqMwAAAAAA
Ow4ODg4QACkpKSoyAAAAAAAWDg4OFAApKSkqOAAAAD4ZAAAUOgAAPSoyAC8vAAAYExMaAAAAAAAANwcG
CQAAExMTFwAAAAAAAAkGBgYAABMTExcAAAAAAAAJBgYGAAAXExM/AAAAAAAAAAoGCAAAJSUAJh4AAAAA
BBEAAAsAAAAAHhwcHCMAAgICAzYAAAAAKBwcHBwgAAIBAQI1AAAAAAAnHBwcIAABAQE0AAAAAAAAAAAi
HCAAAwUAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAA+J8AAOCHAADAgwAA4IMAAJmJAACH4QAAh+EAAIfh
AACH8QAAk80AAOCDAADAgwAA4IcAAPifAAD//wAAKAAAAEAAAACAAAAAAQAgAAAAAAAAQgAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAD1s9QRAbvINRXDtFEly6RZOdOQWUXXgE1B03gp8jccPjJjAMI+Y
ukGPlbArjpGmGJSVoxaenaUTqKWmC6yopgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAERw9QJEcPUMQG/1GD5t9R88bPYuPGz2Vzxs9nQ8bPZ5PGz2ejxs
9m4wZfw9lJ7EMLizsJKzrqzPqKOhp5yWlH2hm5l4ramncbWxsE61sa8kpKCdFqunpQuppaICAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABKdPUBVHn1Ckp09RlIcvUoRHD2TEBv9ng8bPaHPGz2ljxs
9r88bPbcPGz24Txs9uE8bPbPOGr5dnmJvjmim5aSnpiW5puWk+yZk5HinZeV4KOenNqkn5y3oJuYjaah
n3Ouq6hIsKyqJ7Csqhi8ubcJqKOhAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABbfvUJU3n1HVV69URMdfZ3QnD2lj9u
9rY+bfbbPGz26Dxs9u08bPb2PGz2/Txs9v88bPb/PGz26jhr+IZvgb08m5ONkpmTkO2Zk5D/mZOQ/5qU
kf+blZL8m5WS9JuWk+qfmZbXoZyZsqeioJSzr61zv7y7Prq2tBrEwb8HAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG6J9QZfgPUbWX31P053
9XxHc/WzQXD22T1t9u48bPb2PGz2/Dxs9v88bPb/PGz2/zxs9v88bPb/PGz2/zxs9uo4a/iGb4G8PJuT
jJKZk5DtmZOQ/5mTkP+Zk5D/mZOQ/5mTkP+Zk5D+mpSR+5uVkvWfmZbtpKCd1qyoprCzsK1wtrKvKJ+a
mAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADdp
9QVMdfYhVHr2ckt19rlCcPbdPm729Dxs9vw8bPb+PGz2/zxs9v88bPb/PGz2/zxs9v88bPb/PGz2/zxs
9v88bPbqOGv4hm+BvDybk4ySmZOQ7ZmTkP+Zk5D/mZOQ/5mTkP+Zk5D/mZOQ/5mTkP+Zk5D/mZOQ/puV
kvyfmpf0o56c1KWgnoeqpaM0ura0F7m2tAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAASnT1AkFv9Qo7a/YpP2/2f0Jv9t4/bvb5PW32/zxs9v88bPb/PGz2/zxs9v88bPb/PGz2/zxs
9v88bPb/PGz2/zxs9v88bPb/PGz26jhr+IZvgbw8m5OMkpmTkO2Zk5D/mZOQ/5mTkP+Zk5D/mZOQ/5mT
kP+Zk5D/mZOQ/5mTkP+Zk5D/mZOQ/5mUkfiblpPkpaCevqunpW2ppaIko56cBgAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAW331CGaD9iJTefZNQm/2jjxs9tU8bPb5PGz2/zxs9v88bPb/PGz2/zxs
9v88bPb/PGz2/zxs9v88bPb/PGz2/zxs9v88bPb/PGz2/zxs9uo4a/iGb4G8PJuTjJKZk5DtmZOQ/5mT
kP+Zk5D/mZOQ/5mTkP+Zk5D/mZOQ/5mTkP+Zk5D/mZOQ/5mTkP+Zk5D/mpSR/52XlPahm5jOopyadZ+a
mCaempgHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUXf1B1Z69ihTefVxSnT2vkBu9uQ8bPb2PGz2/zxs
9v88bPb/PGz2/zxs9v88bPb/PGz2/zxs9v88bPb/PGz2/zxs9v88bPb/PGz2/zxs9v88bPbqOGv4hm+B
vDybk4ySmZOQ7ZmTkP+Zk5D/mZOQ/5mTkP+Zk5D/mZOQ/5mTkP+Zk5D/mZOQ/5mTkP+Zk5D/mZOQ/5mT
kP+Zk5D+mpSR9JyWlMuclpR1m5WTKJuWlAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAX3/1B1t89ihQdvV1SHL1yUBv
9fM9bPb+PGz2/zxs9v88bPb/PGz2/zxs9v88bPb/PGz2/zxs9v88bPb/PGz2/zxs9v88bPb/PGz2/zxs
9v88bPb/PGz26jhr+IZvgbw8m5OMkpmTkO2Zk5D/mZOQ/5mTkP+Zk5D/mZOQ/5mTkP+Zk5D/mZOQ/5mT
kP+Zk5D/mZOQ/5mTkP+Zk5D/mZOQ/5mTkP6ZlJHzmZSSyZmUkXWZk5EonZiVBwAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaof1Bm6I
9iZZffZ1SnT1yT9u9fM8bPb9PGz2/zxs9v88bPb/PGz2/zxs9v88bPb/PGz2/zxs9v88bPb/PGz2/zxs
9v88bPb/PGz2/zxs9v88bPb/PGz2/zxs9uo4a/iGb4G8PJuTjJKZk5DtmZOQ/5mTkP+Zk5D/mZOQ/5mT
kP+Zk5D/mZOQ/5mTkP+Zk5D/mZOQ/5mTkP+Zk5D/mZOQ/5mTkP+Zk5D/mZOQ/ZmTkPOZk5HJm5WTdZ2Y
liainJkGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAGeE9hNef/ZnT3f2xkJw9vQ9bPb9PGz2/zxs9v88bPb/PGz2/zxs9v88bPb/PGz2/zxs
9v88bPb/PGz2/zxs9v88bPb/PGz2/zxs9v88bPb/PGz2/zxs9v88bPbqOGv4hm+BvDybk4ySmZOQ7ZmT
kP+Zk5D/mZOQ/5mTkP+Zk5D/mZOQ/5mTkP+Zk5D/mZOQ/5mTkP+Zk5D/mZOQ/5mTkP+Zk5D/mZOQ/5mT
kP+Zk5D9mZOQ85uVk8uemZZ1o5+bI6ukngQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAEeB8QRNdfY0SHT2oEJw9u89bfb+PGz2/zxs9v88bPb/PGz2/zxs
9v88bPb/PGz2/zxs9v88bPb/PGz2/zxs9v88bPb/PGz2/zxs9v88bPb/PGz2/zxs9v88bPb/PGz26jhr
+IZvgbw8m5OMkpmTkO2Zk5D/mZOQ/5mTkP+Zk5D/mZOQ/5mTkP+Zk5D/mZOQ/5mTkP+Zk5D/mZOQ/5mT
kP+Zk5D/mZOQ/5mTkP+Zk5D/mZOQ/5mTkP6alJH0npiXzqeioHW4tLMcyL23BAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABbgfQLSHP1bEBu9tE9bPb5PGz2/zxs
9v88bPb/PGz2/zxs9v88bPb/PGz2/zxs9v88bPb/PGz2/zxs9v88bPb/PGz2/zxs9v88bPb/PGz2/zxs
9v88bPb/PGz2/zxs9uo4a/iGb4G8PJuTjJKZk5DtmZOQ/5mTkP+Zk5D/mZOQ/5mTkP+Zk5D/mZOQ/5mT
kP+Zk5D/mZOQ/5mTkP+Zk5D/mZOQ/5mTkP+Zk5D/mZOQ/5mTkP+Zk5D/mZOQ/puWk/akn53JsayrVrmu
pwsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWH/1DVN5
9l1Jc/axQG/23T1t9vQ8bPb8PGz2/jxs9v88bPb/PGz2/zxs9v88bPb/PGz2/zxs9v88bPb/PGz2/zxs
9v88bPb/PGz2/zxs9v88bPb/PGz2/zxs9v88bPbqOGv4hm+BvDybk4ySmZOQ7ZmTkP+Zk5D/mZOQ/5mT
kP+Zk5D/mZOQ/5mTkP+Zk5D/mZOQ/5mTkP+Zk5D/mZOQ/5mTkP+Zk5D/mZOQ/5mTkP+Zk5D/mZOQ/5mT
kP6dl5T8o56b4q+qqHDBtq0TAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AABEk+sBQ5LrBmSR8RBWhvIiUHz0QUlz9nxAbva0PGz22zxs9vM8bPb7PGz2/jxs9v88bPb/PGz2/zxs
9v88bPb/PGz2/zxs9v88bPb/PGz2/zxs9v88bPb/PGz2/zxs9v88bPb/PGz26jhr+IZvgbw8m5OMkpmT
kO2Zk5D/mZOQ/5mTkP+Zk5D/mZOQ/5mTkP+Zk5D/mZOQ/5mTkP+Zk5D/mZOQ/5mTkP+Zk5D/mZOQ/5mT
kP+Zk5D/mZOQ/pqUkfqcl5TuoZya0qmlo5+4r6hJxq2aENegcAPXoG8BAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAABEmOkBPp7nDTyi5jQ8ouZWPKHmPUqS7SFMgvIkQnP0RTtr9nw8bPazPm324j1t
9vo8bPb/PGz2/zxs9v88bPb/PGz2/zxs9v88bPb/PGz2/zxs9v88bPb/PGz2/zxs9v88bPb/PGz2/zxs
9uo4a/iGb4G8PJuTjJKZk5DtmZOQ/5mTkP+Zk5D/mZOQ/5mTkP+Zk5D/mZOQ/5mTkP+Zk5D/mZOQ/5mT
kP+Zk5D/mZOQ/5mTkP+Zk5D+mZSR+ZuVku2emJXPo56corGmnm7Eq5M84a6BM/esbjf/pl0g7qRkBwAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP53nBTyi5jA8ouaJPKLmxjyi5qZBo+ZtRqDoPUeP
7CNFf/AkQ3P0TEhz9plGcvbYP2728Txs9vs8bPb/PGz2/zxs9v88bPb/PGz2/zxs9v88bPb/PGz2/zxs
9v88bPb9PGz29Txs9uk8bPbQOGr5dnqJvzihmpSSnJeU7ZqUkf+Zk5D/mZOQ/5mTkP+Zk5D/mZOQ/5mT
kP+Zk5D/mZOQ/5mTkP+Zk5D/mZOQ/5mTkP+alJH+nJeU956YltifmpiiqJ6Ybb+jjUHZpXUz9KJTTP+f
Q33/oUyQ/6NSVPCiXBPgoGQBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQZroAT6e5xQ8ouZhPKLmyzyi
5vU8oubvPaLn1EOk56VLpuZtS6DoMk+O7xtcgfQ7U3n2c0Zy9q5AbvbcPW328Txs9vw8bPb/PGz2/zxs
9v88bPb/PGz2/zxs9v49bfb1PWz24zxs9r08bPaPPGz2bzRn+j2Kl8MpsKunfaijoMufmZbcmpSR5pqU
kfWZk5D9mZOQ/5mTkP+Zk5D/mZOQ/5mTkP+Zk5D/mZOQ/5mTkP+blZL6n5mX66ahnsurpKCIu6KOR9ei
dDPwolxN/Z9He/+eQa//nkDf/59F2v+iTpD5o1gx66FdBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD+d
5wU8oOY0PKLmmTyi5ug8oub+PKLm/jyi5vo+oubvQqTn0EGk5otDoOhCSJrqIU+K8CFPdPdDRnH2dkFu
9q89bPbcPGz28Txs9vw8bPb/PGz2/zxs9vY9bfbkQ3D1wENw9Yg9bPZSO2v2Kk105RVTdt4Ku77MEsK/
vj20sK5jpZ+db52YlYqdl5TAm5WS5JmTkPaZk5D/mZOQ/5mTkP+Zk5D/mZOQ/5qUkfuclpPtoZyZ1Kmk
opmzrapgza+UPOymZkP8ok96/6BHsP+fQtr/nkHy/54//P+eQvb/oEe6/6JOTPOhVgkAAAAAAAAAAAAA
AAAAAAAAAAAAAECf5wFIoucUSabmYD+j5sk8oub4PKLm/jyi5v88oub/PKLm/jyi5vY8oubbO6LmsDui
5XZCn+g7SJnqHUuC8SJEb/ZBPm32dTxs9rI8bPbdPGz29D1t9vk9bfbWQW/1j0x09U5Ze/UnVXrtDVB2
5QMAAAAAAAAAAIOTyAKIlL8Ii5O1DZqbqhKoo6Enop2aTp6YlY6blZLWmpSR+ZmTkP+Zk5D/mZSR+5qV
ku2dmJXUo56aoaikpGHEq5Q76KdqMPeiT03+oUiX/6BF1/+eQvP/nj/7/54//v+eP///nj/7/55Czv+f
RmT2oE8W8KBTAQAAAAAAAAAAAAAAAAAAAABIpOcEWaroMk6n55lBpObnPKLm/Tyi5v88oub/PKLm/zyi
5v88oub+PKLm/Dyi5vM8oubaPqLntEWk521RpOg0WZ3rHEh78h86avY9PW32fUFv9sVHcvbTSXL2gD9t
9So+bvMKTHnsAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlJSjApuWlwqemJYqoJuYf52Y
ld6blZL5nZeU/KCal+qinZqzop6cY7ejkzjhpGgt+Z9HQv6eQYL/nj68/54/4v+eP/j/nj/+/54///+e
P///nj///54//f+eQef/nkWZ/qBIMvigTQQAAAAAAAAAAAAAAAAAAAAARKPmCE2n50ZDpOe3PqPn9jyi
5v88oub/PKLm/zyi5v88oub/PKLm/zyi5v88oub/PKLm/zyi5vc/o+ffR6Xntkim52VCmOkhP4ntCkR7
8hxSePVXWXv2Zll89SNUe/QFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAqaKfBaWfnSCnoZ9/paCdxaein8SwqqaVvKucTd+kcjL7oU5G/59Bgv+eP8f/nj/n/54/+f+e
P///nj///54///+eP///nj///54///+eP///nkD2/55Bt/+eQ0b7n0cIAAAAAAAAAAAAAAAAAAAAADyi
5gg8ouZGPKLmtzyi5vY8oub/PKLm/zyi5v88oub/PKLm/zyi5v88oub/PKLm/zyi5v88oub/PaLm/j+j
5vI/o+bIPKLmfzui5UNMm+ogaJDxFGSI8xJfhfMHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACqnpcFs6+tKLayr1y/sKRb17GQSPGucln9pFSD/6BHvf+e
QeP/nj/4/54///+eP///nj///54///+eP///nj///54///+eP///nj///54/9/+eP7z/nkBN/Z5DCgAA
AAAAAAAAAAAAAAAAAAA8ouYLPKLmUTyi5r48oub3PKLm/zyi5v88oub/PKLm/zyi5v88oub/PKLm/zyi
5v88oub/PKLm/zyi5v88oub9PKLm8zyi5t1Ao+aoSaXnUFei6RAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMi5rAjNuaUR661zKPul
Vmb/ok21/6BG4v+eQfX/nkD+/54///+eP///nj///54///+eP///nj///54///+eP///nj///54///+e
P/r/nkLZ/55Fef6eQxYAAAAAAAAAAAAAAAAAAAAAPKLmGDyi5n88oubdPKLm+jyi5v88oub/PKLm/zyi
5v88oub/PKLm/zyi5v88oub/PKLm/zyi5v88oub/PKLm/zyi5v88oub3P6Lmx0il52NEkusRAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAA151lBP+dPjL/n0Oe/59D6/+eQP3/nj///54///+eP///nj///54///+eP///nj///54///+e
P///nj///54///+eP///nj/9/55B9v+eQ6v/nkEmAAAAAAAAAAAAAAAAAAAAADyi5iY8ouatPKLm+Dyi
5v08oub/PKLm/zyi5v88oub/PKLm/zyi5v88oub/PKLm/zyi5v88oub/PKLm/zyi5v88oub/PaLm9UCj
5rVJpudGRJbqCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAN6eYQT/nj8y/54/nv+eP+v/nj/9/54///+eP///nj///54///+e
P///nj///54///+eP///nj///54///+eP///nj///54///+eP///nj+4/54/KgAAAAAAAAAAAAAAAAAA
AAA8ouYqPKLmtzyi5v88oub/PKLm/zyi5v88oub/PKLm/zyi5v88oub/PKLm/zyi5v88oub/PKLm/zyi
5v88oub/PKLm/UGj5ulJpuecU6jnMUab6QQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADin2AB855MHP+eP3D/nj/S/54/+/+e
P///nj///54///+eP///nj///54///+eP///nj///54///+eP///nj///54///+eP///nj///54/uP+e
PyoAAAAAAAAAAAAAAAAAAAAAPKLmKjyi5rc8oub/PKLm/zyi5v88oub/PKLm/zyi5v88oub/PKLm/zyi
5v88oub/PKLm/zyi5v88oub/PKLm/zyi5vpAo+bPTKfna0qi5xpCnegBAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPGf
UAv/nj9M/54/u/+eP/f/nj///54///+eP///nj///54///+eP///nj///54///+eP///nj///54///+e
P///nj///54///+eP7j/nj8qAAAAAAAAAAAAAAAAAAAAADyi5io8oua3PKLm/zyi5v88oub/PKLm/zyi
5v88oub/PKLm/zyi5v88oub/PKLm/zyi5v88oub/PKLm/zyi5v88oub2PKLmuj2i5ko/oOYKAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAD3oEsI/54/Rv+eP7f/nj/2/54///+eP///nj///54///+eP///nj///54///+e
P///nj///54///+eP///nj///54///+eP///nj+4/54/KgAAAAAAAAAAAAAAAAAAAAA8ouYqPKLmtzyi
5v88oub/PKLm/zyi5v88oub/PKLm/zyi5v88oub/PKLm/zyi5v88oub/PKLm/zyi5v88oub/PKLm9jyi
5rg8ouZHPKLmCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9KBICP+eP0b/nj+3/54/9v+eP///nj///54///+e
P///nj///54///+eP///nj///54///+eP///nj///54///+eP///nj///54/uP+ePyoAAAAAAAAAAAAA
AAAAAAAAPKLmKjyi5rc8oub/PKLm/zyi5v88oub/PKLm/zyi5v88oub/PKLm/zyi5v88oub/PKLm/zyi
5v88oub/PKLm/zyi5vc8oua7PqLmTDuk5wsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOyjSQv/n0NM/55Au/+e
P/f/nj///54///+eP///nj///54///+eP///nj///54///+eP///nj///54///+eP///nj///54///+e
P7j/nj8qAAAAAAAAAAAAAAAAAAAAADyi5io8oua3PKLm/zyi5v88oub/PKLm/zyi5v88oub/PKLm/zyi
5v88oub/PKLm/zyi5v88oub/PKLm/zyi5v88oub7PqLm0kak53BBpugcNajqAgAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANGo
UAHtqFoc/6RVcP+gRtL/nkD7/54+//+eP///nj///54///+eP///nj///54///+eP///nj///54///+e
P///nj///54///+eP///nj+4/54/KgAAAAAAAAAAAAAAAAAAAAA8ouYqPaLmtzyi5v88oub/PKLm/zyi
5v88oub/PKLm/zyi5v88oub/PKLm/zyi5v88oub/PKLm/zyi5v88oub/PKLm/T6i5utDpOefSabnMzSr
6wQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAADHrFkD/6tuKv+lWYz/oUra/55B9v+eP/7/nj///54///+eP///nj///54///+e
P///nj///54///+eP///nj///54///+eP///nj///54/uP+ePyoAAAAAAAAAAAAAAAAAAAAAP6LmJUOk
56s+oub2PKLm/Tyi5v88oub/PKLm/zyi5v88oub/PKLm/zyi5v88oub/PKLm/zyi5v88oub/PKLm/Tyi
5vU8oubePaLmlUCj5jEtrO0EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAt65aAv+oZRv/o1VT/6BKkf+fRMj/nkHo/54/+P+e
P///nj///54///+eP///nj///54///+eP///nj///54///+eP///nj///55A//+fQbj/nkAqAAAAAAAA
AAAAAAAAAAAAAECj5hZFped5PqLm2Tyi5vo8oub/PKLm/zyi5v88oub/PKLm/zyi5v88oub/PKLm/zyi
5v88oub/PKLm/j6i5vQ+o+bNPKLmijui5ko8ouYYJ67uAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC5rVoF2qdTEv+h
TS//n0Zc/55Bk/+eP8v/nj/r/54/+f+eP///nj///54///+eP///nj///54///+eP///nj///54//P+e
QvT/oEip/p5DJQAAAAAAAAAAAAAAAAAAAAA8ouYKPqLmTTyi5rw8oub2PKLm/zyi5v88oub/PKLm/zyi
5v88oub/PKLm/zyi5v88oub/PaLm+D6j5uNEpOe9R6TmcDSo6i4Vt/UeDbz5JAi/+x0GwPwJAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEq/
ZAlMvmQeTr5jLVm8YiVXvWQTw6ZJEv+dPi3/nj5X/55CpP+fQuP/n0H6/54///+eP///nj///54///+e
P///nj///54///+eP/r/nkLW/6FJc/2fRhQAAAAAAAAAAAAAAAAAAAAAO6LmCDyi5kY8oua3PKLm9jyi
5v88oub/PKLm/zyi5v88oub/PKLm/zyi5v88oub5PKLm5z6i58hEpeeDTqfmRU6s6iAhu/caAcP+TADE
/5AAxP95AMT/LATB/QYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAFbCcAZCwmssO8JoeTrCZ6k6wmeSPcJqVFfBbCZZxngOpLBXDP+gSDv/oUyO/6BHz/+e
Quv/nkD7/54///+eP///nj///54///+eP///nj/2/54/uv+eQEr5n0MJAAAAAAAAAAAAAAAAAAAAADmi
5gQ7ouYyPKLmmTyi5uc8oub9PKLm/zyi5v88oub/PKLm/jyi5vg8oubiO6LmvTyh5oI8pOhBP6nqHRq5
9hsAxP80AMT/awDE/7sAxP/pAMT/4ADE/5IAxP8rAsL9CQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAADvAZwk8wmgrQMNpkjzCaOI6wmf4OsJn7j3CadJFw22dUcRzW13I
fCu5uXUW9qVWIv+hTU3/oEeP/55CxP+eP+b/nj/4/54//f+eP///nj/+/55C9f+gRrX/ok1F86JJCAAA
AAAAAAAAAAAAAAAAAAA3pOcBOaPnFjyi5mQ8oubOPKLm+zyi5v88oub+PKLm+0Cj5vNDpOfYQqPmljel
6Eowp+ojGbX0HQDE/zgAxP9oAMT/pgDE/9YAxP/vAMT//ADE//oAxP/hAMT/iQDE/zMCw/wPCMHzBAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOcF7BDrBbA84wmczOcJniDvCZ+E7wmf6OsJn/zrC
Z/86wmj6PMJp60XEbdJMxHCRTMJrOJaxWRHQplQR4qRLJf+dQVH/nj+P/54/wv+eQOr/nj/9/54//f+f
Q+T/oUyU+qRSMOukTAQAAAAAAAAAAAAAAAAAAAAAAAAAADek5wk8ouZLPKLmujyi5vY8oub8PKLm8kCj
59tHpOexUafmekyq6DghtPIaA8L9MgDE/2UAxP+kAMT/1gDE/+4AxP/7AMT//wDE//8AxP//AMT/+gDE
/9oAxP+YAMT/WwDE/zAJw/UYE8PoDR3E4AQAAAAAAAAAADHDlQQxwooNNsJ4GDrCZzA6wmdaOsJnmDrC
Z9k6wmf6OsJn/zrCZ/86wmf/OsJn/zrCZ/88wmj6PsNp4zzCaJ84wmZfNMNpM2+5XhXGq1MU2KdLJfig
RFv/oEat/6BE5v+eQu7/n0LD/6BHXOikSxPapksBAAAAAAAAAAAAAAAAAAAAAAAAAAAzpukEOaPnMTyi
5pA8oubaPKLm4D2i5q9HpOd7S6noRj2y7yUsu/UhC8L8QwDE/44AxP/SAMT/7gDE//oAxP//AMT//wDE
//8AxP//AMT//wDE//8AxP/4AMT/6ADE/8cBxP+XCcT/dxXF/1cgxf8qD8PhDx/DrwlGw2sgQsNrUz3C
aXc6wmeWOsJnxjrCZ+g6wmf4OsJn/zrCZ/86wmf/OsJn/zrCZ/86wmf/OsJn/zrCZ/o6wmfqOsJnzT/D
aZlMxG9jVch7M3nAcBbQr2Eb/KRTSP+iTYz/oEiq/6BGgv+eQDDjo0UFAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAALqnrATWl6BM8ouZUPKLmkDyi5n48ouZFLa/vJSC59iILwfw9AMT/bwDE/6cAxP/dAMT/+QDE
//8AxP//AMT//wDE//8AxP//AMT//wDE//8AxP//AMT//wDE//4AxP/3AMT/6wPE/90HxP/BBcX/jADE
/0Ucw64ePcNlXT3CaLc7wmffOsJn6zrCZ/c6wmf+OsJn/zrCZ/86wmf/OsJn/zrCZ/86wmf/OsJn/zrC
Z/86wmf/OsJn/jrCZ/g8wmjqQsNry03FcZtYxnhgeMF2KcGtWhL/o1gl/6RWQv+jVTHupE4PzadMAQAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0pukGPKLmIT2h5TIrq+wlE7n2IAe//DsAxP9wAMT/pwDE
/9IAxP/uAMT/+gDE//4AxP//AMT//wDE//8AxP//AMT//wDE//8AxP//AMT//wDE//8AxP//AMT//wDE
//8AxP/9AMT/9wHE/9sAxP96HsOrNTvCY4o6wmfnOsJn/TrCZ/86wmf/OsJn/zrCZ/86wmf/OsJn/zrC
Z/86wmf/OsJn/zrCZ/86wmf/OsJn/zrCZ/86wmf/OsJn/jzCaPhBw2rrRsNtxUTEbHpbvWQyg7hnF5W3
ZgzDrVkGvq1XAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKKztASmt7gQTuPYJB7/7IADE
/2gAxP+sAMT/1ADE/+8AxP/6AMT//gDE//8AxP//AMT//wDE//8AxP//AMT//wDE//8AxP//AMT//wDE
//8AxP//AMT//wDE//8AxP//AMT//wDE//8AxP/qAMT/hh/Cqjw7wmOSOsJn7TrCZ/86wmf/OsJn/zrC
Z/86wmf/OsJn/zrCZ/86wmf/OsJn/zrCZ/86wmf/OsJn/zrCZ/86wmf/OsJn/zrCZ/86wmf/O8Jn/jvC
Z/M7wmfUPcNon0LDa0ZYv2gLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAG7XzAgLC/UIAxP+zAMT/7ADE//wAxP/+AMT//wDE//8AxP//AMT//wDE//8AxP//AMT//wDE
//8AxP//AMT//wDE//8AxP//AMT//wDE//8AxP//AMT//wDE//8AxP//AMT/6gDE/4Yfwqo8O8JjkjrC
Z+06wmf/OsJn/zrCZ/86wmf/OsJn/zrCZ/86wmf/OsJn/zrCZ/86wmf/OsJn/zrCZ/86wmf/OsJn/zrC
Z/86wmf/OsJn/zrCZ/86wmf+OsJn/D3CaOFAw2pwV8BrEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAABq29AQCwv0oAMT/mwDE//AAxP/+AMT//wDE//8AxP//AMT//wDE
//8AxP//AMT//wDE//8AxP//AMT//wDE//8AxP//AMT//wDE//8AxP//AMT//wDE//8AxP//AMT//wDE
/+oAxP+GH8KqPDvCY5I6wmftOsJn/zrCZ/86wmf/OsJn/zrCZ/86wmf/OsJn/zrCZ/86wmf/OsJn/zrC
Z/86wmf/OsJn/zrCZ/86wmf/OsJn/zrCZ/86wmf/OsJn/jrCZ/Y9wmjJQcNrV1HAagsAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsL+CwDE/2MAxP/HAMT/9QDE
//4AxP//AMT//wDE//8AxP//AMT//wDE//8AxP//AMT//wDE//8AxP//AMT//wDE//8AxP//AMT//wDE
//8AxP//AMT//wDE//8AxP/qAMT/hh/Cqjw7wmOSOsJn7TrCZ/86wmf/OsJn/zrCZ/86wmf/OsJn/zrC
Z/86wmf/OsJn/zrCZ/86wmf/OsJn/zrCZ/86wmf/OsJn/zrCZ/86wmf/OsJn/zvCZ/g8wmjTPsNqeEvC
bBxbwW4EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATB
/AQAxP8kAMT/dQDE/8sAxP/zAMT//QDE//8AxP//AMT//wDE//8AxP//AMT//wDE//8AxP//AMT//wDE
//8AxP//AMT//wDE//8AxP//AMT//wDE//8AxP//AMT/6gDE/4Yfwqo8O8JjkjrCZ+06wmf/OsJn/zrC
Z/86wmf/OsJn/zrCZ/86wmf/OsJn/zrCZ/86wmf/OsJn/zrCZ/86wmf/OsJn/zrCZ/86wmf/OsJn/zzC
aP1DxG3sS8VynE/GdTFbv2oDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAcL9BgDE/ycAxP91AMT/yQDE//MAxP/9AMT//wDE//8AxP//AMT//wDE
//8AxP//AMT//wDE//8AxP//AMT//wDE//8AxP//AMT//wDE//8AxP//AMT//wDE/+oAxP+GH8KqPDvC
Y5I6wmftOsJn/zrCZ/86wmf/OsJn/zrCZ/86wmf/OsJn/zrCZ/86wmf/OsJn/zrCZ/86wmf/OsJn/zrC
Z/86wmf/OsJn/zvCaP1Bw2vxUMV0v2HJgGBxy4oSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAw/4HAMT/KADE/3UAxP/JAMT/8wDE
//4AxP//AMT//wDE//8AxP//AMT//wDE//8AxP//AMT//wDE//8AxP//AMT//wDE//8AxP//AMT//wDE
//8AxP/qAMT/hh/Cqjw7wmOSOsJn7TrCZ/86wmf/OsJn/zrCZ/86wmf/OsJn/zrCZ/86wmf/OsJn/zrC
Z/86wmf/OsJn/zrCZ/86wmf/OsJn/zvCaP1Aw2vxSsVxw1nGeWxwyociZsmDBQAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADE
/wcAxP8oAMT/dQDE/8sAxP/0AMT//gDE//8AxP//AMT//wDE//8AxP//AMT//wDE//8AxP//AMT//wDE
//8AxP//AMT//wDE//8AxP//AMT/6gDE/4Yfwqo8O8JjkjrCZ+06wmf/OsJn/zrCZ/86wmf/OsJn/zrC
Z/86wmf/OsJn/zrCZ/86wmf/OsJn/zrCZ/86wmf/OsJn/zzCaf1Dw23yTsVzw1TGdmxYxngjV8Z3BgAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAMT/BwDE/ycAxP91AMT/zgDE//YAxP//AMT//wDE//8AxP//AMT//wDE
//8AxP//AMT//wDE//8AxP//AMT//wDE//8AxP//AMT//wDE/+oAxP+GH8KqPDvCY5I6wmftOsJn/zrC
Z/86wmf/OsJn/zrCZ/86wmf/OsJn/zrCZ/86wmf/OsJn/zrCZ/86wmf/OsJn/zrCZ/U/w2vgU8Z2tmHJ
f2dpyYIiVMV2BgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
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
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAD/////////////////////////gAB///////gAAA//////wAAAAf////+AAAAA
/////gAAAAB////8AAAAAB////AAAAAAD///4AAAAAAH///AAAAAAAP//4AAAAAAAf//AAAAAAAA//8A
AAAAAAB//gAAAAAAAD/+AAAAAAAAP/4AAAAAAAA/+AAAAAAAAA/wAAAAAAAAD/AAAAAAAAAH4AAAAAAA
AAfgAAAAAAAAB8AAAAMAAAADwAAAD/AAAAPAAAA//AAAA8AAAH/+AAADwAAB//8AAAPAAAH//4AAA8AA
Af//gAADwAAB//+AAAPAAAH//8AAA8AAA///wAADwAAD///AAAPAAAP//8AAA8AAAf//gAADwAAB//+A
AAPAAAH//4AAA8AAAf//wAADwAAA//8AAAPAAAB//gAAA8AAAD/8AAADwAAAD/AAAAPgAAABgAAAA+AA
AAAAAAAH4AAAAAAAAAfwAAAAAAAAD/AAAAAAAAA//AAAAAAAAD/8AAAAAAAAP/4AAAAAAAA//gAAAAAA
AH//AAAAAAAA//+AAAAAAAD//8AAAAAAAf//4AAAAAAD///wAAAAAAf///gAAAAAH////gAAAAA/////
AAAAAP////+AAAAB/////+AAAAf//////AAAH////////////////////////ygAAAAwAAAAYAAAAAEA
IAAAAAAAgCUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQ2/vBEhx
6QlPdeILVXfbCll41gZ2iMULgI6+HISOtRiJj6sLkZSnCpybpAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQW70BUBu
9A8+bfUaPWz0ND1s9FY/bfJgQG7wXDpq8zqVnsA8q6qxkqOhp5CZlplio5+gXK+rq0Srp6YYpaCeDKCb
mQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARnL1BVB3
9RRJc/U1RHD1VUBu9oY8bPaiPGz2vDxs9t48bPboPGz23zlq+JGBi7NPnpeUvZuVku6alJHpnpmW5aGc
mc2gm5iep6Ogd62ppkqzsK4osa2rDqCbmAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAENw
9QJTefQTVXr0OE529G9EcfauPm31zD1s9eY8bPb0O2v1+Dtr9f08bPb/O2v19Dhr9556hbBRmZKOv5iS
j/qZk5D/mZOQ/pmTkPqalZLxnZeU3qGcmcWtqqeZtbKwXq2opiKemJUBAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAQ3D0AUhy9RRUevVrSXT1r0Fv9dw9bPb1PGz1+ztr9f08bPb/O2v1/jtr9f48bPb/O2v19Dhr
9556hbBRmZKNv5iSj/qZk5D/mJKP/piSj/6Zk5D+mZOQ/ZqUkfqemZbupJ+dzqikoYKppKIiqKOhCgAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAEhy9QFKdPUOQW71Lj1t9oA/bvbqPW32/Dxs9v88bPb/PGz2/zxs9v88bPb/PGz2/zxs
9v88bPb/PGz29Dlr9596hbBRmpOOv5mTkPqZk5D/mZOQ/5mTkP+Zk5D/mZOQ/5mTkP+Zk5D/mZOQ/JqV
ku6kn526p6OgXqCbmRiemJYBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAARHD0AVN49RJZfPVYR3L1nz1s9to7a/X8O2v1/jtr9f48bPb/O2v1/jtr
9f48bPb/O2v1/jtr9f48bPb/O2v19Dhr9556hbBRmZKNv5iSj/qZk5D/mJKP/piSj/6Zk5D/mJKP/pmT
kP+Yko/+mJKP/pmTkP+blZLznpiVwJ2YlmKclpQSnZiVAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFc/QBTHb0ElJ39VFIcvW/QG717jxs9vs7a/X+O2v1/jtr
9f48bPb/O2v1/jtr9f48bPb/O2v1/jtr9f48bPb/O2v19Dhr9556hbBRmZKNv5iSj/qZk5D/mJKP/piS
j/6Zk5D/mJKP/pmTkP+Yko/+mJKP/pmTkP+Zk5D9mZOQ8pmUksGZlJFRnZaTEqCYlAEAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUffQUYID2X0t19cE9bfX3PGz2/jxs
9v88bPb/PGz2/zxs9v88bPb/PGz2/zxs9v88bPb/PGz2/zxs9v88bPb/PGz29Dlr9596hbBRmpOOv5mT
kPqZk5D/mZOQ/5mTkP+Zk5D/mZOQ/5mTkP+Zk5D/mZOQ/5mTkP+Zk5D/mZOQ/pmTkPeZk5HBnJaUYqOa
kxgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEWA8AFYe/Y7TXb1r0Fv
9fE8bPb+O2v1/jxs9v87a/X+O2v1/jtr9f48bPb/O2v1/jtr9f48bPb/O2v1/jtr9f48bPb/O2v19Dhr
9556hbBRmZKNv5iSj/qZk5D/mJKP/piSj/6Zk5D/mJKP/pmTkP+Yko/+mJKP/pmTkP+Yko/+mJKP/pmT
kP6Zk5DynJaUwKOem2GypJkMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFGC
8gZHcvV3QG723Txs9vw8bPb/PGz2/zxs9v88bPb/PGz2/zxs9v88bPb/PGz2/zxs9v88bPb/PGz2/zxs
9v88bPb/PGz29Dlr9596hbBRmpOOv5mTkPqZk5D/mZOQ/5mTkP+Zk5D/mZOQ/5mTkP+Zk5D/mZOQ/5mT
kP+Zk5D/mZOQ/5mTkP+Zk5D+mpSS86Kdm8K0rKk3vKONBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAFWF8gpRevVfRnL1rD5t9dw8bPb1O2v1/Dxs9v47a/X+O2v1/jtr9f48bPb/O2v1/jtr
9f48bPb/O2v1/jtr9f48bPb/O2v19Dhr9556hbBRmZKNv5iSj/qZk5D/mJKP/piSj/6Zk5D/mJKP/pmT
kP+Yko/+mJKP/pmTkP+Yko/+mJKP/pmTkP6Zk5D8m5aT9aOdm9m1rahRxaiOCQAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAABCk+oCQJbpEkuY6i1KkO0vS4DyQENy9HE7a/a1PGz14Dxs9vg7a/X+O2v1/jtr
9f48bPb/O2v1/jtr9f48bPb/O2v1/jtr9f48bPb/O2v19Dhr9556hbBRmZKNv5iSj/qZk5D/mJKP/piS
j/6Zk5D/mJKP/pmTkP+Yko/+mJKP/pmTkP+Yko/+mJOQ/ZmTkPecl5TdpJ2Zs7Omm3rRrZA34qZ1Gtie
aQcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAl+kMPKHmTTuh5Zw9oeZ/RZvpSEaM7S5Cd/JEQ3H1iERx
9tM9bfX2O2v1/Ttr9f48bPb/O2v1/jtr9f48bPb/O2v1/jtr9f08bPb1O2v14jhq+JGBi7NPnZeSv5qU
kfqZk5D/mJKP/piSj/6Zk5D/mJKP/pmTkP+Yko/+mJKP/pmTkP+alJH8m5aT7J2Ylr+qnZV6w6OHTeGk
akb4olJu/aNUYO+hXB0AAAAAAAAAAAAAAAAAAAAAAAAAAEGZ6AE9n+YwPKLmoDyi5u48oubtP6Lmykel
5pJJnek/UYzvLFN/9FRGcfafP2720Txs9u88bPb8PGz2/jxs9v88bPb7PW327z5t9dM8bPaXPmz0Zzxr
8jqepL81r6uoj6OdmryalZLVmpSR75mTkPuZk5D/mZOQ/5mTkP+Zk5D+mZOQ/JyWk/OjnZvNrqWfksKk
ilHloWVN+KBOfP6eQrT/nkDl/6BIvfuiU1DmnlsDAAAAAAAAAAAAAAAAAAAAAEKd5wlBouZjPKLl0Duh
5fo8oub+PKHl+T6i5uc+ouakQJ/nYkaW6zVKg/E2RXP0YT5s9Zw8bPbYO2v18jxs9fs9bPbaQ2/1oEx0
9GNJc+8pT3XiEFp51waXosYQoqW3LZ+epj6hnJpknZiVn5qUkdqZk5D8mJKP/pmTkP2ZlJHynZeU16Oe
nKW8qJZh16l9RvCkXWP9oEiy/p5C3v+eQPT+nT/8/p5C3v+gSHLyoFMLAAAAAAAAAAAAAAAAPp7mAU+l
5yBJpuagPqLl7Tuh5f08oub/O6Hl/juh5fw7oubvO6Hl0T6h56BIn+hOUZbrKkl98TA7a/ZpPm31skNw
9dlEcPWAQG70L0t37Q9Te+MCAAAAAAAAAAAAAAAAe4m6AoeOrgSXlaAPnZeWLp6ZloCblpPqm5WS+52X
lPGgm5iwqZ+XaMqjfkDuoVZL+p9Ghv6eQcP+nkDy/p0//P+eP/7+nT7+/p1A7v+eRKH4n0sh8J9RAQAA
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
6gM6ouZQPKLmvTyi5uU+oua0R6XneUSt60MruPQrCMH8WADE/6cAxP/hAMT/9gDE//0AxP//AMT//wDE
//4AxP/pAMT/wADE/4kLxPxYGMT2MhTD3xAlw6MLPcJ2LTvCblc6wmeIOsJnvzrCZ+k6wmf+OsJn/zrC
Z/86wmf/OsJn/jrCZ/Y6wmfNOsJnmE7Balt5v24mtbJgIvSlUlP/oUmo/59Fpv+fQlDOp00GAAAAAAAA
AAAAAAAAAAAAAAAAAAA0pegdPKHlXzij52suquw3Hbf1MAzA+08AxP+UAMP+zgDE//QAw/7+AMP+/gDD
/v4AxP//AMP+/gDD/v4AxP/+AMP++wDD/vIDxP/fBMT+twDE/mUkw5s0PMJmlTvBZ906wmfyOcFm+znB
Zv46wmf/OcFm/jrCZ/85wWb+OcFm/jrCZ/85wWb9OsFn9D/CadxMxHChX8N0W5i1YiLhqFsm5qdXLeCm
URIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqrO0HLKrsFxyy8SEHv/tPAcL+igDD/sAAxP/qAMP++QDE
//4Aw/7+AMP+/gDD/v4AxP//AMP+/gDD/v4AxP//AMP+/gDD/v4AxP/9AMP+7gDD/pglwphNOsFkvDnB
Zvg6wmf/OcFm/jnBZv46wmf/OcFm/jrCZ/85wWb+OcFm/jrCZ/85wWb+OcFm/jrCZ/w+wmjuP8JpwUjA
ZnhnvGgljLVfB6evVgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH7LyAgm++iwAxP+vAMT/5wDE
//gAxP/+AMT//wDE//8AxP//AMT//wDE//8AxP//AMT//wDE//8AxP//AMT//wDE//8AxP//AMT/9ADE
/58mwphROsJlvzrCZ/o6wmf/OsJn/zrCZ/86wmf/OsJn/zrCZ/86wmf/OsJn/zrCZ/86wmf/OsJn/zrC
Z/86wmf+OsJn9jzCZ9lGwmpQdrliCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHLTyAQi+
+hkAxP+jAMP+8ADD/v0AxP//AMP+/gDE//8Aw/7+AMP+/gDD/v4AxP//AMP+/gDD/v4AxP//AMP+/gDD
/v4AxP//AMP+9ADD/p4mwphROsFkvznBZvo6wmf/OcFm/jnBZv46wmf/OcFm/jrCZ/85wWb+OcFm/jrC
Z/85wWb+OcFm/jrCZ/86wWb+OsFn9DzCaMJJwWo4b7pkBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAy8+QUAxP9aAMP+vgDD/vIAxP/+AMP+/gDE//8Aw/7+AMP+/gDD/v4AxP//AMP+/gDD
/v4AxP//AMP+/gDD/v4AxP//AMP+9ADD/p4mwphROsFkvznBZvo6wmf/OcFm/jnBZv46wmf/OcFm/jrC
Z/85wWb+OcFm/jrCZ/85wWb+OcFm/jrCZ/87wmj6QcNr1EXEbm1bvmcMAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwPwYAMT/YgDE/8EAxP/3AMT//gDE//8AxP//AMT//wDE
//8AxP//AMT//wDE//8AxP//AMT//wDE//8AxP//AMT/9ADE/58mwphROsJlvzrCZ/o6wmf/OsJn/zrC
Z/86wmf/OsJn/zrCZ/86wmf/OsJn/zrCZ/86wmf/OsJn/zrCZ/5Dw2zpVMZ3nGXJgi8AAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEwPwBAsH9EgDD/lEAxP/BAMP+8gDE
//4Aw/7+AMP+/gDD/v4AxP//AMP+/gDD/v4AxP//AMP+/gDD/v4AxP//AMP+9ADD/p4mwphROsFkvznB
Zvo6wmf/OcFm/jnBZv46wmf/OcFm/jrCZ/85wWb+OcFm/jrCZ/86wWf+O8Jo/EHDbOpPxXOYXsZ8OlDD
bwkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAML9AQDD
/hIAxP9iAMP+wADE//MAw/7+AMP+/gDD/v4AxP//AMP+/gDD/v4AxP//AMP+/gDD/v4AxP//AMP+9ADD
/p4mwphROsFkvznBZvo6wmf/OcFm/jnBZv46wmf/OcFm/jrCZ/85wWb+OcFm/jrCZ/86wmf3RMNt4VTG
d6RZxnk6RsNtCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAADD/gEAw/4YAMT/XgDE/7oAxP/uAMT//ADE//8AxP//AMT//wDE//8AxP//AMT//wDE
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
AAAAAAAAAAAAAAAAAAAAAAAAQI3rAkyM7hBMffJiQnH0qDtr9eY7a/X4O2v1/jtr9f47a/X+O2v1/jtr
9f47a/X+O2v1+zlr9rqEiaR1mJKO5piSj/6Yko/+mJKP/piSj/6Yko/+mJKP/piSj/2Yko/8m5WS66Sd
mcXDq5c1zJ92BgAAAAAAAAAAAAAAAAAAAAA/l+gYP53mYkOY6VpFiO5EQHHzfUFv9cw7a/X6O2v1/Ttr
9f47a/X+O2v1/jtr9f07a/XyOWr2sIiNpnSalJDmmJKP/piSj/6Yko/+mJKP/piSj/6Yko/+mZOQ+ZuV
k9yrnZKMyaOAX+6lZFXpoGAmAAAAAAAAAAAAAAAAQJfoAj2g5WY7oeXcPKHl6kKj5bxHmulVTYrvRUV0
9Is+bfXGO2v18ztr9fw9bPXmQW71ukFu8WRHcegzoKW6P6Sho4ablpO7mZSR5piSj/6Yko/+mZOQ9p2X
lOCwopeYyqSDYvGgVX78nkS6/p5B4P2gTH/hnVwDAAAAAAAAAABGn+cQQ6PlqDuh5fM7oeX9O6Hl9zyh
5cg/nueMSpHsQkd98Ew7a/WhP2312kFu9YVHc/E4UnreC19+0QN/jb8Ji4+uFZuXmzicl5SFmpSR9JuV
kvegmZWztZ+McOOjZVz1oE+S/Z5B4/6dP/f+nT/2/p5DrvCeUREAAAAAPZzmAUGh5iY9oubYO6Hl/Tuh
5f47oeX+O6Hl/juh5fw/ouXYQKDmh0WP6zBVhPE0SoDsCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKaW
kAiyqaJpwKmWfOWlbGv7n0ib/p0+6v6dPvv+nT7+/p0+/v6dPv3+nT/b+J1HK+2dUAE8n+UCO6DlODuh
5eM7oeX9O6Hl/juh5f47oeX+O6Hl/juh5fs7oeXnRKDmcUiQ6xQAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAMejgxTrpGJT/KBI0v6eQPL+nT79/p0+/v6dPv7+nT7+/p0+/f6dP+/8nUNO9Z1IBDyg
5QY7oeVlO6Hl/Duh5f47oeX+O6Hl/juh5f47oeX+O6Hl/j2h5fNGouZjQpPpCwAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAA0JtoBvaeR0z+nT7r/p0+/v6dPv7+nT7+/p0+/v6dPv7+nT7+/p0+/v6d
Pmn7nUIGPKHlBzuh5Wk7oeX+O6Hl/juh5f47oeX+O6Hl/juh5f47oeX9PKHl4UKg5zg9l+kDAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADLn2UC755LK/6dPtr+nT79/p0+/v6dPv7+nT7+/p0+/v6d
Pv7+nT7+/p0+af2dPwY7oeUHO6HlaTuh5f47oeX+O6Hl/juh5f47oeX+O6Hl/juh5f07oeXbO6LnKzSh
6gIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMKmXALsoUsr/p0/2v6dPv3+nT7+/p0+/v6d
Pv7+nT7+/p0+/v6dPv7+nT5p/Z0/Bjuh5Qc7oeVpO6Hl/juh5f47oeX+O6Hl/juh5f47oeX+O6Hl/Tyh
5es/pOdML6nrBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAuqtbBfGmV0b+nkLl/p0+/f6d
Pv7+nT7+/p0+/v6dPv7+nT7+/p0+/v6dPmn6nkAGOaLmBD+i5U48oeXvO6Hl/Tuh5f47oeX+O6Hl/juh
5f48oubvPKLmvzKn6kEkr+0JAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYsV4Gw6tZIu2h
SXb9nT+2/p4/8f6eP/3+nT7+/p0+/v6dPv7+nT/4/p5CX/OfQgY2pOcBO6LlKzuh5ds7oeX8O6Hl/juh
5f47oeX7PKHl60Ok5pc5q+tNDrr4Rgq9+TIbtusBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbrdvAVa8
ZTRXvGJYgbVeMbqrUjj+nkSi/p5C5f6dPv3+nT7+/p0+/P6dP+P1n0Q55KJGAgAAAAA1pOcRO6Hlrjuh
5fY8oub3P6Lm5Dmk540qq+xOE7r3TgLC/YkAw/7kAMP+1gHC/EYMvu4SFb7YAgAAAAAAAAAAN7+VAkO+
eBI7wGhFO8Fn2DrBZvY+wmnPS8Rxi560YjHQp1BD955Cmv2eQNT+nj/2/p5Ew+ijTBwAAAAAAAAAAC+o
6gM7oeV/O6Hl4D+i5rlFqOh5JrXyPwi++3AAw/7JAMP+7ADD/v0Aw/77AMP+vQHD/XcPw/E0FsLcEirC
nA83wXszOcFpdjnBZr06wWb7OsFm/jrBZ/s8wmjrRMBlll+8Y1Wrsl0y6KZPY/6fRb7+n0OByqhOCAAA
AAAAAAAAAAAAADGm6SYxpulOHLTzRAu++mcAw/6/AMP+7gDD/v4Aw/7+AMP+/gDD/v4Aw/79AMP++ALD
/t4Aw/6RLMKIXjrBZs85wWb4OcFm/TnBZv45wWb+OcFm/jnBZv45wWb7PMFn7EvDbqZvvGdTv61cI8yp
VBMAAAAAAAAAAAAAAAAAAAAAI6/vBBa29B0Bwv6iAMP+2wDD/vkAw/7+AMP+/gDD/v4Aw/7+AMP+/gDD
/v4Aw/7+AMP++gDD/rkswYZ0OcFm5TnBZv45wWb+OcFm/jnBZv45wWb+OcFm/jnBZv45wWb+O8Jn8T7B
Z8dhvGUulLJZAgAAAAAAAAAAAAAAAAAAAAAAAAAAErj2DADD/qYAw/7wAMP+/gDD/v4Aw/7+AMP+/gDD
/v4Aw/7+AMP+/gDD/v4Aw/77AMP+uizBhnU5wWXmOcFm/jnBZv45wWb+OcFm/jnBZv45wWb+OcFm/jnB
Zv47wWf2PsJpvGC8ZRwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVt/UBAsL9SQDD/rYAw/76AMP+/gDD
/v4Aw/7+AMP+/gDD/v4Aw/7+AMP+/gDD/vsAw/67LMGGdTnBZuY5wWb+OcFm/jnBZv45wWb+OcFm/jnB
Zv45wWb+OcFm/kTDbdlWxnhnaLtjAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIvvoEAcL9LADD
/rYAw/7yAMP+/gDD/v4Aw/7+AMP+/gDD/v4Aw/7+AMP++wDD/roswYZ1OcFl5jnBZv45wWb+OcFm/jnB
Zv45wWb+OcFm/jvBZ/hEw23dU8V1XlHCbxIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAACwfwEAMP+SgDD/rIAw/72AMP+/gDD/v4Aw/7+AMP+/gDD/v4Aw/77AMP+uyzBhnU5wWbmOcFm/jnB
Zv45wWb+OcFm/jnBZv46wWb9QsNrxV3HfXJKw28SR8BoAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAwv4CAMP+EgDD/nkAw/7EAMP+8QDD/voAw/7+AMP+/gDD/vsAw/66LMGGdTnB
ZeY5wWb+OcFm/jnBZvw5wWbxOcFmxT7CaYlFwm0hP8JpAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
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
AACAAQAAwAMAAOAHAAD4HwAA
</value>
</data>
</root>

438
SunnyUI.Demo/Forms/FDialogs.Designer.cs generated Normal file
View File

@ -0,0 +1,438 @@
namespace Sunny.UI.Demo
{
partial class FDialogs
{
/// <summary>
/// Required designer variable.
/// </summary>
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.btnError = new Sunny.UI.UISymbolButton();
this.btnWarn = new Sunny.UI.UISymbolButton();
this.btnSuccess = new Sunny.UI.UISymbolButton();
this.btnAsk = new Sunny.UI.UISymbolButton();
this.btnAuto = new Sunny.UI.UISymbolButton();
this.btnStatus2 = new Sunny.UI.UISymbolButton();
this.btnInfo = new Sunny.UI.UISymbolButton();
this.btnPasswordInput = new Sunny.UI.UISymbolButton();
this.btnDoubleInput = new Sunny.UI.UISymbolButton();
this.btnIntInput = new Sunny.UI.UISymbolButton();
this.btnStringInput = new Sunny.UI.UISymbolButton();
this.uiLine1 = new Sunny.UI.UILine();
this.uiLine2 = new Sunny.UI.UILine();
this.uiLine3 = new Sunny.UI.UILine();
this.uiLine4 = new Sunny.UI.UILine();
this.uiSymbolButton1 = new Sunny.UI.UISymbolButton();
this.uiLine5 = new Sunny.UI.UILine();
this.uiSymbolButton2 = new Sunny.UI.UISymbolButton();
this.uiSymbolButton4 = new Sunny.UI.UISymbolButton();
this.uiSymbolButton5 = new Sunny.UI.UISymbolButton();
this.uiSymbolButton6 = new Sunny.UI.UISymbolButton();
this.PagePanel.SuspendLayout();
this.SuspendLayout();
//
// PagePanel
//
this.PagePanel.Controls.Add(this.uiLine5);
this.PagePanel.Controls.Add(this.uiSymbolButton2);
this.PagePanel.Controls.Add(this.uiSymbolButton4);
this.PagePanel.Controls.Add(this.uiSymbolButton5);
this.PagePanel.Controls.Add(this.uiSymbolButton6);
this.PagePanel.Controls.Add(this.uiLine4);
this.PagePanel.Controls.Add(this.uiSymbolButton1);
this.PagePanel.Controls.Add(this.uiLine3);
this.PagePanel.Controls.Add(this.uiLine2);
this.PagePanel.Controls.Add(this.uiLine1);
this.PagePanel.Controls.Add(this.btnPasswordInput);
this.PagePanel.Controls.Add(this.btnDoubleInput);
this.PagePanel.Controls.Add(this.btnIntInput);
this.PagePanel.Controls.Add(this.btnStringInput);
this.PagePanel.Controls.Add(this.btnInfo);
this.PagePanel.Controls.Add(this.btnStatus2);
this.PagePanel.Controls.Add(this.btnAuto);
this.PagePanel.Controls.Add(this.btnError);
this.PagePanel.Controls.Add(this.btnWarn);
this.PagePanel.Controls.Add(this.btnSuccess);
this.PagePanel.Controls.Add(this.btnAsk);
this.PagePanel.Size = new System.Drawing.Size(800, 514);
//
// btnError
//
this.btnError.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnError.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(230)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.btnError.FillHoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(232)))), ((int)(((byte)(127)))), ((int)(((byte)(128)))));
this.btnError.FillPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(202)))), ((int)(((byte)(87)))), ((int)(((byte)(89)))));
this.btnError.Font = new System.Drawing.Font("微软雅黑", 12F);
this.btnError.Location = new System.Drawing.Point(600, 53);
this.btnError.Name = "btnError";
this.btnError.Padding = new System.Windows.Forms.Padding(28, 0, 0, 0);
this.btnError.RectColor = System.Drawing.Color.FromArgb(((int)(((byte)(230)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.btnError.RectHoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(232)))), ((int)(((byte)(127)))), ((int)(((byte)(128)))));
this.btnError.RectPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(202)))), ((int)(((byte)(87)))), ((int)(((byte)(89)))));
this.btnError.Size = new System.Drawing.Size(100, 35);
this.btnError.Style = Sunny.UI.UIStyle.Red;
this.btnError.StyleCustomMode = true;
this.btnError.Symbol = 61532;
this.btnError.TabIndex = 29;
this.btnError.Text = "Error";
this.btnError.Click += new System.EventHandler(this.btnError_Click);
//
// btnWarn
//
this.btnWarn.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnWarn.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(220)))), ((int)(((byte)(155)))), ((int)(((byte)(40)))));
this.btnWarn.FillHoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(223)))), ((int)(((byte)(174)))), ((int)(((byte)(86)))));
this.btnWarn.FillPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(137)))), ((int)(((byte)(43)))));
this.btnWarn.Font = new System.Drawing.Font("微软雅黑", 12F);
this.btnWarn.Location = new System.Drawing.Point(486, 53);
this.btnWarn.Name = "btnWarn";
this.btnWarn.Padding = new System.Windows.Forms.Padding(28, 0, 0, 0);
this.btnWarn.RectColor = System.Drawing.Color.FromArgb(((int)(((byte)(220)))), ((int)(((byte)(155)))), ((int)(((byte)(40)))));
this.btnWarn.RectHoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(223)))), ((int)(((byte)(174)))), ((int)(((byte)(86)))));
this.btnWarn.RectPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(137)))), ((int)(((byte)(43)))));
this.btnWarn.Size = new System.Drawing.Size(100, 35);
this.btnWarn.Style = Sunny.UI.UIStyle.Orange;
this.btnWarn.StyleCustomMode = true;
this.btnWarn.Symbol = 61553;
this.btnWarn.TabIndex = 28;
this.btnWarn.Text = "Warn";
this.btnWarn.Click += new System.EventHandler(this.btnWarn_Click);
//
// btnSuccess
//
this.btnSuccess.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnSuccess.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(110)))), ((int)(((byte)(190)))), ((int)(((byte)(40)))));
this.btnSuccess.FillHoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(136)))), ((int)(((byte)(202)))), ((int)(((byte)(81)))));
this.btnSuccess.FillPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(100)))), ((int)(((byte)(168)))), ((int)(((byte)(35)))));
this.btnSuccess.Font = new System.Drawing.Font("微软雅黑", 12F);
this.btnSuccess.Location = new System.Drawing.Point(372, 53);
this.btnSuccess.Name = "btnSuccess";
this.btnSuccess.Padding = new System.Windows.Forms.Padding(28, 0, 0, 0);
this.btnSuccess.RectColor = System.Drawing.Color.FromArgb(((int)(((byte)(110)))), ((int)(((byte)(190)))), ((int)(((byte)(40)))));
this.btnSuccess.RectHoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(136)))), ((int)(((byte)(202)))), ((int)(((byte)(81)))));
this.btnSuccess.RectPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(100)))), ((int)(((byte)(168)))), ((int)(((byte)(35)))));
this.btnSuccess.Size = new System.Drawing.Size(100, 35);
this.btnSuccess.Style = Sunny.UI.UIStyle.Green;
this.btnSuccess.StyleCustomMode = true;
this.btnSuccess.Symbol = 61528;
this.btnSuccess.TabIndex = 27;
this.btnSuccess.Text = "Success";
this.btnSuccess.Click += new System.EventHandler(this.btnSuccess_Click);
//
// btnAsk
//
this.btnAsk.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnAsk.Font = new System.Drawing.Font("微软雅黑", 12F);
this.btnAsk.Location = new System.Drawing.Point(30, 53);
this.btnAsk.Name = "btnAsk";
this.btnAsk.Padding = new System.Windows.Forms.Padding(28, 0, 0, 0);
this.btnAsk.Size = new System.Drawing.Size(100, 35);
this.btnAsk.StyleCustomMode = true;
this.btnAsk.Symbol = 61529;
this.btnAsk.TabIndex = 26;
this.btnAsk.Text = "Query";
this.btnAsk.Click += new System.EventHandler(this.btnAsk_Click);
//
// btnAuto
//
this.btnAuto.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnAuto.Font = new System.Drawing.Font("微软雅黑", 12F);
this.btnAuto.Location = new System.Drawing.Point(144, 53);
this.btnAuto.Name = "btnAuto";
this.btnAuto.Padding = new System.Windows.Forms.Padding(28, 0, 0, 0);
this.btnAuto.Size = new System.Drawing.Size(100, 35);
this.btnAuto.Symbol = 61732;
this.btnAuto.TabIndex = 31;
this.btnAuto.Text = "Auto";
this.btnAuto.Click += new System.EventHandler(this.btnAuto_Click);
//
// btnStatus2
//
this.btnStatus2.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnStatus2.Font = new System.Drawing.Font("微软雅黑", 12F);
this.btnStatus2.Location = new System.Drawing.Point(30, 263);
this.btnStatus2.Name = "btnStatus2";
this.btnStatus2.Padding = new System.Windows.Forms.Padding(28, 0, 0, 0);
this.btnStatus2.Size = new System.Drawing.Size(214, 35);
this.btnStatus2.Symbol = 57595;
this.btnStatus2.TabIndex = 36;
this.btnStatus2.Text = "进度提示框";
this.btnStatus2.Click += new System.EventHandler(this.btnStatus2_Click);
//
// btnInfo
//
this.btnInfo.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnInfo.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(140)))), ((int)(((byte)(140)))), ((int)(((byte)(140)))));
this.btnInfo.FillHoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(158)))), ((int)(((byte)(160)))), ((int)(((byte)(165)))));
this.btnInfo.FillPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(121)))), ((int)(((byte)(123)))), ((int)(((byte)(129)))));
this.btnInfo.Font = new System.Drawing.Font("微软雅黑", 12F);
this.btnInfo.Location = new System.Drawing.Point(258, 53);
this.btnInfo.Name = "btnInfo";
this.btnInfo.Padding = new System.Windows.Forms.Padding(28, 0, 0, 0);
this.btnInfo.RectColor = System.Drawing.Color.FromArgb(((int)(((byte)(140)))), ((int)(((byte)(140)))), ((int)(((byte)(140)))));
this.btnInfo.RectHoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(158)))), ((int)(((byte)(160)))), ((int)(((byte)(165)))));
this.btnInfo.RectPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(121)))), ((int)(((byte)(123)))), ((int)(((byte)(129)))));
this.btnInfo.Size = new System.Drawing.Size(100, 35);
this.btnInfo.Style = Sunny.UI.UIStyle.Gray;
this.btnInfo.StyleCustomMode = true;
this.btnInfo.Symbol = 61530;
this.btnInfo.TabIndex = 37;
this.btnInfo.Text = "Info";
this.btnInfo.Click += new System.EventHandler(this.btnInfo_Click);
//
// btnPasswordInput
//
this.btnPasswordInput.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnPasswordInput.Font = new System.Drawing.Font("微软雅黑", 12F);
this.btnPasswordInput.Location = new System.Drawing.Point(30, 182);
this.btnPasswordInput.Name = "btnPasswordInput";
this.btnPasswordInput.Padding = new System.Windows.Forms.Padding(28, 0, 0, 0);
this.btnPasswordInput.Size = new System.Drawing.Size(214, 35);
this.btnPasswordInput.Symbol = 61545;
this.btnPasswordInput.TabIndex = 46;
this.btnPasswordInput.Text = "密码输入框";
this.btnPasswordInput.Click += new System.EventHandler(this.btnPasswordInput_Click);
//
// btnDoubleInput
//
this.btnDoubleInput.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnDoubleInput.Font = new System.Drawing.Font("微软雅黑", 12F);
this.btnDoubleInput.Location = new System.Drawing.Point(486, 134);
this.btnDoubleInput.Name = "btnDoubleInput";
this.btnDoubleInput.Padding = new System.Windows.Forms.Padding(28, 0, 0, 0);
this.btnDoubleInput.Size = new System.Drawing.Size(214, 35);
this.btnDoubleInput.Symbol = 62022;
this.btnDoubleInput.TabIndex = 45;
this.btnDoubleInput.Text = "浮点数输入框";
this.btnDoubleInput.Click += new System.EventHandler(this.btnDoubleInput_Click);
//
// btnIntInput
//
this.btnIntInput.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnIntInput.Font = new System.Drawing.Font("微软雅黑", 12F);
this.btnIntInput.Location = new System.Drawing.Point(258, 134);
this.btnIntInput.Name = "btnIntInput";
this.btnIntInput.Padding = new System.Windows.Forms.Padding(28, 0, 0, 0);
this.btnIntInput.Size = new System.Drawing.Size(214, 35);
this.btnIntInput.Symbol = 62022;
this.btnIntInput.TabIndex = 44;
this.btnIntInput.Text = "整数输入框";
this.btnIntInput.Click += new System.EventHandler(this.btnIntInput_Click);
//
// btnStringInput
//
this.btnStringInput.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnStringInput.Font = new System.Drawing.Font("微软雅黑", 12F);
this.btnStringInput.Location = new System.Drawing.Point(30, 134);
this.btnStringInput.Name = "btnStringInput";
this.btnStringInput.Padding = new System.Windows.Forms.Padding(28, 0, 0, 0);
this.btnStringInput.Size = new System.Drawing.Size(214, 35);
this.btnStringInput.Symbol = 62022;
this.btnStringInput.TabIndex = 43;
this.btnStringInput.Text = "字符串输入框";
this.btnStringInput.Click += new System.EventHandler(this.btnStringInput_Click);
//
// uiLine1
//
this.uiLine1.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiLine1.Location = new System.Drawing.Point(30, 20);
this.uiLine1.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine1.Name = "uiLine1";
this.uiLine1.Size = new System.Drawing.Size(670, 20);
this.uiLine1.TabIndex = 47;
this.uiLine1.Text = "UIMessageDialog";
this.uiLine1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// uiLine2
//
this.uiLine2.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiLine2.Location = new System.Drawing.Point(30, 101);
this.uiLine2.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine2.Name = "uiLine2";
this.uiLine2.Size = new System.Drawing.Size(670, 20);
this.uiLine2.TabIndex = 48;
this.uiLine2.Text = "UIInputDialog";
this.uiLine2.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// uiLine3
//
this.uiLine3.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiLine3.Location = new System.Drawing.Point(30, 230);
this.uiLine3.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine3.Name = "uiLine3";
this.uiLine3.Size = new System.Drawing.Size(670, 20);
this.uiLine3.TabIndex = 49;
this.uiLine3.Text = "UIStatusDialog";
this.uiLine3.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// uiLine4
//
this.uiLine4.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiLine4.Location = new System.Drawing.Point(30, 314);
this.uiLine4.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine4.Name = "uiLine4";
this.uiLine4.Size = new System.Drawing.Size(670, 20);
this.uiLine4.TabIndex = 51;
this.uiLine4.Text = "UISelectDialog";
this.uiLine4.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// uiSymbolButton1
//
this.uiSymbolButton1.Cursor = System.Windows.Forms.Cursors.Hand;
this.uiSymbolButton1.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiSymbolButton1.Location = new System.Drawing.Point(30, 347);
this.uiSymbolButton1.Name = "uiSymbolButton1";
this.uiSymbolButton1.Padding = new System.Windows.Forms.Padding(28, 0, 0, 0);
this.uiSymbolButton1.Size = new System.Drawing.Size(214, 35);
this.uiSymbolButton1.Symbol = 61655;
this.uiSymbolButton1.TabIndex = 50;
this.uiSymbolButton1.Text = "下拉选择框";
this.uiSymbolButton1.Click += new System.EventHandler(this.uiSymbolButton1_Click);
//
// uiLine5
//
this.uiLine5.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiLine5.Location = new System.Drawing.Point(30, 397);
this.uiLine5.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine5.Name = "uiLine5";
this.uiLine5.Size = new System.Drawing.Size(670, 20);
this.uiLine5.TabIndex = 58;
this.uiLine5.Text = "UINotifier";
this.uiLine5.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// uiSymbolButton2
//
this.uiSymbolButton2.Cursor = System.Windows.Forms.Cursors.Hand;
this.uiSymbolButton2.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiSymbolButton2.Location = new System.Drawing.Point(30, 430);
this.uiSymbolButton2.Name = "uiSymbolButton2";
this.uiSymbolButton2.Padding = new System.Windows.Forms.Padding(28, 0, 0, 0);
this.uiSymbolButton2.Size = new System.Drawing.Size(100, 35);
this.uiSymbolButton2.StyleCustomMode = true;
this.uiSymbolButton2.Symbol = 61530;
this.uiSymbolButton2.TabIndex = 57;
this.uiSymbolButton2.Text = "Info";
this.uiSymbolButton2.Click += new System.EventHandler(this.uiSymbolButton2_Click);
//
// uiSymbolButton4
//
this.uiSymbolButton4.Cursor = System.Windows.Forms.Cursors.Hand;
this.uiSymbolButton4.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(230)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.uiSymbolButton4.FillHoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(232)))), ((int)(((byte)(127)))), ((int)(((byte)(128)))));
this.uiSymbolButton4.FillPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(202)))), ((int)(((byte)(87)))), ((int)(((byte)(89)))));
this.uiSymbolButton4.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiSymbolButton4.Location = new System.Drawing.Point(372, 430);
this.uiSymbolButton4.Name = "uiSymbolButton4";
this.uiSymbolButton4.Padding = new System.Windows.Forms.Padding(28, 0, 0, 0);
this.uiSymbolButton4.RectColor = System.Drawing.Color.FromArgb(((int)(((byte)(230)))), ((int)(((byte)(80)))), ((int)(((byte)(80)))));
this.uiSymbolButton4.RectHoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(232)))), ((int)(((byte)(127)))), ((int)(((byte)(128)))));
this.uiSymbolButton4.RectPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(202)))), ((int)(((byte)(87)))), ((int)(((byte)(89)))));
this.uiSymbolButton4.Size = new System.Drawing.Size(100, 35);
this.uiSymbolButton4.Style = Sunny.UI.UIStyle.Red;
this.uiSymbolButton4.StyleCustomMode = true;
this.uiSymbolButton4.Symbol = 61532;
this.uiSymbolButton4.TabIndex = 55;
this.uiSymbolButton4.Text = "Error";
this.uiSymbolButton4.Click += new System.EventHandler(this.uiSymbolButton4_Click);
//
// uiSymbolButton5
//
this.uiSymbolButton5.Cursor = System.Windows.Forms.Cursors.Hand;
this.uiSymbolButton5.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(220)))), ((int)(((byte)(155)))), ((int)(((byte)(40)))));
this.uiSymbolButton5.FillHoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(223)))), ((int)(((byte)(174)))), ((int)(((byte)(86)))));
this.uiSymbolButton5.FillPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(137)))), ((int)(((byte)(43)))));
this.uiSymbolButton5.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiSymbolButton5.Location = new System.Drawing.Point(258, 430);
this.uiSymbolButton5.Name = "uiSymbolButton5";
this.uiSymbolButton5.Padding = new System.Windows.Forms.Padding(28, 0, 0, 0);
this.uiSymbolButton5.RectColor = System.Drawing.Color.FromArgb(((int)(((byte)(220)))), ((int)(((byte)(155)))), ((int)(((byte)(40)))));
this.uiSymbolButton5.RectHoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(223)))), ((int)(((byte)(174)))), ((int)(((byte)(86)))));
this.uiSymbolButton5.RectPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(137)))), ((int)(((byte)(43)))));
this.uiSymbolButton5.Size = new System.Drawing.Size(100, 35);
this.uiSymbolButton5.Style = Sunny.UI.UIStyle.Orange;
this.uiSymbolButton5.StyleCustomMode = true;
this.uiSymbolButton5.Symbol = 61553;
this.uiSymbolButton5.TabIndex = 54;
this.uiSymbolButton5.Text = "Warn";
this.uiSymbolButton5.Click += new System.EventHandler(this.uiSymbolButton5_Click);
//
// uiSymbolButton6
//
this.uiSymbolButton6.Cursor = System.Windows.Forms.Cursors.Hand;
this.uiSymbolButton6.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(110)))), ((int)(((byte)(190)))), ((int)(((byte)(40)))));
this.uiSymbolButton6.FillHoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(136)))), ((int)(((byte)(202)))), ((int)(((byte)(81)))));
this.uiSymbolButton6.FillPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(100)))), ((int)(((byte)(168)))), ((int)(((byte)(35)))));
this.uiSymbolButton6.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiSymbolButton6.Location = new System.Drawing.Point(144, 430);
this.uiSymbolButton6.Name = "uiSymbolButton6";
this.uiSymbolButton6.Padding = new System.Windows.Forms.Padding(28, 0, 0, 0);
this.uiSymbolButton6.RectColor = System.Drawing.Color.FromArgb(((int)(((byte)(110)))), ((int)(((byte)(190)))), ((int)(((byte)(40)))));
this.uiSymbolButton6.RectHoverColor = System.Drawing.Color.FromArgb(((int)(((byte)(136)))), ((int)(((byte)(202)))), ((int)(((byte)(81)))));
this.uiSymbolButton6.RectPressColor = System.Drawing.Color.FromArgb(((int)(((byte)(100)))), ((int)(((byte)(168)))), ((int)(((byte)(35)))));
this.uiSymbolButton6.Size = new System.Drawing.Size(100, 35);
this.uiSymbolButton6.Style = Sunny.UI.UIStyle.Green;
this.uiSymbolButton6.StyleCustomMode = true;
this.uiSymbolButton6.Symbol = 61528;
this.uiSymbolButton6.TabIndex = 53;
this.uiSymbolButton6.Text = "Success";
this.uiSymbolButton6.Click += new System.EventHandler(this.uiSymbolButton6_Click);
//
// FDialogs
//
this.AutoScaleDimensions = new System.Drawing.SizeF(10F, 21F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 549);
this.Name = "FDialogs";
this.PageIndex = 2001;
this.Text = "Dialogs";
this.PagePanel.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
private UISymbolButton btnError;
private UISymbolButton btnWarn;
private UISymbolButton btnSuccess;
private UISymbolButton btnAsk;
private UISymbolButton btnAuto;
private UISymbolButton btnStatus2;
private UISymbolButton btnInfo;
private UISymbolButton btnPasswordInput;
private UISymbolButton btnDoubleInput;
private UISymbolButton btnIntInput;
private UISymbolButton btnStringInput;
private UILine uiLine3;
private UILine uiLine2;
private UILine uiLine1;
private UILine uiLine4;
private UISymbolButton uiSymbolButton1;
private UILine uiLine5;
private UISymbolButton uiSymbolButton2;
private UISymbolButton uiSymbolButton4;
private UISymbolButton uiSymbolButton5;
private UISymbolButton uiSymbolButton6;
}
}

View File

@ -0,0 +1,126 @@
using System;
using System.Collections.Generic;
namespace Sunny.UI.Demo
{
public partial class FDialogs : UITitlePage
{
public FDialogs()
{
InitializeComponent();
}
private void btnAsk_Click(object sender, EventArgs e)
{
if (this.ShowAskDialog("确认信息提示框"))
{
this.ShowInfoDialog("您点击了确定按钮");
}
else
{
this.ShowErrorDialog("您点击了取消按钮");
}
}
private void btnAuto_Click(object sender, EventArgs e)
{
this.ShowInfoDialog("跟随界面主题风格信息提示框", Style);
}
private void btnSuccess_Click(object sender, EventArgs e)
{
this.ShowSuccessDialog("正确信息提示框");
}
private void btnWarn_Click(object sender, EventArgs e)
{
this.ShowWarningDialog("警告信息提示框");
}
private void btnError_Click(object sender, EventArgs e)
{
this.ShowErrorDialog("错误信息提示框");
}
private void btnStatus2_Click(object sender, EventArgs e)
{
ShowStatus("提示", "数据加载中......");
for (int i = 0; i < 100; i++)
{
SystemEx.Delay(50);
StatusStepIt();
}
}
private void btnInfo_Click(object sender, EventArgs e)
{
this.ShowInfoDialog("默认信息提示框");
}
private void btnStringInput_Click(object sender, EventArgs e)
{
string value = "请输入字符串";
if (this.InputStringDialog(ref value))
{
this.ShowInfoDialog(value);
}
}
private void btnIntInput_Click(object sender, EventArgs e)
{
int value = 0;
if (this.InputIntegerDialog(ref value))
{
this.ShowInfoDialog(value.ToString());
}
}
private void btnDoubleInput_Click(object sender, EventArgs e)
{
double value = 0;
if (this.InputDoubleDialog(ref value))
{
this.ShowInfoDialog(value.ToString("F2"));
}
}
private void btnPasswordInput_Click(object sender, EventArgs e)
{
string value = "";
if (this.InputPasswordDialog(ref value))
{
this.ShowInfoDialog(value);
}
}
private void uiSymbolButton1_Click(object sender, EventArgs e)
{
List<string> items = new List<string>() { "0", "1", "2", "3", "4" };
int index = 2;
if (this.ShowSelectDialog(ref index, items))
{
this.ShowInfoDialog(index.ToString());
}
}
private void uiSymbolButton2_Click(object sender, EventArgs e)
{
this.ShowInfoNotifier("Info");
}
private void uiSymbolButton6_Click(object sender, EventArgs e)
{
this.ShowSuccessNotifier("Success");
}
private void uiSymbolButton5_Click(object sender, EventArgs e)
{
this.ShowWarningNotifier("Warning");
}
private void uiSymbolButton4_Click(object sender, EventArgs e)
{
this.ShowErrorNotifier("Error");
}
}
}

View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

272
SunnyUI.Demo/Forms/FEdit.Designer.cs generated Normal file
View File

@ -0,0 +1,272 @@
namespace Sunny.UI.Demo.Forms
{
partial class FEdit
{
/// <summary>
/// Required designer variable.
/// </summary>
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.edtName = new Sunny.UI.UITextBox();
this.uiLabel2 = new Sunny.UI.UILabel();
this.uiLabel3 = new Sunny.UI.UILabel();
this.rbMale = new Sunny.UI.UIRadioButton();
this.rbFemale = new Sunny.UI.UIRadioButton();
this.edtAge = new Sunny.UI.UITextBox();
this.uiLabel4 = new Sunny.UI.UILabel();
this.cbDepartment = new Sunny.UI.UIComboBox();
this.uiLabel5 = new Sunny.UI.UILabel();
this.uiLabel6 = new Sunny.UI.UILabel();
this.edtDate = new Sunny.UI.UIDatePicker();
this.edtAddress = new Sunny.UI.UITextBox();
this.uiLabel1 = new Sunny.UI.UILabel();
this.SuspendLayout();
//
// pnlBtm
//
this.pnlBtm.Location = new System.Drawing.Point(1, 304);
this.pnlBtm.Size = new System.Drawing.Size(518, 55);
this.pnlBtm.TabIndex = 7;
//
// edtName
//
this.edtName.Cursor = System.Windows.Forms.Cursors.IBeam;
this.edtName.FillColor = System.Drawing.Color.White;
this.edtName.Font = new System.Drawing.Font("微软雅黑", 12F);
this.edtName.Location = new System.Drawing.Point(150, 55);
this.edtName.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.edtName.Name = "edtName";
this.edtName.Padding = new System.Windows.Forms.Padding(5);
this.edtName.Size = new System.Drawing.Size(340, 29);
this.edtName.TabIndex = 0;
//
// uiLabel2
//
this.uiLabel2.AutoSize = true;
this.uiLabel2.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiLabel2.Location = new System.Drawing.Point(56, 59);
this.uiLabel2.Name = "uiLabel2";
this.uiLabel2.Size = new System.Drawing.Size(42, 21);
this.uiLabel2.TabIndex = 4;
this.uiLabel2.Text = "姓名";
this.uiLabel2.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// uiLabel3
//
this.uiLabel3.AutoSize = true;
this.uiLabel3.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiLabel3.Location = new System.Drawing.Point(56, 99);
this.uiLabel3.Name = "uiLabel3";
this.uiLabel3.Size = new System.Drawing.Size(42, 21);
this.uiLabel3.TabIndex = 6;
this.uiLabel3.Text = "性别";
this.uiLabel3.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// rbMale
//
this.rbMale.Checked = true;
this.rbMale.Cursor = System.Windows.Forms.Cursors.Hand;
this.rbMale.Font = new System.Drawing.Font("微软雅黑", 12F);
this.rbMale.Location = new System.Drawing.Point(150, 95);
this.rbMale.Name = "rbMale";
this.rbMale.Padding = new System.Windows.Forms.Padding(22, 0, 0, 0);
this.rbMale.Size = new System.Drawing.Size(82, 29);
this.rbMale.TabIndex = 1;
this.rbMale.Text = "男";
//
// rbFemale
//
this.rbFemale.Cursor = System.Windows.Forms.Cursors.Hand;
this.rbFemale.Font = new System.Drawing.Font("微软雅黑", 12F);
this.rbFemale.Location = new System.Drawing.Point(238, 95);
this.rbFemale.Name = "rbFemale";
this.rbFemale.Padding = new System.Windows.Forms.Padding(22, 0, 0, 0);
this.rbFemale.Size = new System.Drawing.Size(82, 29);
this.rbFemale.TabIndex = 2;
this.rbFemale.Text = "女";
//
// edtAge
//
this.edtAge.Cursor = System.Windows.Forms.Cursors.IBeam;
this.edtAge.FillColor = System.Drawing.Color.White;
this.edtAge.Font = new System.Drawing.Font("微软雅黑", 12F);
this.edtAge.Location = new System.Drawing.Point(150, 135);
this.edtAge.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.edtAge.Name = "edtAge";
this.edtAge.Padding = new System.Windows.Forms.Padding(5);
this.edtAge.Size = new System.Drawing.Size(170, 29);
this.edtAge.TabIndex = 3;
this.edtAge.Text = "0";
this.edtAge.Type = Sunny.UI.UITextBox.UIEditType.Integer;
//
// uiLabel4
//
this.uiLabel4.AutoSize = true;
this.uiLabel4.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiLabel4.Location = new System.Drawing.Point(56, 139);
this.uiLabel4.Name = "uiLabel4";
this.uiLabel4.Size = new System.Drawing.Size(42, 21);
this.uiLabel4.TabIndex = 10;
this.uiLabel4.Text = "年龄";
this.uiLabel4.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// cbDepartment
//
this.cbDepartment.DropDownStyle = Sunny.UI.UIDropDownStyle.DropDownList;
this.cbDepartment.FillColor = System.Drawing.Color.White;
this.cbDepartment.Font = new System.Drawing.Font("微软雅黑", 12F);
this.cbDepartment.Items.AddRange(new object[] {
"研发部",
"采购部",
"生产部",
"销售部",
"人事部",
"财务部",
"行政部",
"其他"});
this.cbDepartment.Location = new System.Drawing.Point(150, 175);
this.cbDepartment.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.cbDepartment.MinimumSize = new System.Drawing.Size(63, 0);
this.cbDepartment.Name = "cbDepartment";
this.cbDepartment.Padding = new System.Windows.Forms.Padding(0, 0, 30, 0);
this.cbDepartment.Size = new System.Drawing.Size(170, 29);
this.cbDepartment.TabIndex = 4;
this.cbDepartment.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft;
//
// uiLabel5
//
this.uiLabel5.AutoSize = true;
this.uiLabel5.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiLabel5.Location = new System.Drawing.Point(56, 179);
this.uiLabel5.Name = "uiLabel5";
this.uiLabel5.Size = new System.Drawing.Size(42, 21);
this.uiLabel5.TabIndex = 12;
this.uiLabel5.Text = "部门";
this.uiLabel5.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// uiLabel6
//
this.uiLabel6.AutoSize = true;
this.uiLabel6.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiLabel6.Location = new System.Drawing.Point(56, 219);
this.uiLabel6.Name = "uiLabel6";
this.uiLabel6.Size = new System.Drawing.Size(42, 21);
this.uiLabel6.TabIndex = 13;
this.uiLabel6.Text = "生日";
this.uiLabel6.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// edtDate
//
this.edtDate.DropDownStyle = Sunny.UI.UIDropDownStyle.DropDownList;
this.edtDate.FillColor = System.Drawing.Color.White;
this.edtDate.Font = new System.Drawing.Font("微软雅黑", 12F);
this.edtDate.Location = new System.Drawing.Point(150, 215);
this.edtDate.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.edtDate.MinimumSize = new System.Drawing.Size(63, 0);
this.edtDate.Name = "edtDate";
this.edtDate.Padding = new System.Windows.Forms.Padding(0, 0, 30, 0);
this.edtDate.Size = new System.Drawing.Size(170, 29);
this.edtDate.TabIndex = 5;
this.edtDate.Text = "2020-05-08";
this.edtDate.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft;
this.edtDate.Value = new System.DateTime(2020, 5, 8, 0, 0, 0, 0);
//
// edtAddress
//
this.edtAddress.Cursor = System.Windows.Forms.Cursors.IBeam;
this.edtAddress.FillColor = System.Drawing.Color.White;
this.edtAddress.Font = new System.Drawing.Font("微软雅黑", 12F);
this.edtAddress.Location = new System.Drawing.Point(150, 254);
this.edtAddress.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.edtAddress.Name = "edtAddress";
this.edtAddress.Padding = new System.Windows.Forms.Padding(5);
this.edtAddress.Size = new System.Drawing.Size(340, 29);
this.edtAddress.TabIndex = 6;
//
// uiLabel1
//
this.uiLabel1.AutoSize = true;
this.uiLabel1.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiLabel1.Location = new System.Drawing.Point(56, 258);
this.uiLabel1.Name = "uiLabel1";
this.uiLabel1.Size = new System.Drawing.Size(42, 21);
this.uiLabel1.TabIndex = 15;
this.uiLabel1.Text = "住址";
this.uiLabel1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// FEdit
//
this.AutoScaleDimensions = new System.Drawing.SizeF(10F, 21F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(520, 362);
this.Controls.Add(this.edtAddress);
this.Controls.Add(this.uiLabel1);
this.Controls.Add(this.edtDate);
this.Controls.Add(this.uiLabel6);
this.Controls.Add(this.uiLabel5);
this.Controls.Add(this.cbDepartment);
this.Controls.Add(this.uiLabel4);
this.Controls.Add(this.edtAge);
this.Controls.Add(this.rbFemale);
this.Controls.Add(this.rbMale);
this.Controls.Add(this.uiLabel3);
this.Controls.Add(this.edtName);
this.Controls.Add(this.uiLabel2);
this.Name = "FEdit";
this.Text = "UIEditFrom";
this.Controls.SetChildIndex(this.pnlBtm, 0);
this.Controls.SetChildIndex(this.uiLabel2, 0);
this.Controls.SetChildIndex(this.edtName, 0);
this.Controls.SetChildIndex(this.uiLabel3, 0);
this.Controls.SetChildIndex(this.rbMale, 0);
this.Controls.SetChildIndex(this.rbFemale, 0);
this.Controls.SetChildIndex(this.edtAge, 0);
this.Controls.SetChildIndex(this.uiLabel4, 0);
this.Controls.SetChildIndex(this.cbDepartment, 0);
this.Controls.SetChildIndex(this.uiLabel5, 0);
this.Controls.SetChildIndex(this.uiLabel6, 0);
this.Controls.SetChildIndex(this.edtDate, 0);
this.Controls.SetChildIndex(this.uiLabel1, 0);
this.Controls.SetChildIndex(this.edtAddress, 0);
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private UITextBox edtName;
private UILabel uiLabel2;
private UILabel uiLabel3;
private UIRadioButton rbMale;
private UIRadioButton rbFemale;
private UITextBox edtAge;
private UILabel uiLabel4;
private UIComboBox cbDepartment;
private UILabel uiLabel5;
private UILabel uiLabel6;
private UIDatePicker edtDate;
private UITextBox edtAddress;
private UILabel uiLabel1;
}
}

View File

@ -0,0 +1,55 @@
namespace Sunny.UI.Demo.Forms
{
public partial class FEdit : UIEditForm
{
public FEdit()
{
InitializeComponent();
}
protected override bool CheckData()
{
return CheckEmpty(edtName, "请输入姓名")
&& CheckEmpty(edtAge, "请输入年龄")
&& CheckRange(edtAge, 18, 60, "输入年龄范围18~60")
&& CheckEmpty(cbDepartment, "请选择部门")
&& CheckEmpty(edtDate, "请选择生日");
}
private Person person;
public Person Person
{
get
{
if (person == null)
{
person = new Person();
}
person.Name = edtName.Text;
person.Age = edtAge.IntValue;
person.Birthday = edtDate.Value;
person.Address = edtAddress.Text;
if (rbMale.Checked)
person.Sex = Sex.Male;
if (rbFemale.Checked)
person.Sex = Sex.Female;
person.Department = cbDepartment.Text;
return person;
}
set
{
person = value;
edtName.Text = value.Name;
edtAge.IntValue = value.Age;
edtDate.Value = value.Birthday;
edtAddress.Text = value.Address;
cbDepartment.SelectedIndex = cbDepartment.Items.IndexOf(value.Department);
rbMale.Checked = value.Sex == Sex.Male;
rbFemale.Checked = value.Sex == Sex.Female;
}
}
}
}

View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

98
SunnyUI.Demo/Forms/FEditor.Designer.cs generated Normal file
View File

@ -0,0 +1,98 @@
namespace Sunny.UI.Demo.Forms
{
partial class FEditor
{
/// <summary>
/// Required designer variable.
/// </summary>
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.btnEdit = new Sunny.UI.UISymbolButton();
this.uiLine1 = new Sunny.UI.UILine();
this.btnAdd = new Sunny.UI.UISymbolButton();
this.PagePanel.SuspendLayout();
this.SuspendLayout();
//
// PagePanel
//
this.PagePanel.Controls.Add(this.btnAdd);
this.PagePanel.Controls.Add(this.uiLine1);
this.PagePanel.Controls.Add(this.btnEdit);
//
// btnEdit
//
this.btnEdit.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnEdit.Font = new System.Drawing.Font("微软雅黑", 12F);
this.btnEdit.Location = new System.Drawing.Point(152, 57);
this.btnEdit.Name = "btnEdit";
this.btnEdit.Padding = new System.Windows.Forms.Padding(28, 0, 0, 0);
this.btnEdit.Size = new System.Drawing.Size(100, 35);
this.btnEdit.Symbol = 61508;
this.btnEdit.TabIndex = 0;
this.btnEdit.Text = "编辑";
this.btnEdit.Click += new System.EventHandler(this.btnEdit_Click);
//
// uiLine1
//
this.uiLine1.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiLine1.Location = new System.Drawing.Point(30, 20);
this.uiLine1.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine1.Name = "uiLine1";
this.uiLine1.Size = new System.Drawing.Size(670, 20);
this.uiLine1.TabIndex = 19;
this.uiLine1.Text = "UIEditForm";
this.uiLine1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// btnAdd
//
this.btnAdd.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnAdd.Font = new System.Drawing.Font("微软雅黑", 12F);
this.btnAdd.Location = new System.Drawing.Point(30, 57);
this.btnAdd.Name = "btnAdd";
this.btnAdd.Padding = new System.Windows.Forms.Padding(28, 0, 0, 0);
this.btnAdd.Size = new System.Drawing.Size(100, 35);
this.btnAdd.Symbol = 61543;
this.btnAdd.TabIndex = 20;
this.btnAdd.Text = "增加";
this.btnAdd.Click += new System.EventHandler(this.btnAdd_Click);
//
// FEditor
//
this.AutoScaleDimensions = new System.Drawing.SizeF(10F, 21F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 450);
this.Name = "FEditor";
this.Text = "Editor";
this.PagePanel.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
private UISymbolButton btnEdit;
private UILine uiLine1;
private UISymbolButton btnAdd;
}
}

View File

@ -0,0 +1,70 @@
using System;
namespace Sunny.UI.Demo.Forms
{
public partial class FEditor : UITitlePage
{
public FEditor()
{
InitializeComponent();
}
private void btnEdit_Click(object sender, System.EventArgs e)
{
Person person = new Person();
person.Name = "SunnyUI";
person.Sex = Sex.Male;
person.Age = 18;
person.Department = "研发部";
person.Birthday = new DateTime(2002, 1, 1);
FEdit frm = new FEdit();
frm.Person = person;
frm.ShowDialog();
if (frm.IsOK)
{
this.ShowSuccessDialog(frm.Person.ToString());
}
frm.Dispose();
}
private void btnAdd_Click(object sender, EventArgs e)
{
FEdit frm = new FEdit();
frm.ShowDialog();
if (frm.IsOK)
{
this.ShowSuccessDialog(frm.Person.ToString());
}
frm.Dispose();
}
}
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public Sex Sex { get; set; }
public string Department { get; set; }
public DateTime Birthday { get; set; }
public string Address { get; set; }
public override string ToString()
{
return Name + ", " + Age + ", " + Department;
}
}
public enum Sex
{
Male,
Female
}
}

View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

203
SunnyUI.Demo/Forms/FFrames.Designer.cs generated Normal file
View File

@ -0,0 +1,203 @@
namespace Sunny.UI.Demo
{
partial class FFrames
{
/// <summary>
/// Required designer variable.
/// </summary>
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.uiLine1 = new Sunny.UI.UILine();
this.btnAM = new Sunny.UI.UIImageButton();
this.btnAHMF = new Sunny.UI.UIImageButton();
this.btnHAMF = new Sunny.UI.UIImageButton();
this.btnHAM = new Sunny.UI.UIImageButton();
this.btnAHM = new Sunny.UI.UIImageButton();
this.btnHMF = new Sunny.UI.UIImageButton();
this.btnHM = new Sunny.UI.UIImageButton();
this.PagePanel.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.btnAM)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.btnAHMF)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.btnHAMF)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.btnHAM)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.btnAHM)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.btnHMF)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.btnHM)).BeginInit();
this.SuspendLayout();
//
// PagePanel
//
this.PagePanel.Controls.Add(this.uiLine1);
this.PagePanel.Controls.Add(this.btnAM);
this.PagePanel.Controls.Add(this.btnAHMF);
this.PagePanel.Controls.Add(this.btnHAMF);
this.PagePanel.Controls.Add(this.btnHAM);
this.PagePanel.Controls.Add(this.btnAHM);
this.PagePanel.Controls.Add(this.btnHMF);
this.PagePanel.Controls.Add(this.btnHM);
this.PagePanel.Size = new System.Drawing.Size(892, 592);
this.PagePanel.Style = Sunny.UI.UIStyle.Blue;
//
// uiLine1
//
this.uiLine1.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiLine1.Location = new System.Drawing.Point(30, 20);
this.uiLine1.MinimumSize = new System.Drawing.Size(16, 16);
this.uiLine1.Name = "uiLine1";
this.uiLine1.Size = new System.Drawing.Size(670, 20);
this.uiLine1.TabIndex = 48;
this.uiLine1.Text = "UIMainFrame";
this.uiLine1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// btnAM
//
this.btnAM.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnAM.Image = global::Sunny.UI.Demo.Properties.Resources.AM;
this.btnAM.ImageHover = global::Sunny.UI.Demo.Properties.Resources.AM1;
this.btnAM.Location = new System.Drawing.Point(30, 381);
this.btnAM.Name = "btnAM";
this.btnAM.Size = new System.Drawing.Size(160, 120);
this.btnAM.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize;
this.btnAM.TabIndex = 7;
this.btnAM.TabStop = false;
this.btnAM.Text = null;
this.btnAM.Click += new System.EventHandler(this.btnAM_Click);
//
// btnAHMF
//
this.btnAHMF.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnAHMF.Image = global::Sunny.UI.Demo.Properties.Resources.AHMF;
this.btnAHMF.ImageHover = global::Sunny.UI.Demo.Properties.Resources.AHMF1;
this.btnAHMF.Location = new System.Drawing.Point(430, 381);
this.btnAHMF.Name = "btnAHMF";
this.btnAHMF.Size = new System.Drawing.Size(160, 120);
this.btnAHMF.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize;
this.btnAHMF.TabIndex = 6;
this.btnAHMF.TabStop = false;
this.btnAHMF.Text = null;
this.btnAHMF.Click += new System.EventHandler(this.btnAHMF_Click);
//
// btnHAMF
//
this.btnHAMF.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnHAMF.Image = global::Sunny.UI.Demo.Properties.Resources.HAMF;
this.btnHAMF.ImageHover = global::Sunny.UI.Demo.Properties.Resources.HAMF1;
this.btnHAMF.Location = new System.Drawing.Point(230, 221);
this.btnHAMF.Name = "btnHAMF";
this.btnHAMF.Size = new System.Drawing.Size(160, 120);
this.btnHAMF.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize;
this.btnHAMF.TabIndex = 5;
this.btnHAMF.TabStop = false;
this.btnHAMF.Text = null;
this.btnHAMF.Click += new System.EventHandler(this.btnHAMF_Click);
//
// btnHAM
//
this.btnHAM.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnHAM.Image = global::Sunny.UI.Demo.Properties.Resources.HAM;
this.btnHAM.ImageHover = global::Sunny.UI.Demo.Properties.Resources.HAM1;
this.btnHAM.Location = new System.Drawing.Point(30, 221);
this.btnHAM.Name = "btnHAM";
this.btnHAM.Size = new System.Drawing.Size(160, 120);
this.btnHAM.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize;
this.btnHAM.TabIndex = 4;
this.btnHAM.TabStop = false;
this.btnHAM.Text = null;
this.btnHAM.Click += new System.EventHandler(this.btnHAM_Click);
//
// btnAHM
//
this.btnAHM.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnAHM.Image = global::Sunny.UI.Demo.Properties.Resources.AHM;
this.btnAHM.ImageHover = global::Sunny.UI.Demo.Properties.Resources.AHM1;
this.btnAHM.Location = new System.Drawing.Point(230, 381);
this.btnAHM.Name = "btnAHM";
this.btnAHM.Size = new System.Drawing.Size(160, 120);
this.btnAHM.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize;
this.btnAHM.TabIndex = 3;
this.btnAHM.TabStop = false;
this.btnAHM.Text = null;
this.btnAHM.Click += new System.EventHandler(this.btnAHM_Click);
//
// btnHMF
//
this.btnHMF.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnHMF.Image = global::Sunny.UI.Demo.Properties.Resources.HMF;
this.btnHMF.ImageHover = global::Sunny.UI.Demo.Properties.Resources.HMF1;
this.btnHMF.Location = new System.Drawing.Point(230, 61);
this.btnHMF.Name = "btnHMF";
this.btnHMF.Size = new System.Drawing.Size(160, 120);
this.btnHMF.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize;
this.btnHMF.TabIndex = 2;
this.btnHMF.TabStop = false;
this.btnHMF.Text = null;
this.btnHMF.Click += new System.EventHandler(this.btnHMF_Click);
//
// btnHM
//
this.btnHM.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnHM.Image = global::Sunny.UI.Demo.Properties.Resources.HM;
this.btnHM.ImageHover = global::Sunny.UI.Demo.Properties.Resources.HM1;
this.btnHM.Location = new System.Drawing.Point(30, 61);
this.btnHM.Name = "btnHM";
this.btnHM.Size = new System.Drawing.Size(160, 120);
this.btnHM.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize;
this.btnHM.TabIndex = 1;
this.btnHM.TabStop = false;
this.btnHM.Text = null;
this.btnHM.TextAlign = System.Drawing.ContentAlignment.BottomCenter;
this.btnHM.Click += new System.EventHandler(this.btnHM_Click);
//
// FFrames
//
this.AutoScaleDimensions = new System.Drawing.SizeF(10F, 21F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(892, 627);
this.Name = "FFrames";
this.Style = Sunny.UI.UIStyle.Blue;
this.Text = "Frames";
this.PagePanel.ResumeLayout(false);
this.PagePanel.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.btnAM)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.btnAHMF)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.btnHAMF)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.btnHAM)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.btnAHM)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.btnHMF)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.btnHM)).EndInit();
this.ResumeLayout(false);
}
#endregion
private UIImageButton btnHM;
private UIImageButton btnAM;
private UIImageButton btnAHMF;
private UIImageButton btnHAMF;
private UIImageButton btnHAM;
private UIImageButton btnAHM;
private UIImageButton btnHMF;
private UILine uiLine1;
}
}

View File

@ -0,0 +1,54 @@
using System.Windows.Forms;
namespace Sunny.UI.Demo
{
public partial class FFrames : UITitlePage
{
public FFrames()
{
InitializeComponent();
}
private void ShowFrame(UIMainFrame frame)
{
frame.WindowState = FormWindowState.Maximized;
frame.ShowDialog();
frame.Dispose();
}
private void btnHM_Click(object sender, System.EventArgs e)
{
ShowFrame(new FHeaderMain());
}
private void btnHMF_Click(object sender, System.EventArgs e)
{
ShowFrame(new FHeaderMainFooter());
}
private void btnHAM_Click(object sender, System.EventArgs e)
{
ShowFrame(new FHeaderAsideMain());
}
private void btnHAMF_Click(object sender, System.EventArgs e)
{
ShowFrame(new FHeaderAsideMainFooter());
}
private void btnAM_Click(object sender, System.EventArgs e)
{
ShowFrame(new FAsideMain());
}
private void btnAHM_Click(object sender, System.EventArgs e)
{
ShowFrame(new FAsideHeaderMain());
}
private void btnAHMF_Click(object sender, System.EventArgs e)
{
ShowFrame(new FAsideHeaderMainFooter());
}
}
}

View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -0,0 +1,66 @@
namespace Sunny.UI.Demo
{
partial class FAsideHeaderMain
{
/// <summary>
/// Required designer variable.
/// </summary>
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.SuspendLayout();
//
// Header
//
this.Header.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(76)))), ((int)(((byte)(76)))), ((int)(((byte)(76)))));
this.Header.ForeColor = System.Drawing.Color.White;
this.Header.Size = new System.Drawing.Size(774, 57);
this.Header.Style = Sunny.UI.UIStyle.Custom;
this.Header.StyleCustomMode = true;
//
// Aside
//
this.Aside.Size = new System.Drawing.Size(250, 685);
this.Aside.Style = Sunny.UI.UIStyle.Blue;
this.Aside.MenuItemClick += new Sunny.UI.UINavMenu.OnMenuItemClick(this.Aside_MenuItemClick);
//
// Main
//
this.Main.Size = new System.Drawing.Size(774, 628);
this.Main.Style = Sunny.UI.UIStyle.Blue;
//
// FAsideHeaderMain
//
this.AutoScaleDimensions = new System.Drawing.SizeF(10F, 21F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(1024, 720);
this.Name = "FAsideHeaderMain";
this.Style = Sunny.UI.UIStyle.Blue;
this.Text = "FAsideHeaderMain";
this.ResumeLayout(false);
}
#endregion
}
}

View File

@ -0,0 +1,31 @@
namespace Sunny.UI.Demo
{
public partial class FAsideHeaderMain : UIAsideHeaderMainFrame
{
public FAsideHeaderMain()
{
InitializeComponent();
//设置关联
Aside.TabControl = Main;
//增加页面到Main
AddPage(new FPage1(), 1001);
AddPage(new FPage2(), 1002);
AddPage(new FPage3(), 1003);
//设置Header节点索引
Aside.CreateNode("Page1", 1001);
Aside.CreateNode("Page2", 1002);
Aside.CreateNode("Page3", 1003);
//显示默认界面
Aside.SelectFirst();
}
private void Aside_MenuItemClick(System.Windows.Forms.TreeNode node, NavMenuItem item, int pageIndex)
{
Header.Text = "PageIndex: " + pageIndex;
}
}
}

View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -0,0 +1,71 @@
namespace Sunny.UI.Demo
{
partial class FAsideHeaderMainFooter
{
/// <summary>
/// Required designer variable.
/// </summary>
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.SuspendLayout();
//
// Footer
//
this.Footer.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(173)))), ((int)(((byte)(178)))), ((int)(((byte)(181)))));
this.Footer.Location = new System.Drawing.Point(250, 664);
this.Footer.Size = new System.Drawing.Size(774, 56);
this.Footer.Style = Sunny.UI.UIStyle.Custom;
this.Footer.StyleCustomMode = true;
//
// Header
//
this.Header.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(76)))), ((int)(((byte)(76)))), ((int)(((byte)(76)))));
this.Header.ForeColor = System.Drawing.Color.White;
this.Header.Size = new System.Drawing.Size(774, 57);
this.Header.Style = Sunny.UI.UIStyle.Custom;
this.Header.StyleCustomMode = true;
//
// Aside
//
this.Aside.Size = new System.Drawing.Size(250, 685);
this.Aside.MenuItemClick += new Sunny.UI.UINavMenu.OnMenuItemClick(this.Aside_MenuItemClick);
//
// Main
//
this.Main.Size = new System.Drawing.Size(774, 572);
//
// FAsideHeaderMainFooter
//
this.AutoScaleDimensions = new System.Drawing.SizeF(10F, 21F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(1024, 720);
this.Name = "FAsideHeaderMainFooter";
this.Text = "FAsideHeaderMainFooter";
this.ResumeLayout(false);
}
#endregion
}
}

View File

@ -0,0 +1,31 @@
namespace Sunny.UI.Demo
{
public partial class FAsideHeaderMainFooter : UIAsideHeaderMainFooterFrame
{
public FAsideHeaderMainFooter()
{
InitializeComponent();
//设置关联
Aside.TabControl = Main;
//增加页面到Main
AddPage(new FPage1(), 1001);
AddPage(new FPage2(), 1002);
AddPage(new FPage3(), 1003);
//设置Header节点索引
Aside.CreateNode("Page1", 1001);
Aside.CreateNode("Page2", 1002);
Aside.CreateNode("Page3", 1003);
//显示默认界面
Aside.SelectFirst();
}
private void Aside_MenuItemClick(System.Windows.Forms.TreeNode node, NavMenuItem item, int pageIndex)
{
Footer.Text = Header.Text = "PageIndex: " + pageIndex;
}
}
}

View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -0,0 +1,58 @@
namespace Sunny.UI.Demo
{
partial class FAsideMain
{
/// <summary>
/// Required designer variable.
/// </summary>
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.SuspendLayout();
//
// Aside
//
this.Aside.LineColor = System.Drawing.Color.Black;
this.Aside.Size = new System.Drawing.Size(250, 685);
this.Aside.Style = Sunny.UI.UIStyle.Blue;
//
// Main
//
this.Main.Size = new System.Drawing.Size(774, 685);
this.Main.Style = Sunny.UI.UIStyle.Blue;
//
// FAsideMain
//
this.AutoScaleDimensions = new System.Drawing.SizeF(10F, 21F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(1024, 720);
this.Name = "FAsideMain";
this.Style = Sunny.UI.UIStyle.Blue;
this.Text = "FAsideMain";
this.ResumeLayout(false);
}
#endregion
}
}

View File

@ -0,0 +1,26 @@
namespace Sunny.UI.Demo
{
public partial class FAsideMain : UIAsideMainFrame
{
public FAsideMain()
{
InitializeComponent();
//设置关联
Aside.TabControl = Main;
//增加页面到Main
AddPage(new FTitlePage1(), 1001);
AddPage(new FTitlePage2(), 1002);
AddPage(new FTitlePage3(), 1003);
//设置Header节点索引
Aside.CreateNode("Page1", 1001);
Aside.CreateNode("Page2", 1002);
Aside.CreateNode("Page3", 1003);
//显示默认界面
Aside.SelectFirst();
}
}
}

View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -0,0 +1,81 @@
namespace Sunny.UI.Demo
{
partial class FHeaderAsideMain
{
/// <summary>
/// Required designer variable.
/// </summary>
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.uiLogo1 = new Sunny.UI.UILogo();
this.Header.SuspendLayout();
this.SuspendLayout();
//
// Aside
//
this.Aside.LineColor = System.Drawing.Color.Black;
this.Aside.Size = new System.Drawing.Size(250, 575);
this.Aside.Style = Sunny.UI.UIStyle.Blue;
//
// Header
//
this.Header.Controls.Add(this.uiLogo1);
this.Header.Size = new System.Drawing.Size(1024, 110);
this.Header.Style = Sunny.UI.UIStyle.Blue;
//
// Main
//
this.Main.Size = new System.Drawing.Size(774, 575);
this.Main.Style = Sunny.UI.UIStyle.Blue;
//
// uiLogo1
//
this.uiLogo1.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiLogo1.Location = new System.Drawing.Point(15, 15);
this.uiLogo1.MaximumSize = new System.Drawing.Size(300, 80);
this.uiLogo1.MinimumSize = new System.Drawing.Size(300, 80);
this.uiLogo1.Name = "uiLogo1";
this.uiLogo1.Size = new System.Drawing.Size(300, 80);
this.uiLogo1.Style = Sunny.UI.UIStyle.Custom;
this.uiLogo1.TabIndex = 1;
this.uiLogo1.Text = "uiLogo1";
//
// FHeaderAsideMain
//
this.AutoScaleDimensions = new System.Drawing.SizeF(10F, 21F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(1024, 720);
this.Name = "FHeaderAsideMain";
this.Style = Sunny.UI.UIStyle.Blue;
this.Text = "FHeaderAsideMain";
this.Header.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
private UILogo uiLogo1;
}
}

View File

@ -0,0 +1,26 @@
namespace Sunny.UI.Demo
{
public partial class FHeaderAsideMain : UIHeaderAsideMainFrame
{
public FHeaderAsideMain()
{
InitializeComponent();
//设置关联
Aside.TabControl = Main;
//增加页面到Main
AddPage(new FTitlePage1(), 1001);
AddPage(new FTitlePage2(), 1002);
AddPage(new FTitlePage3(), 1003);
//设置Header节点索引
Aside.CreateNode("Page1", 1001);
Aside.CreateNode("Page2", 1002);
Aside.CreateNode("Page3", 1003);
//显示默认界面
Aside.SelectFirst();
}
}
}

View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -0,0 +1,88 @@
namespace Sunny.UI.Demo
{
partial class FHeaderAsideMainFooter
{
/// <summary>
/// Required designer variable.
/// </summary>
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.uiLogo1 = new Sunny.UI.UILogo();
this.Header.SuspendLayout();
this.SuspendLayout();
//
// Footer
//
this.Footer.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(173)))), ((int)(((byte)(178)))), ((int)(((byte)(181)))));
this.Footer.Location = new System.Drawing.Point(250, 664);
this.Footer.Size = new System.Drawing.Size(774, 56);
this.Footer.Style = Sunny.UI.UIStyle.Custom;
this.Footer.StyleCustomMode = true;
//
// Aside
//
this.Aside.Size = new System.Drawing.Size(250, 575);
this.Aside.Style = Sunny.UI.UIStyle.Blue;
this.Aside.MenuItemClick += new Sunny.UI.UINavMenu.OnMenuItemClick(this.Aside_MenuItemClick);
//
// Header
//
this.Header.Controls.Add(this.uiLogo1);
this.Header.Size = new System.Drawing.Size(1024, 110);
this.Header.Style = Sunny.UI.UIStyle.Blue;
//
// Main
//
this.Main.Size = new System.Drawing.Size(774, 519);
this.Main.Style = Sunny.UI.UIStyle.Blue;
//
// uiLogo1
//
this.uiLogo1.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiLogo1.Location = new System.Drawing.Point(15, 15);
this.uiLogo1.MaximumSize = new System.Drawing.Size(300, 80);
this.uiLogo1.MinimumSize = new System.Drawing.Size(300, 80);
this.uiLogo1.Name = "uiLogo1";
this.uiLogo1.Size = new System.Drawing.Size(300, 80);
this.uiLogo1.TabIndex = 2;
this.uiLogo1.Text = "uiLogo1";
//
// FHeaderAsideMainFooter
//
this.AutoScaleDimensions = new System.Drawing.SizeF(10F, 21F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(1024, 720);
this.Name = "FHeaderAsideMainFooter";
this.Style = Sunny.UI.UIStyle.Blue;
this.Text = "FHeaderAsideMainFooter";
this.Header.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
private UILogo uiLogo1;
}
}

View File

@ -0,0 +1,31 @@
namespace Sunny.UI.Demo
{
public partial class FHeaderAsideMainFooter : UIHeaderAsideMainFooterFrame
{
public FHeaderAsideMainFooter()
{
InitializeComponent();
//设置关联
Aside.TabControl = Main;
//增加页面到Main
AddPage(new FTitlePage1(), 1001);
AddPage(new FTitlePage2(), 1002);
AddPage(new FTitlePage3(), 1003);
//设置Header节点索引
Aside.CreateNode("Page1", 1001);
Aside.CreateNode("Page2", 1002);
Aside.CreateNode("Page3", 1003);
//显示默认界面
Aside.SelectFirst();
}
private void Aside_MenuItemClick(System.Windows.Forms.TreeNode node, NavMenuItem item, int pageIndex)
{
Footer.Text = "PageIndex: " + pageIndex;
}
}
}

View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -0,0 +1,87 @@
namespace Sunny.UI.Demo
{
partial class FHeaderMain
{
/// <summary>
/// Required designer variable.
/// </summary>
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()
{
System.Windows.Forms.TreeNode treeNode1 = new System.Windows.Forms.TreeNode("Page1");
System.Windows.Forms.TreeNode treeNode2 = new System.Windows.Forms.TreeNode("Page2");
System.Windows.Forms.TreeNode treeNode3 = new System.Windows.Forms.TreeNode("Page3");
this.uiLogo1 = new Sunny.UI.UILogo();
this.Header.SuspendLayout();
this.SuspendLayout();
//
// Header
//
this.Header.Controls.Add(this.uiLogo1);
this.Header.Location = new System.Drawing.Point(0, 35);
treeNode1.Name = "节点0";
treeNode1.Text = "Page1";
treeNode2.Name = "节点1";
treeNode2.Text = "Page2";
treeNode3.Name = "节点2";
treeNode3.Text = "Page3";
this.Header.Nodes.AddRange(new System.Windows.Forms.TreeNode[] {
treeNode1,
treeNode2,
treeNode3});
this.Header.Size = new System.Drawing.Size(1024, 110);
this.Header.TabControl = this.Main;
//
// Main
//
this.Main.Size = new System.Drawing.Size(1024, 575);
//
// uiLogo1
//
this.uiLogo1.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiLogo1.Location = new System.Drawing.Point(15, 15);
this.uiLogo1.MaximumSize = new System.Drawing.Size(300, 80);
this.uiLogo1.MinimumSize = new System.Drawing.Size(300, 80);
this.uiLogo1.Name = "uiLogo1";
this.uiLogo1.Size = new System.Drawing.Size(300, 80);
this.uiLogo1.Style = Sunny.UI.UIStyle.Custom;
this.uiLogo1.TabIndex = 0;
this.uiLogo1.Text = "uiLogo1";
//
// FHeaderMain
//
this.AutoScaleDimensions = new System.Drawing.SizeF(10F, 21F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(1024, 720);
this.Name = "FHeaderMain";
this.Text = "FHeaderMain";
this.Header.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
private UILogo uiLogo1;
}
}

View File

@ -0,0 +1,26 @@
namespace Sunny.UI.Demo
{
public partial class FHeaderMain : UIHeaderMainFrame
{
public FHeaderMain()
{
InitializeComponent();
//设置关联
Header.TabControl = Main;
//增加页面到Main
AddPage(new FTitlePage1(), 1001);
AddPage(new FTitlePage2(), 1002);
AddPage(new FTitlePage3(), 1003);
//设置Header节点索引
Header.SetNodePageIndex(Header.Nodes[0], 1001);
Header.SetNodePageIndex(Header.Nodes[1], 1002);
Header.SetNodePageIndex(Header.Nodes[2], 1003);
//显示默认界面
Header.SelectedIndex = 0;
}
}
}

View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -0,0 +1,85 @@
namespace Sunny.UI.Demo
{
partial class FHeaderMainFooter
{
/// <summary>
/// Required designer variable.
/// </summary>
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.uiLogo1 = new Sunny.UI.UILogo();
this.Header.SuspendLayout();
this.SuspendLayout();
//
// Footer
//
this.Footer.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(173)))), ((int)(((byte)(178)))), ((int)(((byte)(181)))));
this.Footer.Location = new System.Drawing.Point(0, 664);
this.Footer.Size = new System.Drawing.Size(1024, 56);
this.Footer.Style = Sunny.UI.UIStyle.Custom;
this.Footer.StyleCustomMode = true;
this.Footer.Text = "";
//
// Header
//
this.Header.Controls.Add(this.uiLogo1);
this.Header.Size = new System.Drawing.Size(1024, 110);
this.Header.Style = Sunny.UI.UIStyle.Blue;
this.Header.MenuItemClick += new Sunny.UI.UINavBar.OnMenuItemClick(this.Header_MenuItemClick);
//
// Main
//
this.Main.Size = new System.Drawing.Size(1024, 519);
this.Main.Style = Sunny.UI.UIStyle.Blue;
//
// uiLogo1
//
this.uiLogo1.Font = new System.Drawing.Font("微软雅黑", 12F);
this.uiLogo1.Location = new System.Drawing.Point(15, 15);
this.uiLogo1.MaximumSize = new System.Drawing.Size(300, 80);
this.uiLogo1.MinimumSize = new System.Drawing.Size(300, 80);
this.uiLogo1.Name = "uiLogo1";
this.uiLogo1.Size = new System.Drawing.Size(300, 80);
this.uiLogo1.Style = Sunny.UI.UIStyle.Custom;
this.uiLogo1.TabIndex = 1;
this.uiLogo1.Text = "uiLogo1";
//
// FHeaderMainFooter
//
this.AutoScaleDimensions = new System.Drawing.SizeF(10F, 21F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(1024, 720);
this.Name = "FHeaderMainFooter";
this.Style = Sunny.UI.UIStyle.Blue;
this.Text = "FHeaderMainFooter";
this.Header.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
private UILogo uiLogo1;
}
}

View File

@ -0,0 +1,31 @@
namespace Sunny.UI.Demo
{
public partial class FHeaderMainFooter : UIHeaderMainFooterFrame
{
public FHeaderMainFooter()
{
InitializeComponent();
//设置关联
Header.TabControl = Main;
//增加页面到Main
AddPage(new FTitlePage1(), 1001);
AddPage(new FTitlePage2(), 1002);
AddPage(new FTitlePage3(), 1003);
//设置Header节点索引
Header.CreateNode("Page1", 1001);
Header.CreateNode("Page2", 1002);
Header.CreateNode("Page3", 1003);
//显示默认界面
Header.SelectedIndex = 0;
}
private void Header_MenuItemClick(string text, int menuIndex, int pageIndex)
{
Footer.Text = "PageIndex: " + pageIndex;
}
}
}

View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -0,0 +1,67 @@
namespace Sunny.UI.Demo
{
partial class FPage1
{
/// <summary>
/// Required designer variable.
/// </summary>
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.uiSymbolLabel1 = new Sunny.UI.UISymbolLabel();
this.SuspendLayout();
//
// uiSymbolLabel1
//
this.uiSymbolLabel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.uiSymbolLabel1.Font = new System.Drawing.Font("微软雅黑", 21.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiSymbolLabel1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(160)))), ((int)(((byte)(255)))));
this.uiSymbolLabel1.Location = new System.Drawing.Point(0, 0);
this.uiSymbolLabel1.Name = "uiSymbolLabel1";
this.uiSymbolLabel1.Padding = new System.Windows.Forms.Padding(68, 0, 0, 0);
this.uiSymbolLabel1.Size = new System.Drawing.Size(800, 450);
this.uiSymbolLabel1.Style = Sunny.UI.UIStyle.Custom;
this.uiSymbolLabel1.StyleCustomMode = true;
this.uiSymbolLabel1.Symbol = 61530;
this.uiSymbolLabel1.SymbolColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(160)))), ((int)(((byte)(255)))));
this.uiSymbolLabel1.SymbolSize = 64;
this.uiSymbolLabel1.TabIndex = 0;
this.uiSymbolLabel1.Text = "This is Page1";
//
// FPage1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(10F, 21F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 450);
this.Controls.Add(this.uiSymbolLabel1);
this.Name = "FPage1";
this.Text = "FPage1";
this.ResumeLayout(false);
}
#endregion
private UISymbolLabel uiSymbolLabel1;
}
}

View File

@ -0,0 +1,10 @@
namespace Sunny.UI.Demo
{
public partial class FPage1 : UIPage
{
public FPage1()
{
InitializeComponent();
}
}
}

View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -0,0 +1,67 @@
namespace Sunny.UI.Demo
{
partial class FPage2
{
/// <summary>
/// Required designer variable.
/// </summary>
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.uiSymbolLabel1 = new Sunny.UI.UISymbolLabel();
this.SuspendLayout();
//
// uiSymbolLabel1
//
this.uiSymbolLabel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.uiSymbolLabel1.Font = new System.Drawing.Font("微软雅黑", 21.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiSymbolLabel1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(110)))), ((int)(((byte)(190)))), ((int)(((byte)(40)))));
this.uiSymbolLabel1.Location = new System.Drawing.Point(0, 0);
this.uiSymbolLabel1.Name = "uiSymbolLabel1";
this.uiSymbolLabel1.Padding = new System.Windows.Forms.Padding(68, 0, 0, 0);
this.uiSymbolLabel1.Size = new System.Drawing.Size(800, 450);
this.uiSymbolLabel1.Style = Sunny.UI.UIStyle.Custom;
this.uiSymbolLabel1.StyleCustomMode = true;
this.uiSymbolLabel1.Symbol = 61528;
this.uiSymbolLabel1.SymbolColor = System.Drawing.Color.FromArgb(((int)(((byte)(110)))), ((int)(((byte)(190)))), ((int)(((byte)(40)))));
this.uiSymbolLabel1.SymbolSize = 64;
this.uiSymbolLabel1.TabIndex = 1;
this.uiSymbolLabel1.Text = "This is Page2";
//
// FPage2
//
this.AutoScaleDimensions = new System.Drawing.SizeF(10F, 21F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 450);
this.Controls.Add(this.uiSymbolLabel1);
this.Name = "FPage2";
this.Text = "FPage2";
this.ResumeLayout(false);
}
#endregion
private UISymbolLabel uiSymbolLabel1;
}
}

View File

@ -0,0 +1,10 @@
namespace Sunny.UI.Demo
{
public partial class FPage2 : UIPage
{
public FPage2()
{
InitializeComponent();
}
}
}

View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -0,0 +1,67 @@
namespace Sunny.UI.Demo
{
partial class FPage3
{
/// <summary>
/// Required designer variable.
/// </summary>
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.uiSymbolLabel1 = new Sunny.UI.UISymbolLabel();
this.SuspendLayout();
//
// uiSymbolLabel1
//
this.uiSymbolLabel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.uiSymbolLabel1.Font = new System.Drawing.Font("微软雅黑", 21.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiSymbolLabel1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(220)))), ((int)(((byte)(155)))), ((int)(((byte)(40)))));
this.uiSymbolLabel1.Location = new System.Drawing.Point(0, 0);
this.uiSymbolLabel1.Name = "uiSymbolLabel1";
this.uiSymbolLabel1.Padding = new System.Windows.Forms.Padding(68, 0, 0, 0);
this.uiSymbolLabel1.Size = new System.Drawing.Size(800, 450);
this.uiSymbolLabel1.Style = Sunny.UI.UIStyle.Custom;
this.uiSymbolLabel1.StyleCustomMode = true;
this.uiSymbolLabel1.Symbol = 61553;
this.uiSymbolLabel1.SymbolColor = System.Drawing.Color.FromArgb(((int)(((byte)(220)))), ((int)(((byte)(155)))), ((int)(((byte)(40)))));
this.uiSymbolLabel1.SymbolSize = 64;
this.uiSymbolLabel1.TabIndex = 2;
this.uiSymbolLabel1.Text = "This is Page3";
//
// FPage3
//
this.AutoScaleDimensions = new System.Drawing.SizeF(10F, 21F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 450);
this.Controls.Add(this.uiSymbolLabel1);
this.Name = "FPage3";
this.Text = "FPage3";
this.ResumeLayout(false);
}
#endregion
private UISymbolLabel uiSymbolLabel1;
}
}

View File

@ -0,0 +1,10 @@
namespace Sunny.UI.Demo
{
public partial class FPage3 : UIPage
{
public FPage3()
{
InitializeComponent();
}
}
}

View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -0,0 +1,72 @@
namespace Sunny.UI.Demo
{
partial class FTitlePage1
{
/// <summary>
/// Required designer variable.
/// </summary>
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.uiSymbolLabel1 = new Sunny.UI.UISymbolLabel();
this.PagePanel.SuspendLayout();
this.SuspendLayout();
//
// PagePanel
//
this.PagePanel.Controls.Add(this.uiSymbolLabel1);
//
// uiSymbolLabel1
//
this.uiSymbolLabel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.uiSymbolLabel1.Font = new System.Drawing.Font("微软雅黑", 21.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiSymbolLabel1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(160)))), ((int)(((byte)(255)))));
this.uiSymbolLabel1.Location = new System.Drawing.Point(0, 0);
this.uiSymbolLabel1.Name = "uiSymbolLabel1";
this.uiSymbolLabel1.Padding = new System.Windows.Forms.Padding(68, 0, 0, 0);
this.uiSymbolLabel1.Size = new System.Drawing.Size(800, 415);
this.uiSymbolLabel1.Style = Sunny.UI.UIStyle.Custom;
this.uiSymbolLabel1.StyleCustomMode = true;
this.uiSymbolLabel1.Symbol = 61530;
this.uiSymbolLabel1.SymbolColor = System.Drawing.Color.FromArgb(((int)(((byte)(80)))), ((int)(((byte)(160)))), ((int)(((byte)(255)))));
this.uiSymbolLabel1.SymbolSize = 64;
this.uiSymbolLabel1.TabIndex = 1;
this.uiSymbolLabel1.Text = "This is TitlePage1";
//
// FTitlePage1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(10F, 21F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 450);
this.Name = "FTitlePage1";
this.Text = "FTitlePage1";
this.PagePanel.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
private UISymbolLabel uiSymbolLabel1;
}
}

View File

@ -0,0 +1,10 @@
namespace Sunny.UI.Demo
{
public partial class FTitlePage1 : UITitlePage
{
public FTitlePage1()
{
InitializeComponent();
}
}
}

View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

Some files were not shown because too many files have changed in this diff Show More