PDA

View Full Version : کار با UserControl



arefba
یک شنبه 11 مهر 1389, 16:41 عصر
بسمه تعالی
با سلام

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

من می خوام وقتی که در فرم اصلی برنامم از UserControl استفاده می کنم و هنگامی که تکست باکس درون UserControl رویداد textchanged رو انجام میده تمامی نوشته های درون تکست باکس UserControl به Textbox درون فرم اضافه بشه

متاسفانه هیچ راهی برای انتقال این رویداد تکست باکس در UserControl رو به فرم پیدا نکردم
کمک کنید

یه چیز دیگه و اون اینکه کسی میدونه معادل کلید اسپیس در کد نویسی چیه ؟؟

na3er-faraji
یک شنبه 11 مهر 1389, 16:46 عصر
کافیه یک پراپرتی تعریف کنید . مثلا اگه دو تا تکست باکس دارید دو تا پراپرتی تعریف میکنید. حالا تو برنامه به اون پراپرتی ها دسترسی داری. اینجا رو ببین

public string UnitName
{
get { return txtUnit.Text; }
set { txtUnit.Text = value; }
}




حالا تو برنامه txtUnit رو دسترسی داری . مقدارشو بریز تو تکست باکست.

arefba
یک شنبه 11 مهر 1389, 17:45 عصر
دوست عزیز خودتون دارید می گید پراپرتی من دارم از اونت ها حرف میزنم من می خوام یه رویداد به اونت های پنل اضافه کنم نه یه پراپرتی

na3er-faraji
یک شنبه 11 مهر 1389, 18:02 عصر
public delegate void _StuffNameChanged(object sender, EventArgs e);
public event _StuffNameChanged StuffNameChanged;


public string StuffName
{
get { return txtStuffName.Text; }
set
{
txtStuffName.Text = value;
if (this.StuffNameChanged != null)
{
StuffNameChanged(this, new EventArgs());
}
}
}

arefba
یک شنبه 11 مهر 1389, 18:10 عصر
بسمه تعالی
با سلام

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

من می خوام وقتی که در فرم اصلی برنامم از UserControl استفاده می کنم و هنگامی که تکست باکس درون UserControl رویداد textchanged رو انجام میده تمامی نوشته های درون تکست باکس UserControl به Textbox درون فرم اضافه بشه

متاسفانه هیچ راهی برای انتقال این رویداد تکست باکس در UserControl رو به فرم پیدا نکردم
کمک کنید

یه چیز دیگه و اون اینکه کسی میدونه معادل کلید اسپیس در کد نویسی چیه ؟؟

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

Reza_Yarahmadi
یک شنبه 11 مهر 1389, 18:22 عصر
توي يوزر كنترل كدهاي زير رو بنويسيد

public string Text
{
get { return textBox1.Text; }
set { textBox1.Text = value; }
}


delegate void _textChange(object sender, EventArgs e);
public event _textChange TextChange;

private void textBox1_TextChanged(object sender, EventArgs e)
{
if (this.TextChange != null)
this.TextChange(sender, e);
}
الان توي برنامه يوزر كنترل شما رويداد TextChange داره و ميتونيد به صورت زير ازش استفاده كنيد.

private void userControl11_TextChange(object sender, EventArgs e)
{
MessageBox.Show(userControl11.Text);
}

arefba
یک شنبه 11 مهر 1389, 18:44 عصر
وای وای روی این نوشته پایین

public event _textChange TextChange;
این خطا رو میده

Error 1 Inconsistent accessibility: field type 'WindowsFormsControlLibrary1.keybord._textChange' is less accessible than field 'WindowsFormsControlLibrary1.keybord.TextChange' D:\Documents and Settings\aref\My Documents\Visual Studio 2008\Projects\WindowsFormsControlLibrary1\WindowsF ormsControlLibrary1\UserControl1.cs 29 34 WindowsFormsControlLibrary1


راستی شما معادل کدی اسپیس رو نمیدونید؟؟

Reza_Yarahmadi
یک شنبه 11 مهر 1389, 18:57 عصر
اين خطا زماني اتفاق ميفته كه از يك class ، struct ، enum ، .... خصوصي (private) به عنوان ورودي يا خروجي يك متد استفاده بشه. توي كدي كه واستون گذاشتم همچين چيزي اتفاق نيفتاده ببينيد كجاي كد خودتون اين اتفاق داره ميفته.

راستی شما معادل کدی اسپیس رو نمیدونید؟؟
منظورتون رو نميفهمم! معادل از چه نظر؟ براي چه كاري؟ اگر منظورتون اسكي باشه كه با كد زير ميشه كد اسكي هر كاراكتري رو بدست آورد

(int)' '

arefba
یک شنبه 11 مهر 1389, 21:21 عصر
نه فکر نکنم
ببینید

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsControlLibrary1
{

public partial class keybord : UserControl
{




public string txttext
{
get
{
return textBox1.Text;
}
set
{
textBox1.Text = value;
}
}


public keybord()
{
InitializeComponent();
}
delegate void _textChange(object sender, EventArgs e);
public event _textChange TextChange;

private void pictureBox32_Click(object sender, EventArgs e)
{

// TextBox.MousePosition += "ا";
}

private void pictureBox46_MouseDown(object sender, MouseEventArgs e)
{
this.pictureBox46.Image = WindowsFormsControlLibrary1.Properties.Resources.s pace1;
}

private void pictureBox46_MouseUp(object sender, MouseEventArgs e)
{
this.pictureBox46.Image = WindowsFormsControlLibrary1.Properties.Resources.s pace;
}

private void pictureBox47_MouseDown(object sender, MouseEventArgs e)
{
this.pictureBox47.Image = WindowsFormsControlLibrary1.Properties.Resources.e nter;

}

private void pictureBox47_MouseUp(object sender, MouseEventArgs e)
{
this.pictureBox47.Image = WindowsFormsControlLibrary1.Properties.Resources.e nter0;
}

private void pictureBox43_MouseDown(object sender, MouseEventArgs e)
{
this.pictureBox43.Image = WindowsFormsControlLibrary1.Properties.Resources.q 1;
}

private void pictureBox43_MouseUp(object sender, MouseEventArgs e)
{
this.pictureBox43.Image = WindowsFormsControlLibrary1.Properties.Resources.q ;
}

private void pictureBox29_MouseDown(object sender, MouseEventArgs e)
{
this.pictureBox29.Image = WindowsFormsControlLibrary1.Properties.Resources.d ot1;
}

private void pictureBox29_MouseUp(object sender, MouseEventArgs e)
{
this.pictureBox29.Image = WindowsFormsControlLibrary1.Properties.Resources._ 01;
}

private void pictureBox44_MouseDown(object sender, MouseEventArgs e)
{
this.pictureBox44.Image = WindowsFormsControlLibrary1.Properties.Resources.v 1;
}

private void pictureBox44_MouseUp(object sender, MouseEventArgs e)
{
this.pictureBox44.Image = WindowsFormsControlLibrary1.Properties.Resources.v ;
}

private void pictureBox41_MouseDown(object sender, MouseEventArgs e)
{
this.pictureBox41.Image = WindowsFormsControlLibrary1.Properties.Resources.h amze1;
}

private void pictureBox41_MouseUp(object sender, MouseEventArgs e)
{
this.pictureBox41.Image = WindowsFormsControlLibrary1.Properties.Resources.h amze;
}

private void pictureBox40_MouseDown(object sender, MouseEventArgs e)
{
this.pictureBox40.Image = WindowsFormsControlLibrary1.Properties.Resources.d 1;
}

private void pictureBox40_MouseUp(object sender, MouseEventArgs e)
{
this.pictureBox40.Image = WindowsFormsControlLibrary1.Properties.Resources.d ;
}

private void pictureBox45_MouseUp(object sender, MouseEventArgs e)
{
this.pictureBox45.Image = WindowsFormsControlLibrary1.Properties.Resources.z d;
}

private void pictureBox45_MouseDown(object sender, MouseEventArgs e)
{
this.pictureBox45.Image = WindowsFormsControlLibrary1.Properties.Resources.z d1;
}

private void pictureBox42_MouseDown(object sender, MouseEventArgs e)
{
this.pictureBox42.Image = WindowsFormsControlLibrary1.Properties.Resources.r 1;
}

private void pictureBox42_MouseLeave(object sender, EventArgs e)
{
this.pictureBox42.Image = WindowsFormsControlLibrary1.Properties.Resources.r ;
}

private void pictureBox28_MouseDown(object sender, MouseEventArgs e)
{
this.pictureBox28.Image = WindowsFormsControlLibrary1.Properties.Resources.z 1;
}

private void pictureBox28_MouseUp(object sender, MouseEventArgs e)
{
this.pictureBox28.Image = WindowsFormsControlLibrary1.Properties.Resources.z ;
}

private void pictureBox39_MouseDown(object sender, MouseEventArgs e)
{
this.pictureBox39.Image = WindowsFormsControlLibrary1.Properties.Resources.t t1;
}

private void pictureBox39_MouseUp(object sender, MouseEventArgs e)
{
this.pictureBox39.Image = WindowsFormsControlLibrary1.Properties.Resources.t t0;
}

private void pictureBox38_MouseDown(object sender, MouseEventArgs e)
{
this.pictureBox38.Image = WindowsFormsControlLibrary1.Properties.Resources.z zz1;
}

private void pictureBox38_MouseUp(object sender, MouseEventArgs e)
{
this.pictureBox38.Image = WindowsFormsControlLibrary1.Properties.Resources.z zz;
}

private void pictureBox33_Click(object sender, EventArgs e)
{

}

private void pictureBox12_Click(object sender, EventArgs e)
{
SendKeys.SendWait("{BACKSPACE}");
}

private void pictureBox47_Click(object sender, EventArgs e)
{
SendKeys.SendWait("{ENTER}");
}

private void pictureBox46_Click(object sender, EventArgs e)
{
SendKeys.SendWait("{}");
}

private void pictureBox44_Click(object sender, EventArgs e)
{
textBox1.Select();
SendKeys.SendWait("{t}");
}

public void textBox1_TextChanged(object sender, EventArgs e)
{
if (this.TextChange != null)
this.TextChange(sender, e);

}


private void keybord_Load(object sender, EventArgs e)
{

}
}
}

Reza_Yarahmadi
یک شنبه 11 مهر 1389, 21:36 عصر
خب شما delegate رو بصورت private تعریف کردید! اگه اونو هم public کنید درست میشه.