PDA

View Full Version : دو پراپرتی که ComboBox ندارد.



رضا عربلو
شنبه 18 تیر 1384, 23:55 عصر
این ComboBox دو ایراد خیلی واضع دارد که بعید است مایکروسافت ندیده باشد.
1 - مانند TextBox پراپرتی BorserStyle ندارد.
2 - همانند TextBox پراپرتی ReadOnly ندارد. که من برای رفع این مشکل دومی ، خودم یک پراپرتی Readonly به آن اضافه کرده ام و در اونت Enter آن در صورت ReadOnly بودن کمبو باکس، Enabled آنرا false و سپس true می کنم. البته هنوز این روش یک مشکل دارد و آن اینکه کاربر از طریق گزینه های ContextMenu می تواند مقدار داخل ComboBox را تغییر دهد.

سوالها
1 - روشهای پیشنهادی شما
2- آیا ComboBoxی سراغ دارید که این دو پراپرتی را داشته باشد و با RightToLeftهم مشکل نداشته باشد.

PalizeSoftware
یک شنبه 19 تیر 1384, 00:15 صبح
دوست عزیز برای تغییر ظاهر ComboBox از تابع API به نام SetWidowLong استفاده کن که تا حدودی قابلیت تغییر استیل را می‌دهد.

ali.alaee
چهارشنبه 22 تیر 1384, 15:07 عصر
برای Readonly کردن نیز یک پروپرتی وجود دارد

ali_firouz_ir
یک شنبه 09 مرداد 1384, 00:56 صبح
خوب معلومه باید از خصوصیت dropdwon استفاده کنی تا کاربر نتونه text و تغییر بده

رضا عربلو
یک شنبه 09 مرداد 1384, 20:01 عصر
یک ComboBox و یک Button بر روی یک فرم قرار دهید و کد زیر را بنویسید.




[System.Runtime.InteropServices.StructLayout(System .Runtime.InteropServices.LayoutKind.Sequential)]

publicstruct RECT

{

publicint Left;

publicint Top;

publicint Right;

publicint Bottom;

}

[System.Runtime.InteropServices.StructLayout(System .Runtime.InteropServices.LayoutKind.Sequential)]

publicstruct COMBOBOXINFO

{

publicint cbSize;

public RECT rcItem;

public RECT rcButton;

public IntPtr stateButton;

public IntPtr hwndCombo;

public IntPtr hwndEdit;

public IntPtr hwndList;

}

private COMBOBOXINFO cbi;

[System.Runtime.InteropServices.DllImport("user32")]

publicstaticexternbool GetComboBoxInfo(IntPtr hwndCombo, ref COMBOBOXINFO info);

privatevoid button1_Click(object sender, System.EventArgs e)

{

this.cbi = new COMBOBOXINFO();

this.cbi.cbSize = System.Runtime.InteropServices.Marshal.SizeOf(this .cbi);

GetComboBoxInfo(comboBox1.Handle, refthis.cbi);



System.Windows.Forms.TextBox t1 =

(System.Windows.Forms.TextBox)System.Windows.Forms .TextBox.FromHandle(cbi.hwndEdit);

t1.ReadOnly = true;

}



اشکال در کجاست؟