2

チェックされた各項目を処理した後で項目のチェックを外そうとしていcheckboxlistますが、これを行う方法がわかりません。

コードの基本的な概要

string selectedNote="";
foreach (object itemChecked in chkbxSnVisits.CheckedItems)
{
DataRowView drView = itemChecked as DataRowView;
selectedNote = drView["id"].ToString() + " -- " + drView["visit"].ToString();

//do a bunch of stuff
//uncheck itemChecked
}
4

3 に答える 3

4

やや似ていますが、

   foreach (int i in chkbxSnVisits.CheckedIndices)
        {
            chkbxSnVisits.SetItemCheckState(i, CheckState.Unchecked);
        }
于 2013-01-18T20:50:50.137 に答える
1

私のやり方は

ChechkBoxList chklist;
var chkListCheck = from ListItem item from chklist.Items where item.selected select item;

foreach(ListItem item in chkListCheck ){
item.selected = false;
}

CheckBoxList オブジェクトの CheckedItem プロパティについては知りませんでしたが、これを維持するには、次のようにします。

foreach(ListItem item in chkListCheck.CheckedItems){
item.selected = false;
}
于 2013-01-18T21:46:52.380 に答える
0

async/awaitプログラムを書きやすくし、面倒なInvoke呼び出しを一切行わずに UI を簡単に更新できるようにするために使用する必要があります。

この例をチェックしてください:

async void runCheckedTasks_Click(object sender, EventArgs e)
{
  var button = sender as Button;
  if (button == null) return;

  checkListBox.Enabled = false;
  button.Enabled = false;
  button.Text = "Running...";

  var items = checkListBox.CheckedIndices;
  await DoCheckedTasks(items);

  checkListBox.Enabled = true;
  button.Enabled = true;
  button.Text = "Go!";
}

async Task DoCheckedTasks(CheckedListBox.CheckedIndexCollection indicies)
{
  foreach (int i in indicies)
  {
    // Here you cast to whatever type you are storing in the CheckListBox.
    // I am only using strings like 'First Task', 'Second Task', ...
    var item = checkListBox.Items[i] as string;

    checkListBox.Items[i] = string.Format("Processing {0}...", item);
    checkListBox.SetItemCheckState(i, CheckState.Indeterminate);

    var result = await DoTask(i);

    if(!result)
      checkListBox.Items[i] = string.Format("{0} Failed!", item);
    else
      checkListBox.Items[i] = string.Format("{0} Successful!", item);

    checkListBox.SetItemCheckState(i, CheckState.Unchecked);
  }
}

async Task<bool> DoTask(int index)
{
  var rand = new Random();

  await Task.Delay(3000); // Fake Delay to simulate processing

  var d20 = rand.Next(0, 20) + 1; // Roll a d20, >=10 to pass
  return d20 >= 10;
}
于 2013-01-18T21:07:00.837 に答える