找回密码
 立即注册

QQ登录

只需一步,快速开始

roger.wang
社区贡献组   /  发表于:2013-10-28 09:59:00
11#
回复 10楼haitun1227的帖子

对不起,是C1SuperTooltip控件, 后面没有带1.

微软标准的ToolTip控件目前貌似无法做复杂的UI, 仅仅只能展示string。

建议你用C1SuperTooltip, 展示的内容比较丰富。
如果你安装了先安装VS,再安装C1 Winform, 这个是可以看见的。
如果在Toolbox没有,可通过下面的办法添加:
1 找到这个文件“C:\Program Files (x86)\ComponentOne\Studio for WinForms\bin\v4\C1.Win.C1SuperTooltip.4.dll”
2 拖动到ToolBox上面即可出现C1SuperTooltip控件。
回复 使用道具 举报
haitun1227
中级会员   /  发表于:2013-10-28 10:09:00
12#
回复 11楼roger.wang的帖子

如果我用窗体实现,我应该如何实现动态的增加控件?
回复 使用道具 举报
roger.wang
社区贡献组   /  发表于:2013-10-28 10:11:00
13#
回复 12楼haitun1227的帖子

1 new Form()
2 ShowDialog试试
回复 使用道具 举报
haitun1227
中级会员   /  发表于:2013-10-28 10:52:00
14#
this.c1FlexGrid1.HitTest().Point 这个是用来获得当前鼠标坐标点.我应该怎么加一个长度。感觉拿到的值不太对?

我用c1FlexGrid1_MouseLeaveCell事件关闭窗体,怎么没反应?我怎么觉得是先走的MouseLeaveCell事件,然后走的MouseEnterCell事件。所以窗体没有被关闭!
回复 使用道具 举报
roger.wang
社区贡献组   /  发表于:2013-10-28 11:03:00
15#
回复 14楼haitun1227的帖子

你的demo能发过来看看吗?
回复 使用道具 举报
haitun1227
中级会员   /  发表于:2013-10-28 11:27:00
16#
private void grdMei_MouseEnterCell(object sender, RowColEventArgs e)
        {
            int row = grdMei.MouseRow;
            int col = grdMei.MouseCol;
            int cellCount = 0;
            if (row > 0 && col > 0)
            {
                frmCellInfo frm = new frmCellInfo();
                cellInfo = new DataTable();
                cellInfo.Columns.Add("info");
                cellInfo.Columns.Add("color");

                //  初期化処理の場合
                if (this.colDT.Columns.Count == 0)
                {
                    cellCount = (int)FGRID.NO_25;
                }
                else
                {
                    cellCount = this.colDT.Columns.Count / 2 + 2;
                }
                for (int i = cellCount; i < this.grdMei.Cols.Count; i++)
                {
                    DataRow newRow = cellInfo.NewRow();

                    string name = this.grdMei.Cols.Caption;
                    int num = Conv.GetInt(name.Substring(2));
                    if (this.grdMei.GetData(row, i) == null)
                    {
                        newRow["info"] = num.ToString();
                        newRow["color"] = DBNull.Value;
                    }
                    else
                    {
                        newRow["info"] = num.ToString();
                        newRow["color"] = this.grdMei.GetCellStyle(row, i).BackColor;
                    }
                    cellInfo.Rows.Add(newRow);
                }
                frm.SetDT = this.cellInfo;
                frm.Location = frmMain.MousePosition;
                //frm.Location = this.grdMei.HitTest().Point;
                frm.ShowDialog();
            }
        }
   private void grdMei_MouseLeaveCell(object sender, RowColEventArgs e)
        {
            frm.Close();
        }

主要是这两个事件,你帮忙看看。工程太大了,不好发。就给你截了一部分代码
回复 使用道具 举报
roger.wang
社区贡献组   /  发表于:2013-10-28 12:27:00
17#
回复 16楼haitun1227的帖子
  1. frmCellInfo frm = null;
  2.         private void c1FlexGrid1_MouseEnterCell(object sender, C1.Win.C1FlexGrid.RowColEventArgs e)
  3.         {         
  4.             int row = e.Row;
  5.             int col = e.Col;
  6.             int cellCount = 0;
  7.             if (row &gt; 0 &amp;&amp; col &gt; 0)
  8.             {
  9.                  frm = new frmCellInfo();
  10.                
  11.                 frm.Location = this.c1FlexGrid1.HitTest().Point;
  12.                 frm.Show();
  13.             }

  14.         }

  15.         private void c1FlexGrid1_MouseLeaveCell(object sender, C1.Win.C1FlexGrid.RowColEventArgs e)
  16.         {
  17.             if (frm != null)
  18.             {
  19.                 frm.Close();   
  20.             }            

  21.                  }
复制代码



这个代码你参考一下。
不过这种解决办法效果很差,继续推荐你使用c1SuperTooltip控件。
回复 使用道具 举报
haitun1227
中级会员   /  发表于:2013-10-28 14:09:00
18#
回复 17楼roger.wang的帖子



frm的位置还是不对正确。显示一直在上面。如下图


我之前用的是frm.ShowDialog();改成frm.Show()后可没有关闭。
   private void grdMei_MouseLeaveCell(object sender, RowColEventArgs e)
        {
            if(frm != null)
            {
                frm.Close();
            }
        }

只是现在移动鼠标会出现好frm。而且都不会关闭的?只是移出flexgrd的时候就会不显示那些窗体。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
roger.wang
社区贡献组   /  发表于:2013-10-28 15:00:00
19#
回复 18楼haitun1227的帖子

我懂你的意思。
这样吧,你花几分钟时间, 单独建一个demo, 凑点数据。


我调试调试看, 上面贴的代码是可以用的啊。(原则上,每次entryCell new一个Form, 怎么可能出现很多很多个呢?)
回复 使用道具 举报
haitun1227
中级会员   /  发表于:2013-10-28 15:03:00
20#
回复 19楼roger.wang的帖子

关键是没有关闭!所以会出现很多!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部