-
שלום וברכה
מישהו יודע איך להוסיף תכונות לתיקיה בלי שזה ימחק את התכונות הקיימות?
זה מה שכתבתיDirectoryInfo di = Directory.CreateDirectory(path); if (checkedListBox1.CheckedItems.Count != 0) { di.Attributes = FileAttributes.Directory; if (checkedListBox1.SelectedIndex == 0) di.Attributes = FileAttributes.ReadOnly; if (checkedListBox1.SelectedIndex == 1) di.Attributes = FileAttributes.Hidden; if (checkedListBox1.SelectedIndex == 2) di.Attributes = FileAttributes.System; }
תודה רבה
-
if (checkedListBox1.SelectedIndex == 0) di.Attributes = di.Attributes | FileAttributes.ReadOnly; if (checkedListBox1.SelectedIndex == 1) di.Attributes = di.Attributes | FileAttributes.Hidden; if (checkedListBox1.SelectedIndex == 2) di.Attributes = di.Attributes | FileAttributes.System;
או יותר קצר:
if (checkedListBox1.SelectedIndex == 0) di.Attributes |= FileAttributes.ReadOnly; else if (checkedListBox1.SelectedIndex == 1) di.Attributes |= FileAttributes.Hidden; else if (checkedListBox1.SelectedIndex == 2) di.Attributes |= FileAttributes.System;
הוספתי else לקוד סתם כחינוך על הדרך.
בהצלחה! -
If the SelectionMode property of the ListBox is set to either SelectionMode.MultiSimple or SelectionMode.MultiExtended (which indicates a multiple-selection ListBox) and multiple items are selected in the list, this property can return the index to any selected item.
To retrieve a collection containing the indexes of all selected items in a multiple-selection ListBox, use the SelectedIndices property. If you want to obtain the item that is currently selected in the ListBox, use the SelectedItem property. In addition, you can use the SelectedItems property to obtain all the selected items in a multiple-selection ListBox.
ובעברית פשוטה, "אם אפשרת בחירות מרובות אתה אמור להשתמש ב-
SelectedIndices
(מחזיר אוסף של מספרים) או ב-SelectedItems
(מחזיר אוסף של פריטים), ולא להשתמש ב-SelectedIndex
-
@yossiz הוא משתמש בCheckedListBox
@נ-נח כפי ש@yossiz אמר הבעיה היא שאתה לא יודע איך לבדוק מה בחור.
הדרך לגשת לפריטים הבחורים בCheckedListBox היא או ע"י CheckedIndices (אינדקסי מיקום) או ע"י CheckedItems (הפריטים עצמם).
אתה אמור לכתוב משהו כזה:di.Attributes = FileAttributes.Directory; foreach (var element in checkedListBox1.CheckedItems) { if (element == "תיקיה לקריאה בלבד") di.Attributes = FileAttributes.ReadOnly; else if (element == "תיקיה מוסתרת") di.Attributes = FileAttributes.Hidden; else if (element == "תיקיית מערכת") di.Attributes = FileAttributes.System; }
זה לא הכי חכם, אבל זה כנראה יעבוד.
-
@clickone
א. אני לא כתבתי את הקוד, הוספתי מילה רק כדי שהוא ייחשב לתקין
ב. בהחלט הייתי בוחר בif.
ראשית, בגלל שזה רק שלושה אפשרויות.
הקוד קומפליט לא כותב מתי זה מתחיל להיות כבד להשתמש בswitch
אבל ברור לכולנו שלשני שורות זה מפגר, אז תרחיב את זה לארבע...
שנית, אני לא אוהב את הswitch של c# בגלל המילה break
מתי אני כן משתמש בו? כשיש מצב של כמה תנאים נכונים או כשיש ביצוע זהה לכמה תנאים (במקום הרבה || אז עושים switch ללא break). היום שכללו מאוד את הswitch והוא הדרך הכי אלגנטית בבדיקת טיפוסים ועוד, אבל לא התרגלתי אליו עדיין. -