PDA

View Full Version : TextBox زیبا



حمیدرضا1
سه شنبه 26 دی 1391, 17:10 عصر
سلام دوستان.
ختما دیدین وقتی با برنامه ی ورد آفیس کار میکنین،موقعی که یه کلمه ای رو سرچ میکنین(Ctr+f)یه تکست باکس رو نشون میده که دور تا دورش براق میشه.عکسشو میزام.
اگه کسی این تکست باکس رو داره بفرسته.
اگرم کسی نحوه ی ساختشو بلد بود همراه کد بزاره عالیه.
ممنون.

aghayex
سه شنبه 26 دی 1391, 18:36 عصر
ما این نوع تکس باکسو به راحتی در wpf پیاده سازی می کنیم

m_iman_e
سه شنبه 26 دی 1391, 18:41 عصر
دوست عزیز بهتره از کامپوننت Dotnetbr استفاده کنی

khokhan
سه شنبه 26 دی 1391, 18:53 عصر
دوست عزیز بهتره از کامپوننت Dotnetbr استفاده کنی

سلام علیکم

جونم واستون بگه که من یه دونه dll دارم که کمبو باکسی شبیه این در برنامه ایجاد می کنه واز داخلش یه دیتا گرید مانندی بیرون می آد

زیبا هست اما برق نمی زنه :قهقهه: اگه خواستی می زارم براتون

rezaei_y
سه شنبه 26 دی 1391, 18:54 عصر
توی کامپوننت دات نت بار یه کنترل به اسم highlighter که دقیقا همین کار رو انجام میده

khokhan
سه شنبه 26 دی 1391, 18:58 عصر
توی کامپوننت دات نت بار یه کنترل به اسم highlighter که دقیقا همین کار رو انجام میده

آره برین دنباله همون کامپوننت اینطوری بهتره

حمیدرضا1
سه شنبه 26 دی 1391, 18:59 عصر
دوست عزیز اگه میشه داخل ویژوال سی شارپ درست کنید.من WPF زیاد کار نکردم.ممنون.

حمیدرضا1
سه شنبه 26 دی 1391, 19:09 عصر
سلامkhokhan
اگه بزاری ممنون میشم.فقط برق زدنش یادت نره.

حمیدرضا1
سه شنبه 26 دی 1391, 19:10 عصر
سلام rezaei_y
ممنون میشم اگه توضیح بدی چطوری؟

kingtak
سه شنبه 26 دی 1391, 19:20 عصر
بفرما دوست عزیز این هم چیزی که خواستی:قلب:
منم از اون تکست باکس خیلی خوشم اومده بود واسه همین اینترنت رو زیر رو رو کردم تا پیداش کنم.
در ضمن میتونی با Expression Blend استایلشو به هر رنگی که دوست داری تغییر بدی.

98451

حمیدرضا1
سه شنبه 26 دی 1391, 20:19 عصر
بفرما دوست عزیز این هم چیزی که خواستی:قلب:
منم از اون تکست باکس خیلی خوشم اومده بود واسه همین اینترنت رو زیر رو رو کردم تا پیداش کنم.
در ضمن میتونی با Expression Blend استایلشو به هر رنگی که دوست داری تغییر بدی.

98451
ممنون دوست عزیز

hossein_va
سه شنبه 26 دی 1391, 20:23 عصر
چجوری این تکس باکس را تو برنامه ویندوز معمولی بیارم و استفاده کنم؟(از wpf بیارم به form app )

rezaei_y
چهارشنبه 27 دی 1391, 21:48 عصر
سلام rezaei_y
ممنون میشم اگه توضیح بدی چطوری؟

کامپوننت دات نت بار 10 رو دانلود کنید و به ابزار ویژوال استادیو اضافه کنید

یک کنترل textBox و یک کنترل highlighter رو فرم قرار بدید حالا کافیه خاصیت highlightOnfocuse highlighter کنترل تکس باکس رو true کنید

حمیدرضا1
پنج شنبه 28 دی 1391, 07:19 صبح
کامپوننت دات نت بار 10 رو دانلود کنید و به ابزار ویژوال استادیو اضافه کنید

یک کنترل textBox و یک کنترل highlighter رو فرم قرار بدید حالا کافیه خاصیت highlightOnfocuse highlighter کنترل تکس باکس رو true کنید
سلامrezaei_y
ممنون از کمکتون.ولی اون چیزی که من می خوام نبود.داخل wordاگه کلید کنترل و F رو بزنین یه تکست باکس درخشان میاد.من اونو میگم.بازم ممنون.

kingtak
پنج شنبه 28 دی 1391, 09:11 صبح
اگه از اون تکست باکس یه USER Control درست کنی می تونی توی برنامه ای که با winform نوشته شده استفاده کنی...:متفکر:
فقط یه کوچولو دردسر داره!
به لینک های پایین یه نگاه بکنید!

http://www.switchonthecode.com/tutorials/wpf-tutorial-using-wpf-in-winforms
http://www.codegod.com/embedding-wpf-usercontrol-in-winforms-AID422.aspx
http://www.codeproject.com/Articles/22849/Integrating-WPF-with-Windows-Forms

the king
پنج شنبه 28 دی 1391, 11:10 صبح
روتین اش رو برای کنترل های استاندارد ویندوز نوشتم، نه فقط TextBox، برای هر کنترل مستطیل شکلی جواب میده :

98523

ashkan1234
پنج شنبه 28 دی 1391, 13:01 عصر
روتین اش رو برای کنترل های استاندارد ویندوز نوشتم، نه فقط TextBox، برای هر کنترل مستطیل شکلی جواب میده :

98523

سلام کارتون فوق العاده است!
فقط اگه براتون مقدور بود یک توضیح مختصر هم در مورد کد نویسی اش بفرمایید!
چون یاد بگیریم خیلی بهتره تا رایگان استفاده کنیم(البته این نظر بنده است)

the king
پنج شنبه 28 دی 1391, 18:18 عصر
سلام کارتون فوق العاده است!
فقط اگه براتون مقدور بود یک توضیح مختصر هم در مورد کد نویسی اش بفرمایید!
چون یاد بگیریم خیلی بهتره تا رایگان استفاده کنیم(البته این نظر بنده است)

اولش چند بار از صفحه Screenshot گرفتم تا ببینم در حین نمایش اون جلوه در Microsoft Word چه اتفاقی می افته،
یک کادری دور TextBox می اندازه که به تدریج از سمت چپ وارد کادر میشه و از سمت راست خارج میشه، در همین حین
یک Gradient (طیف رنگی) روی این کادر رسم میشه که اول فکر می کردم باید ثابت باشه، اما عملا دیدم باید جابجا بشه.

یک کلاس ساختم که هر کاری که مربوط به این جلوه است اون انجام بده و در فرم اصلی هیچ چیزی جز یک نمونه شیء از این
کلاس لازم نباشه. برای تحرک جلوه نمیشد از Timer استفاده کرد، چون برای تعداد فریم های بالا دقت لازم رو نداره و کند میشه.
برای همین از BackgroundWorker استفاده کردم.

کادری که دور TextBox قرار می گیره رو طبیعتا توی خود TextBox نمی تونستم نشون بدم چون همچین قابلیتی نداره.
می بایستی یک پنجره دیگه رو روی TextBox قرار می دادم که کادر داخلش خالی باشه و TextBox از زیرش دیده بشه و
در ضمن قابل دسترسی باشه (مزاحم کار کاربر با TextBox نشه). در ضمن Focusable یا Clickable نباشه
چون اگر کاربر رویش کلیک کرد نباید Focus رویش بره یا اتفافی بیافته، طوری باشه که انگار نیست.

برای همین یک کلاس جدید ساختم که از Control ارث بری می کنه، همواره Enable اش False ئه تا تداخلی با فعالیت
کاربر نداشته باشه. برای خالی کردن داخلش یک ناحیه Region ساختم که یک کادر تو خالی است. وقتی این Region
رو به کنترل نسبت بدهید داخلش خالی میشه.

نمایش جلوه زمان دار ئه اما نباید به طول کنترل بستگی داشته باشه، چون اگه کنترل زیادی دراز یا کوتاه باشه خوب از آب در نمیاد.
برای همین یک مشخصه Percent به اون کنترل دست ساز اضافه کردم که پیشرفت جلوه رو بر حسب درصد بسنجه، نه طول کنترل.
نمایش جلوه خودش روال ساده ای داره، BackgroundWorker به تدریج از 0 درصد تا 100 درصد رو به کنترل اعلام می کنه و اون
کنترل اون طیف رنگی رو به تدریج روی خودش از سمت چپ به سمت راست حرکت میده و رسم می کنه.

وقتی متد Show اون کلاس رو اجرا می کنید، اول کنترل دست ساز من هم اندازه کنترل ای میشه که قراره جلوه رویش نشون داده بشه.
و بعد BackgroundWorker جلوه رو نشون میده و وقتی کار BackgroundWorker تموم شد مجددا اون کنترل دست ساز رو مخفی می کنه.

hamedAdmin
یک شنبه 01 بهمن 1391, 07:16 صبح
سلام
ضمن تشکر از اینکه خیلی خوب و اصولی این کدها رو زدید منتها فقط یه نظری که داشتم اینه که ای کاش خصوصیاتی مثل رنگی که میخواین گرادیانت داده بشه و تنظیمات سرعت انجامش رو هم میشد به کتد show پاس کرد تا کاربر بتونه به هررنگی و با هر سرعتی جلوه ی ویژه رو بده به کنترلش. که البته تقریبا راحت ترین قسمت کار اینه و اصل داستان رو شما انجام دادید


روتین اش رو برای کنترل های استاندارد ویندوز نوشتم، نه فقط TextBox، برای هر کنترل مستطیل شکلی جواب میده :

98523

kingtak
سه شنبه 10 بهمن 1391, 22:34 عصر
http://kingtak.persiangig.com/Programming/Project/form.jpg

با توجه به اینکه دوستان ویندوز فرمی با کنترل های WPF مشکل دارن و میخوان از کنترل های بالا تو برنامشون استفاده کنن میخوام آموزش سریع استفاده از کنترل های WPF رو آموزش بدم.
خوب اول یه پروژه Windows Form Application با نامGoldBox ایجاد می کنیم.
از منوی ُSolution Explorer روی پوشه رفرنس کلیک راست می کنیم و Add Refrence رو انتخاب می کنیم.

http://www.switchonthecode.com/sites/default/files/211/images/AddRef.png

همونطور که توی تصویر زیر می بینید توی دیالوگ باز شده "WindowsFormsIntegration" رو انتخاب می کنیم.

http://www.switchonthecode.com/sites/default/files/211/images/AddRef2.png

حالا رفرنس به پروژه اضافه شد.این رفرنس اجازه میده تا از کنترل های wpf توی برنامه مون استفاده کنیم.
حالا ما باید آیتمی از نوع( User Control(WPF به پروژمون اضافه کنیم.
پس روی پروژه کلیک راست می کنیم و از منویباز شده Add و بعد New Item.. رو انتخاب میکنیم و
از لیست باز شده ( User Control(WPF رو انتخاب می کنیم. و یک اسم براش در نظر میگیریم.که من اسمشو GoldTextBox.xaml میذارمش.

http://www.switchonthecode.com/sites/default/files/211/images/AddNewItem.png

خوب حالا من می خوام تکست باکس طلایی بالا رو توی برنامم استفاده کنم.کل کد Xaml این کنترل به صورت زیر هست:
کد xaml یوزر کنترل شما باید عین این باشه!


<UserControl x:Class="GoldBox.GoldenTextBox"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="25" d:DesignWidth="234">
<UserControl.Resources>
<Style x:Key="TextBox_Theme" TargetType="{x:Type TextBox}">
<Setter Property="AllowDrop" Value="true"/>
<Setter Property="FocusVisualStyle" Value="{x:Null}"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type TextBox}">
<ControlTemplate.Resources>
<Storyboard x:Key="Storyboard1" RepeatBehavior="Forever">
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="border" Storyboard.TargetProperty="(Border.BorderBrush).(Brush.RelativeTransform).(Tr ansformGroup.Children)[3].(TranslateTransform.X)">
<SplineDoubleKeyFrame KeyTime="00:00:00" Value="-1.051"/>
<SplineDoubleKeyFrame KeyTime="00:00:01.5000000" Value="1.036"/>
<SplineDoubleKeyFrame KeyTime="00:00:03" Value="1.036"/>
</DoubleAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="border" Storyboard.TargetProperty="(Border.BorderBrush).(Brush.RelativeTransform).(Tr ansformGroup.Children)[3].(TranslateTransform.Y)">
<SplineDoubleKeyFrame KeyTime="00:00:00" Value="-0.001"/>
<SplineDoubleKeyFrame KeyTime="00:00:01.5000000" Value="0"/>
<SplineDoubleKeyFrame KeyTime="00:00:03" Value="0"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
</ControlTemplate.Resources>
<Border x:Name="border" Width="Auto" Height="Auto" CornerRadius="0,0,0,0" BorderThickness="2" Background="White">
<Border.BorderBrush>
<LinearGradientBrush EndPoint="1.04,0.5" StartPoint="-0.01,0.5">
<LinearGradientBrush.RelativeTransform>
<TransformGroup>
<ScaleTransform CenterX="0.5" CenterY="0.5"/>
<SkewTransform CenterX="0.5" CenterY="0.5"/>
<RotateTransform CenterX="0.5" CenterY="0.5"/>
<TranslateTransform/>
</TransformGroup>
</LinearGradientBrush.RelativeTransform>
<GradientStop Color="#FFC69A00" Offset="0"/>
<GradientStop Color="White" Offset="0.7"/>
<GradientStop Color="#FFC69A00" Offset="1"/>
</LinearGradientBrush>
</Border.BorderBrush>
<Grid x:Name="grid" Background="{x:Null}">
<ScrollViewer x:Name="PART_ContentHost" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" Foreground="#FFFFFFFF" Margin="5,0,5,0" VerticalAlignment="Center"/>
</Grid>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Foreground" TargetName="PART_ContentHost" Value="#FF5B5B5B"/>
</Trigger>
<Trigger Property="IsFocused" Value="True">
<Trigger.ExitActions>
<StopStoryboard BeginStoryboardName="Storyboard1_BeginStoryboard"/>
</Trigger.ExitActions>
<Trigger.EnterActions>
<BeginStoryboard x:Name="Storyboard1_BeginStoryboard" Storyboard="{StaticResource Storyboard1}"/>
</Trigger.EnterActions>
<Setter Property="Background" TargetName="grid">
<Setter.Value>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#ffffff" Offset="0"/>
<GradientStop Color="white" Offset="0.111"/>
<GradientStop Color="white" Offset="1"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</UserControl.Resources>

<Grid x:Name="LayoutRoot">
<TextBox TextWrapping="Wrap" Style="{DynamicResource TextBox_Theme}" Foreground="#FF4C4C4C" FontFamily="Tahoma" />
</Grid>
</UserControl>


خوب حالا یه بار برنامه رو Build می کنیم!!!

بعد فرم اصلی برنامه(Form1.cs) رو انتخاب می کنیم و میریم به منوی Toolbox و از تب WPF Interopility گزینه Element Host رو انتخاب می کنیم و توی فرممون میندازیم(یا دوبار کلیک می کنیم تا به فرم اضافه بشه).

http://www.switchonthecode.com/sites/default/files/211/images/AddElHost.png

بسته به طول و عرض کنترلی که می خوام اضافه کنم اندازه این کنترل رو تنظیم می کنم.
همونطور که می بینید بالای این کنترل یه فلش کوچولو وجود داره اونو انتخاب می کنیم و طبق عکس پایین از منوی کشویی "Select Hosted Content" کنترل مورد نظر رو انتخاب می کنیم.

http://www.switchonthecode.com/sites/default/files/211/images/ElHostSet.png

می بینید که تکست باکس خوشگل من به فرمتون اضافه شد!!!!

شما میتونید با استفاده از کد پایین هر جای برنامه که خواستید این کنترل رو اضافه کنید:


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;
using System.Windows.Forms.Integration;

namespace GoldBox
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
ElementHost elhost = new ElementHost();
elhost.Size = new Size(200, 23);
elhost.Location = new Point(39, 45);

GoldenTextBox wpfctl = new GoldenTextBox();
elhost.Child = wpfctl;
this.Controls.Add(elhost);
}
}
}


همچنین این کنترل توی تولباکستون هم وجود داره که با درگ و دراپ کردن روی فرم میتونید ازش استفاده کنید.
به همین راحتی...
اگه سوالی بود من در خدمتم.
فایل پروژه خودمو هم اینجا میذارم تا اگه ایرادی داشتید نگاش کنید.
اگه هر اشتباهی تو این آموزش بود به بزرگی خودتون ببخشید.من این آموزشو از روی لینک هایی که بالا معرفی کرده بودم درست کردم.

GoldBox.zip (http://kingtak.persiangig.com/Programming/Project/GoldBox.zip)

khokhan
سه شنبه 10 بهمن 1391, 22:57 عصر
سلام علیکم

من اون عکسی رو که توپست اول دوستمون گذاشتن تبدیلش کردم به کامپوننت

همین الان می تونین از tool box اضافه کنین واستفاده کنین

خوش باشین

Mosafers
سه شنبه 10 بهمن 1391, 23:07 عصر
روتین اش رو برای کنترل های استاندارد ویندوز نوشتم، نه فقط TextBox، برای هر کنترل مستطیل شکلی جواب میده :

98523

سلام برای من بارها این خطا ایجاد شده... :ناراحت: VS2010 دارم.

قضییه این خطا چیه ؟

kingtak
سه شنبه 10 بهمن 1391, 23:14 عصر
سلام علیکم

من اون عکسی رو که توپست اول دوستمون گذاشتن تبدیلش کردم به کامپوننت

همین الان می تونین از tool box اضافه کنین واستفاده کنین

خوش باشین

این که افکت نداره!
فقط یه تکست باکس سادست؟
شما که بلدید کامپوننت درست کنید پی کنترل منو تبدیلش کند به dll و به دوستان بدید.
آخه من با winform کار نکردم

khokhan
سه شنبه 10 بهمن 1391, 23:27 عصر
سلام برای من بارها این خطا ایجاد شده... :ناراحت: VS2010 دارم.

قضییه این خطا چیه ؟
به نظرم پروژه ای رو که با ورژن متفاوت vs کار شده باز کردین "rebuild " کنین شاید درست بشه

kingtak
چهارشنبه 11 بهمن 1391, 00:03 صبح
این هم پروژه کنترل دکمه زرد رنگ.
http://kingtak.persiangig.com/Programming/Project/btnsari.jpg


http://kingtak.persiangig.com/Programming/Project/GoldenButton.zip
شما میتونید خاصیت Content رو تغییر بدید تا متن دکمه عوض بشه!

<Button Content="Click" Style="{DynamicResource Button_Theme}">

برای هر کنترل کافیه کنترل رو از پروژه WPF کپی کنید توی یوزر کنترل تا استایل و.. کپی بشه!

توی این آموزش هم میتونید از یوزر کنترلتون فایل dll درست کنید و توی همه پروژه ها استفاده کنید. (http://1mohammadi.ir/csharp/how-to-create-user-control-by-c-sharp-first-section/)


این هم کامپوننت آماده تکست باکس (http://kingtak.persiangig.com/Programming/Project/MyUserControl.dll)

Mosafers
چهارشنبه 11 بهمن 1391, 00:25 صبح
این هم پروژه کنترل دکمه زرد رنگ.
http://kingtak.persiangig.com/Programming/Project/btnsari.jpg


http://kingtak.persiangig.com/Programming/Project/GoldenButton.zip
شما میتونید خاصیت Content رو تغییر بدید تا متن دکمه عوض بشه!

<Button Content="Click" Style="{DynamicResource Button_Theme}">

برای هر کنترل کافیه کنترل رو از پروژه WPF کپی کنید توی یوزر کنترل تا استایل و.. کپی بشه!

سلام دوست خوبم میشه راهنمایی کنید من چزور باید همچین دکمه ای درست کنم ؟

خوب نیاز به کد های XAML زیادی هست که نمیشه به خاطر سپرد... اگه یک کد آماده داشته باشم چجور میتونم ازش استفاده کنم باید کجا قرارش بدم؟
بدون کد نویسی میشه همچین مثالی طراحی کرد؟

kingtak
چهارشنبه 11 بهمن 1391, 01:02 صبح
سلام دوست خوبم میشه راهنمایی کنید من چزور باید همچین دکمه ای درست کنم ؟

خوب نیاز به کد های XAML زیادی هست که نمیشه به خاطر سپرد... اگه یک کد آماده داشته باشم چجور میتونم ازش استفاده کنم باید کجا قرارش بدم؟
بدون کد نویسی میشه همچین مثالی طراحی کرد؟
خوب پروژه رو دانلود کن و فایل xaml رو نگاه کن!
اگه تاپیک رو از اول بخونی متوجه میشی!

توی پروژه ای که تو پست اولم گزاشتم همه کنترل ها هستن میتونی کدشونو ببینی!
تو پست قبلی از تکست باکس یه فایل dll درست کردم میتونی بدون کد نویسی ازش استفاده کنی!

sheibanizaveh
شنبه 26 بهمن 1392, 22:37 عصر
king عزیز سلام می خواستم منو راهنمایی کنی چجوری تو vb.net برنامه NotifyTextBox (http://barnamenevis.org/attachment.php?attachmentid=98523&d=1358410189) شما رو پیاده کنم اگه میتونی کمکم کنی خیلی ممنون میشم

Helpco
شنبه 09 مرداد 1395, 07:11 صبح
این هم پروژه کنترل دکمه زرد رنگ.
http://kingtak.persiangig.com/Programming/Project/btnsari.jpg


http://kingtak.persiangig.com/Programming/Project/GoldenButton.zip
شما میتونید خاصیت Content رو تغییر بدید تا متن دکمه عوض بشه!

<Button Content="Click" Style="{DynamicResource Button_Theme}">

برای هر کنترل کافیه کنترل رو از پروژه WPF کپی کنید توی یوزر کنترل تا استایل و.. کپی بشه!

توی این آموزش هم میتونید از یوزر کنترلتون فایل dll درست کنید و توی همه پروژه ها استفاده کنید. (http://1mohammadi.ir/csharp/how-to-create-user-control-by-c-sharp-first-section/)


این هم کامپوننت آماده تکست باکس (http://kingtak.persiangig.com/Programming/Project/MyUserControl.dll)7

این آموزش کحا هست؟