none
關於BindingNavigatorDeleteItem如何取消刪除 RRS feed

  • 問題

  • 各位前輩

     

    以下為BindingNavigatorDeleteItem 刪除按鈕,我希望在刪除前可以做確認,但找不到方法。

     

     

    Private Sub BindingNavigatorDeleteItem_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BindingNavigatorDeleteItem.Click

     

          If MsgBox("確定要刪除這台登錄的電腦嗎? ", MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then
               RegUserBindingNavigatorSaveItem_Click_1(sender, e)
          Else
               這裡找不到方法可以取消。

         End If

    End Sub

     

    麻煩一下了,謝謝

     

     

    2007年10月23日 上午 09:08

解答

  • 哈....剛剛講太快了...什麼東西都想給 e.Cancel = true;

     

     

    (1) 先把 xxxBindingNavigator 的 DeleteItem 設定為 "無"

     

    (2) 處理 xxxBindingNavigatorDeleteItem_Click 的事件....

     

    如果,DialogResult.OK 就呼叫 xxxBindingSource.RemoveCurrent();

    反之, do nothing

     

    2007年10月23日 上午 10:12

所有回覆

  • 試試看 e.Cancel = True 

     

    2007年10月23日 上午 09:26
  •  

    之前試過,cancel並不是這個類別的成員

    說明文件

     

    如果設定時,這個屬性會為 [刪除] 按鈕產生 Click 事件處理常式。在執行階段按下 [刪除] 按鈕時,此事件處理常式會呼叫 RemoveCurrent 方法。

    如果先前未設定,而且存取是在隱含或明確呼叫 AddStandardItems 方法之前,這個屬性就會是 Null 參照 (即 Visual Basic 中的 Nothing)。

    BindingNavigator 控制項將會在下列執行階段情況下停用 [刪除] 按鈕:BindingSource 屬性為 Null 參照 (即 Visual Basic 中的 Nothing)、Count 屬性為 0 或 AllowRemove 屬性為 false

     

    只有上面幾種狀況會無效,沒說要怎麼取消

    在程式碼內即使我沒執行 RegUserBindingNavigatorSaveItem_Click_1(sender, e) 這一行

    但 Datagridview內的欄位一樣不見了

     

     

     

     

     

    2007年10月23日 上午 09:36
  • 哈....剛剛講太快了...什麼東西都想給 e.Cancel = true;

     

     

    (1) 先把 xxxBindingNavigator 的 DeleteItem 設定為 "無"

     

    (2) 處理 xxxBindingNavigatorDeleteItem_Click 的事件....

     

    如果,DialogResult.OK 就呼叫 xxxBindingSource.RemoveCurrent();

    反之, do nothing

     

    2007年10月23日 上午 10:12
  •  

    哈 ! 感溫吶!

     

    有時候一點通就會通很多。

     

    鑽半天牛角尖,大大一解釋許多疑點都一起解決了!

     

    就這麼簡單的概念竟然鑽半天牛角尖

     

    再次的感謝感謝!

     

    謝謝!

     

    2007年10月23日 下午 01:25
  • 请教一下,第一步的“先把 xxxBindingNavigator 的 DeleteItem 設定為 "無"”代码应该怎么做?

    另外,如下:

     private void bindingNavigatorDeleteItem1_Click(object sender, EventArgs e)
            {
                
                 bindingNavigator1.DeleteItem  = null; //??????
              
                if (MessageBox.Show("确认删除当前记录?删除后不可恢复。", "确认删除", MessageBoxButtons.YesNo) == DialogResult.Yes)
                {
                    bindingNavigator1.BindingSource.RemoveCurrent();
                }
               

            }

    代码中的MessageBox.Show执行的时候,无论按的按钮是什么,都导致删除发生。

     

    2008年1月8日 下午 04:28
  • 試試看...
     
     
    程式碼區塊
    private DataSet ds = new DataSet();
    private BindingSource bs = new BindingSource();
     
    private void Form1_Load(object sender, EventArgs e)
    {
        string strConn = @"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\NORTHWND.MDF;Integrated Security=True;";
        SqlConnection conn = new SqlConnection(strConn);
        SqlCommand cmd = new SqlCommand("SELECT * FROM Orders", conn);
        SqlDataAdapter da = new SqlDataAdapter(cmd);
     
        da.Fill(ds);
        bs.DataSource = ds.Tables[0];
        dataGridView1.DataSource = bs;
        bindingNavigator1.BindingSource = bs;
        bindingNavigator1.DeleteItem = null;
    }
     
    private void bindingNavigatorDeleteItem_Click(object sender, EventArgs e)
    {
        if (MessageBox.Show("确认删除当前记录?删除后不可恢复。", "确认删除", MessageBoxButtons.YesNo) == DialogResult.Yes)
        {
            bindingNavigator1.BindingSource.RemoveCurrent();
        }
    }
     

     

     

    2008年1月8日 下午 04:43