PDA

View Full Version : سوال: من می خوام هندل تمامی ComboBox موجود در یه پنجره رو بگیرم



haghshenasmahdi
جمعه 27 آبان 1390, 16:52 عصر
با سلام
من می خوام هندل تمامی ComboBox موجود در یه پنجره رو بگیرم

من نمی دونم تو این پنجره چند تا ComboBox وجود داره و فقط می خوام هر تعدادی ComboBox وجود داره هندل تک تکشونو داخل تعدادی string بریزم

در ضمن captionهمه ی ComboBox ها ؛برابر null و class شون برابر ComboBox است


خواهش می کنم کمکم کنید مرسی:لبخندساده:

2ndesigner
جمعه 27 آبان 1390, 17:26 عصر
int i = 0;
foreach (object b in this.Controls)
{
ComboBox l=new ComboBox();
if (b.GetType() == l.GetType())
{
i++;
CMBX[i] = (ComboBox)b;

}
}


با این کار تمام combobox ها رو داخل یه آرایه از combobox اضافه می کنیم. بعد هر کاری دلت می خواد باهاشون بکن

haghshenasmahdi
جمعه 04 آذر 1390, 11:56 صبح
دوست عزیر مچکرم
فقط حالا من باید چه شکلی هندلشونو بگیرم من هندل خود اون پنجره رو دارم .حالا باید هندل بچه هاشو که همون ComboBox هست رو بگیرم
این کد منه
[/CSHARP]
IntPtr hWndopen = FindWindow(null, "Virtual CloneDrive Drive H:");
IntPtr hwndChild,hwchild2;
hwndChild = FindWindowEx(hWndopen, IntPtr.Zero, "ComboBox", null);
MessageBox.Show(""+hWndopen+" "+hwndChild);


ComboBox[] CMBX = new ComboBox[2];
string[] st = new string[2];
int i = 0;
;
foreach (object b in this.Controls)
{
ComboBox l = new ComboBox();
if (b.GetType() == l.GetType())
{
i++;



CMBX[i] = (ComboBox)b;



}

st[i]=CMBX[i].ToString();
MessageBox.Show(st[i]);
hwchild2 = FindWindowEx(hWndopen, IntPtr.Zero, st[i], null);
MessageBox.Show(""+hwchild2);

}
[CSHARP]

mohammad272005
جمعه 04 آذر 1390, 12:54 عصر
برای این منظور چند راه وجود داره که من پیشنهاد میکنم از APIِ زیر استفاده کنی. اگه موفق نشدی، بگو تا من یه sample code بنویسم:

[DllImport("user32", SetLastError = true)]
public static extern Boolean EnumChildWindows(IntPtr hWndParent, WNDENUMPROC lpEnumFunc, IntPtr lParam);
public delegate bool WNDENUMPROC(IntPtr hWnd, IntPtr lParam);

haghshenasmahdi
شنبه 12 آذر 1390, 22:37 عصر
دوست من
من موفق نشدم لطفا واسم sample code بزار
مچکرم

mohammad272005
دوشنبه 14 آذر 1390, 03:14 صبح
ببخشید که خیلی طول کشید. آخه من خیلی کم میام.
کد ضمیمه تقریبا هـــــر کاری میکنه. من این کد رو (با کمی تخلیص) در یک پروژه بزرگ استفاده کردم.
قبل از اجرا، Run رو از منوی start اجرا کنید.
موفق باشید