我引进来一些第三方的组件,但某组件的doubleclick事件中,如果我要new 一个用c#写的窗体,是没反应的,而消息框可以出来,如下:MessageBox.Show("123");//正常
StyleSelector ss1 = new StyleSelector(2);
if(ss1.ShowDialog() == DialogResult.OK)//为什么出不来窗体??
{
if(ss1.getSymbol()!=null)
   lSymbol = (ISymbol)ss1.getSymbol();
}请问这种情况如何解决?

解决方案 »

  1.   

    Messagebox是C#语法很大可能性是你的com组件调用方式不同,最好看看文档先
      

  2.   

    MessageBox.Show("123");//正常
    StyleSelector ss1 = new StyleSelector(2);
    ss1.ShowDialog();
    if(ss1.DialogResult == DialogResult.OK)//为什么出不来窗体??
    {
    if(ss1.getSymbol()!=null)
       lSymbol = (ISymbol)ss1.getSymbol();
    }
      

  3.   

    ss1.ShowDialog();单独用也是不行的。ss1.show()都没法我想知道造成这情况的原因是什么?
      

  4.   

    public void ShowStyleform() 
    {
    System.EventArgs e = new MyEventArgs("123");

    object[] pList = { this, e };
     
    //IAsyncResult fsd =  
    BeginInvoke(new MyProgressEventsHandler(UpdateUI), pList);

    } private delegate void MyProgressEventsHandler(object sender, MyEventArgs e);
     
    private void UpdateUI(object sender, MyEventArgs e) 
    {
    StyleSelector ssT = new StyleSelector(2);
    if(ssT.ShowDialog() == DialogResult.OK)
    {
    pReturnedSymbol = (ISymbol)ssT.getSymbol();
    //MessageBox.Show(pSymbol.ToString());
    }
    }然后我这样调用: MethodInvoker mi = new MethodInvoker(ShowStyleform);
    mi.BeginInvoke(null, null);

    //怎么会返回空呢?
    if(pReturnedSymbol != null)pReturnedSymbol总是空。而UpdateUI里的pReturnedSymbol不是null请问应该怎么利用返回值?
      

  5.   

    pReturnedSymbol在哪儿,怎么定义的
      

  6.   

    ISymbol类型是组件定义的类型 。。我直接引用的
      

  7.   

    这样,因为BeginInvoke是立即返回,则如果你Invoke的方法执行耗时,在你判断if(pReturnedSymbol != null)的时候还没执行完。
      

  8.   

    pReturnedSymbol = (ISymbol)ssT.getSymbol();这里是有值的阿,我那个方法不耗时怎么改进呢?
      

  9.   

    现在问题是这样:我在组件的事件里进行调用:MethodInvoker mi = new MethodInvoker(ShowStyleform);
    mi.BeginInvoke(null, null);在委托里返回的全局变量pReturnedSymbol = (ISymbol)ssT.getSymbol();,这是有值的 执行MethodInvoker后,我在组件的事件里继续判断:if(pReturnedSymbol != null),这里是null我不知道哪里出了问题。是不是因为pReturnedSymbol自身也是个com对象?这种情况该如何处理?