为什么dgv控件单元格的value值改变了,但是表格显示的数据还是没有更新

年轻的程序员小唐 2019-10-10 02:50:02
主窗体的代码:Form1

private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
{
if (tabControl1.SelectedTab.Name.Contains("组呼列表"))
{
FormCallGroup FCG = new FormCallGroup(dataApplication,tabControl1.SelectedTab.Name);//我想通过重载使得切换页面的时候表格数据一直更新
FCG.loadForm();

}
}


子窗体FormCallGroup的代码


public FormCallGroup(DataApplication data,string key)
{
InitializeComponent();
dataCallGroup = data.dicCG[key];
if (FormLinker.datalinker != null)
{
for (int i = 0; i < FormLinker.datalinker.dataLinker.Count; i++)
{ datalinker.Add(FormLinker.datalinker.dataLinker[i].Linker_name); }
}
numberA = datalinker.Count;
//FormCallGroup窗体的初始化,载入一些数据和表格初始化
if (dgv_member.Rows.Count == 0)
{
for (int i = 0; i < 14; i++)
{ dgv_available.Rows.Add(new DataGridViewRow()); }
}
if (dgv_member.Rows.Count == 0)
{
for (int i = 0; i < 14; i++)
{ dgv_member.Rows.Add(new DataGridViewRow()); }
}
dgv_available.ClearSelection();
dgv_member.ClearSelection();
dgv_available.RowStateChanged += new DataGridViewRowStateChangedEventHandler(handleRowState);
loadData();
}



public void FormCallGroup_Load(object sender, EventArgs e)
{
if (FormLinker.datalinker != null && datalinker.Count!=0)
{
dgv_available.Enabled = true;
for (int i = 0; i < datalinker.Count; i++)
{
if (dgv_available.Rows[i].Cells[0] != null)
{
dgv_available.Rows[i].ReadOnly = false;
dgv_available.Rows[i].Selected = false;
}
}
}
else
{ dgv_available.Enabled = false; }
//当数据为空时表格不可操作
if(dataCallGroup!=null&&dataCallGroup.Count!=0)
{
dgv_member.Enabled = true;
for (int i = 0; i < datalinker.Count; i++)
{
if (dgv_member.Rows[i].Cells[0] != null)
{
dgv_member.Rows[i].ReadOnly = false;
dgv_member.Rows[i].Selected = false;
}
}
}
else
{ dgv_member.Enabled = false; }

}



private void loadData()
{
if (datalinker.Count > 0)
{
for (int i = 0; i < datalinker.Count; i++)
{
dgv_available.Rows[i].Cells[0].Value = datalinker[i];
}
}
//单元格赋值
if (dataCallGroup.Count > 0 && dataCallGroup!=null)
{
for (int i = 0; i < dataCallGroup.Count; i++)
{
dgv_member.Rows[i].Cells[0].Value = i + 1;
dgv_member.Rows[i].Cells[1].Value = dataCallGroup[i].Linker_name;
}
}
}


public void loadForm()
{
List<string> datalinker = new List<string>();
List<string> datacallgroup = new List<string>();
if (dataCallGroup == null || dataCallGroup.Count == 0)
{ }
else
{
for (int i = 0; i < dataCallGroup.Count; i++)
{
datacallgroup.Add(dataCallGroup[i].Linker_name);
}
}
if (FormLinker.datalinker != null)
{
for (int i = 0; i < FormLinker.datalinker.dataLinker.Count; i++)
{ datalinker.Add(FormLinker.datalinker.dataLinker[i].Linker_name); }
for (int i = 0; i < datalinker.Count; i++)
{
for (int j = 0; j < datacallgroup.Count; j++)
{
if (datalinker[i] == datacallgroup[j])
{ datalinker.RemoveAt(i); }
}
}
}
//切换页面时做的一些数据处理,让数据在原有数据的基础上更新
numberA = datalinker.Count;
loadData();

}


我做的是这样的,在主窗体Form1中有一个tabcontrol里面存放着两种窗体Formlinker和FormCallGroup
其中Formlinker内的数据更新时,FormCallGroup的数据也要跟着刷新,附图


Formlinker.数字联系人=FormCallGroup.可用的+FormCallGroup.成员

然后我代码这样子写,只有当tabpage被新建出来的时候FormCallGroup.可用的表的数据才会刷新
但是我监控的时候看到表的Value是有被赋值的这是为什么
...全文
288 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
不好意思我忘记写tabControl1.SelectedTab.Controls.clear()了
  • 打赏
  • 举报
回复
引用 3 楼 Bridge_go 的回复:
你这个事件 tabControl1_SelectedIndexChanged 不是每次切换选项卡都会创建一个 FormCallGroup;
还有你这 FormCallGroup好像没有show出来吧

FormCallGroup FCG = new FormCallGroup(dataApplication,tabControl1.SelectedTab.Name);
FCG.loadForm();
FCG.FormBorderStyle=System.Windows.Forms.FormBorderStyle.None;
FCG.TopLevel = false;
FCG.Dock = DockStyle.Fill;
FCG.Show();
tabControl1.SelectedTab.Controls.Add(FCG);

不知道是不是我代码写错,这个tabpage页面还是没有更新,然后我把其他代码屏蔽了就保留FCG.Show();,看到FCG窗体里的数据确实是更新的但是却没在tabpage里显示出来,是不是被覆盖掉了
Bridge_go 2019-10-10
  • 打赏
  • 举报
回复
类似这样的
            Form2 f2 = new Form2();
            f2.TopLevel = false;
            f2.Show();
            this.tabPage1.Controls.Add(f2);
  • 打赏
  • 举报
回复
引用 3 楼 Bridge_go 的回复:
你这个事件 tabControl1_SelectedIndexChanged 不是每次切换选项卡都会创建一个 FormCallGroup;
还有你这 FormCallGroup好像没有show出来吧

有道理!!!,那怎么把这个窗体Show在tabpage里呢
Bridge_go 2019-10-10
  • 打赏
  • 举报
回复
你这个事件 tabControl1_SelectedIndexChanged 不是每次切换选项卡都会创建一个 FormCallGroup; 还有你这 FormCallGroup好像没有show出来吧
  • 打赏
  • 举报
回复
难道说我实际上并没有改变tabpage中的form的值,而是另外重载了一个form,那么我要如何取得这个tabpage下的form呢
  • 打赏
  • 举报
回复
大概意思就是,我监控的时候看到表格单元格的value被赋值了但是表格并没有刷新这是为啥

111,097

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧