<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      現(xiàn)有一dll文件MyDll.dll,里邊封裝了一窗口FormA,現(xiàn)通過FormB調(diào)用MyDll.dll中的FormA窗口,傳入?yún)?shù)并獲取到FormA的返回值(通過FormA中的按鈕觸發(fā),通過FormB中的委托方法實現(xiàn)返回值)

      1.MyDll.dll文件中的FormA方法

        定義委托方法和該委托的事件  

          public delegate void frmProcessDoubleClick(string selectdValue,string selectedLabel);

          public event frmProcessDoubleClick ClickMethod;

        窗體重構(gòu)函數(shù)中增加參數(shù)獲取FormB傳的參數(shù)

          方式一,string[]字符串?dāng)?shù)組

            public MultiSelectForm(string[] args)
            {
                InitializeComponent();
                MessageBox.Show(args[0]);
            }

          方式二,定義通用類作為參數(shù)傳值

        public MultiSelectForm(LovFormExParameter args)
        {
            InitializeComponent();
            var sql = args.sql;
      }

      按鈕調(diào)用事件返回值

       ClickMethod(“123“, ”一,二,三“);

       

      2.FormB中調(diào)用MyDll.dll中的FormA,并傳入?yún)?shù)

                          if (File.Exists(Mes.Core.Config.ApplicationConfig.getProperty("ApplicationRootPath") + "\\" + "MyDll.dll"))
                          {
                              Assembly assembly = Assembly.LoadFrom(Mes.Core.Config.ApplicationConfig.getProperty("ApplicationRootPath") + "\\" + ”MyDll.dll“);
                              //var MultiSelectType = assembly.GetTypes().FirstOrDefault(m => m.Name.Equals("FormA"));
      
                    //方式一:字符串?dāng)?shù)組傳值
      //string[] entity = new string[]{"123ujhfjojfofr","abc","sss"};
                    
      // var form = aa[2].GetConstructor(new Type[] { typeof(string[]) });
            
                    //方式二:通用類作為參數(shù)傳值  
                              MyClass entity= new MyClass();
                              enetity.Sql = @"select * from  t where 1 = 1";
                                   var asstype = assembly.GetType("MyDll.FormA");
                              var form = asstype.GetConstructor(new Type[] { typeof(MyClass) });
      
                              var func = asstype.GetEvents().FirstOrDefault(m => m.Name.Equals("ClickMethod"));
                              var type = asstype.GetNestedType("frmProcessDoubleClick");
                              var del = Delegate.CreateDelegate(type, this, "MultiSelectReturn");
                              
                              Form myForm = (Form)form.Invoke(new object[] { lfItem });
                              func.AddEventHandler(myForm, del);
                              myForm.Owner = this;
                              myForm.ShowDialog();
                          }
                          else
                          {
                              MessageBox.Show("缺少M(fèi)yDll.dll文件!請聯(lián)系管理員解決");
                          }

      MultiSelectReturn方法獲取到返回值

            private void MultiSelectReturn(string selectdValue, string selectedLabel)
            {
                MessageBox.Show(selectdValue + "::" + selectedLabel );
      
            }

       

      3.數(shù)據(jù)庫中存儲的時,為分隔符的編碼,查詢出,為分割符的名稱

          封裝fn_split 函數(shù),獲取分隔符中的每個字符串

       1 CREATE OR REPLACE FUNCTION fn_split (p_str IN VARCHAR2, p_delimiter IN VARCHAR2)
       2   RETURN ty_str_split
       3 --分割函數(shù)
       4 -- 新建前要先建立ty_str_split 執(zhí)行語句為:CREATE OR REPLACE TYPE ty_str_split IS TABLE OF VARCHAR2 (4000);
       5 IS
       6   j INT := 0;
       7   i INT := 1;
       8   len INT := 0;
       9   len1 INT := 0;
      10   str VARCHAR2 (4000);
      11   str_split ty_str_split := ty_str_split ();
      12 BEGIN
      13   len := LENGTH (p_str);
      14   len1 := LENGTH (p_delimiter);
      15   WHILE j < len
      16   LOOP
      17     j := INSTR (p_str, p_delimiter, i);
      18     IF j = 0
      19     THEN
      20         j := len;
      21         str := SUBSTR (p_str, i);
      22         str_split.EXTEND;
      23         str_split (str_split.COUNT) := str;
      24         IF i >= len
      25         THEN
      26           EXIT;
      27         END IF;
      28     ELSE
      29         str := SUBSTR (p_str, i, j - i);
      30         i := j + len1;
      31         str_split.EXTEND;
      32         str_split (str_split.COUNT) := str;
      33     END IF;
      34   END LOOP;
      35   RETURN str_split;
      36 END fn_split;

      使用方法:

       1 -- 使用方式
       2 
       3 select * from table(fn_split('1,2',','))
       4 select COLUMN_VALUE from table(fn_split('1,2',','))
       5 
       6 -- 在存儲過程中的使用
       7 IS
       8   S_AAC001   SPLIT_ARRAY := SPLIT_ARRAY();
       9   V_CALLBACK VARCHAR2(1000);
      10   XCOUNT     NUMBER;
      11 BEGIN
      12 V_CALLBACK := REPLACE(P_AAC001S, '"', '');
      13 S_AAC001 := F_SPLIT(V_CALLBACK, ',');
      14 
      15 SELECT ((LENGTH(V_CALLBACK) - LENGTH(REPLACE(V_CALLBACK, ','))) /
      16 LENGTH(','))
      17 INTO XCOUNT
      18 FROM DUAL;
      19 
      20 FOR I IN 0 .. XCOUNT - 1 LOOP
      21   SELECT a
      22     INTO a
      23     FROM t_a
      24     WHERE a = S_AAC001(I + 1);
      25 END LOOP;
      26 
      27 EXCEPTION
      28 WHEN OTHERS THEN
      29 --ROLLBACK;
      30 PRM_APPCODE := -1;
      31 PRM_ERRORMSG := '過程執(zhí)行失敗!錯誤信息:' || SQLERRM;
      32 END;

       

      posted on 2024-12-31 14:49  江漁湖  閱讀(109)  評論(0)    收藏  舉報

      主站蜘蛛池模板: 免费无码观看的AV在线播放| 不卡AV中文字幕手机看| 日韩区二区三区中文字幕| 国产真实伦在线观看视频| 亚洲国产激情一区二区三区| 久久精品国产一区二区蜜芽| 青青草无码免费一二三区| 国产毛片欧美毛片久久久| 99久久精品国产熟女拳交| 昌平区| 亚洲高清 一区二区三区| 亚洲国产精品一区二区第一页| 亚洲最大日韩精品一区| 日本大片在线看黄a∨免费| 房东老头揉捏吃我奶头影片| 91高清免费国产自产拍| 丰满人妻被黑人猛烈进入| 内射极品少妇xxxxxhd| 亚洲人成在线观看| 国产高清视频一区二区三区| 男人的天堂av社区在线| 婷婷色香五月综合缴缴情香蕉| 国产久爱免费精品视频| 亚洲黄色性视频| 亚洲国产精品综合久久网络| 欧美色aⅴ欧美综合色| 亚洲狼人久久伊人久久伊| 国色天香成人一区二区 | 亚洲情A成黄在线观看动漫尤物| 亚洲精品国产一二三区| 成年女人片免费视频播放A| 在线综合亚洲欧洲综合网站| 国产日产欧产系列| 国产永久免费高清在线观看| 亚洲日韩欧洲乱码av夜夜摸| 亚洲精品第一区二区在线| 成人亚欧欧美激情在线观看| 国产成人无码免费看视频软件| 强伦人妻一区二区三区| 国产精品沙发午睡系列990531| 国产精品一区二区三区三级|