javascript中有 事件="javascript:alert('message'); alert('message2')",很简洁。
C#能不能实现?如:
Timer1.Tick+= new ... 可不可以写成:Timer1.Tick=new diget({MessageBox.Show("message"); MessageBox.Show("message2"); });

解决方案 »

  1.   

    就是像下面这样的,但不会弄。System.Threading.Thread pingThread = new System.Threading.Thread(
      delegate()
      {
        try
        {
          socket.Connect(ipEndPoint);
        }
        catch (Exception ex)
        {
          pingException = ex;
        }
      });
      

  2.   

    很多事我想延时执行,比如:窗体打开后改变其控件语言、主表显示后再sleep显示明细表、员工信息显示后wait调出员工相片。其实这些用线程来实现更确切,但我一直用Timer来实现。
    Timer只有维一一个事件(Tick),为了简化操作我想把Timer变为动态创建并把这个事件放在Timer定义时:
    void BindEmplory(empID)
    {
      dataPanelEmplory.datasource = getBindingsourceEmplory(empID);
      Timer tmr = new Timer();
      tmr.Intv = 1000;
      tmr.OnTimer = new timerevent(
        delegate()
        {
           tmr.enable = false;
           picEmplory.image = getPicEmplory(empID);
           tmr.destory();
        });
    }
      

  3.   

    匿名函数(代理),试出来了。
            void BindHdrGrid()
            {
                if (tvFid.SelectedNode == null) return;
                TreeNode node = tvFid.SelectedNode;
                if (node.Tag == null) return;
                myCodeInfo info = node.Tag as myCodeInfo;
                BindHdrGrid(info.MID, info.ID, true);
            }
            //void BindHdrGrid(Guid mid, Guid fid) { BindHdrGrid(mid, fid, false); }
            void BindHdrGrid(Guid mid, Guid fid, bool bDoIt)
            {
                if (!bDoIt)
                {
                    Timer tmr = hdrGrid.myTempTimer;
                    if (tmr.Tag == null) //[null, string, HashTable]
                    {
                        tmr.Tag = "Timer init"; tmr.Interval = 500;
                        tmr.Tick += new EventHandler(delegate(object sender, EventArgs e)
                        {
                            (sender as Timer).Enabled = false;
                            Hashtable htTmr = (sender as Timer).Tag as Hashtable;
                            BindHdrGrid(new Guid(htTmr["MID"].ToString()), new Guid(htTmr["FID"].ToString()), true);
                        });
                    }                Hashtable ht = new Hashtable();
                    ht.Add("MID", mid.ToString());
                    ht.Add("FID", fid.ToString());
                    tmr.Tag = ht;
                    tmr.Enabled = false; tmr.Enabled = true;
                    return;
                }            myGrid dg = hdrGrid;            //Init
                if (dg.DataSource == null)
                {
    ...(开始BindGrid)
      

  4.   

    当表新增行时也可以这样写:
                dg.myTempDataTable = blTree.GetListByMidFidAll_(mid, fid); dg.myTempBindingSource.DataSource = dg.myTempDataTable;
                //dg.myTempDataTable.TableNewRow += new DataTableNewRowEventHandler(hdrGrid_myTempDataTable_TableNewRow);
                dg.myTempDataTable.TableNewRow += new DataTableNewRowEventHandler(delegate(object sender, DataTableNewRowEventArgs e)
                {
                    if (lstGrid.myTempBindingSource.Count > 0)
                    {
                        DataRowView drv = lstGrid.myTempBindingSource.Current as DataRowView;
                        e.Row["MID"] = drv["ID"];
                        e.Row["SP"] = "";
                        e.Row["FID"] = fid; //myCommon.myEmptyID; //@@@
                        e.Row["ID"] = Guid.NewGuid();
                        e.Row["ST"] = 1;
                        e.Row["IS_GRP"] = 0;
                        e.Row["CR_DT"] = DateTime.Now;
                        e.Row["OD"] = ((hdrGrid.myTempBindingSource.Count + 1) * 100).ToString().PadLeft(5).Replace(" ", "0");
                    }
                });