Timer C# 问题

flowerjack 2010-06-03 11:27:06
嗯,我在一个Form里面加了一个Timer,让它每隔1秒就把一个Label的信息更新一次;可每次更新时,会把我的另一个控件(一个panel)的strollbar弄回到最开头的地方,强制弄回.有什么办法可以不让它这样呢?
各位大侠帮忙解答一下,小弟在此谢过啦
...全文
436 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
flowerjack 2010-06-08
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 xdbjzhhh 的回复:]
panel 和 lable是什么关系,同一updatepanel下?
是的话说明是那一块刷新了,panel肯定就初始化了
[/Quote]

要刷新的label和panel只是在同一个窗体内而已,没有什么特别的关系
而且我可以肯定在Timer内是没有更新panel的.
「已注销」 2010-06-08
  • 打赏
  • 举报
回复
其它原因不好猜
「已注销」 2010-06-08
  • 打赏
  • 举报
回复
panel 和 lable是什么关系,同一updatepanel下?
是的话说明是那一块刷新了,panel肯定就初始化了

flowerjack 2010-06-07
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 hellosm 的回复:]
引用 18 楼 flowerjack 的回复:
引用 14 楼 hellosm 的回复:
照你这么说,只能给panel的strollbar的位置重新赋值了吧


嗯,你这个方法我试过了,但还是不行.代码如下
int X_Value;
int Y_Value;
X_Value = panel1.HorizontalScroll.Value;
Y_Value = panel1.Ver……
[/Quote]

嗯,谢谢你的提醒.但我是放在Timer事件里面来做的
hellosm 2010-06-07
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 flowerjack 的回复:]
引用 14 楼 hellosm 的回复:
照你这么说,只能给panel的strollbar的位置重新赋值了吧


嗯,你这个方法我试过了,但还是不行.代码如下
int X_Value;
int Y_Value;
X_Value = panel1.HorizontalScroll.Value;
Y_Value = panel1.VerticalScroll.Value;
……
[/Quote]

X_Value = panel1.HorizontalScroll.Value;
Y_Value = panel1.VerticalScroll.Value;

获取 X_Value、Y_Value 的值应该在Timer事件外吧,赋值在时间内

光看你这段代码不知道是不是,呵呵。。。
flowerjacky 2010-06-04
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 flowerjack 的回复:]
思源大哥,重名会出问题吗?我之前对上面这些代码就存在疑问,感觉和面向对象的思想有点冲突;只是一直没解决。可以的话,给小弟解释一下
[/Quote]

说说我的理解:因为虽然你对那些对象还有引用(control加给了panel)但循环那么多次,有那么多个重名的,为什么还可以执行下来呢?对此,我一直都很奇怪,也一直在找办法弄懂它。
flowerjacky 2010-06-04
  • 打赏
  • 举报
回复
同一用户只能连续回复三次
flowerjack 2010-06-04
  • 打赏
  • 举报
回复
思源大哥,重名会出问题吗?我之前对上面这些代码就存在疑问,感觉和面向对象的思想有点冲突;只是一直没解决。可以的话,给小弟解释一下
flowerjack 2010-06-04
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 flowerjack 的回复:]
to 思源

上面贴得太长了,剪切一下
for (int i = num1; i <= num1 + (m - 1); i++)
{
RichTextBox text = new RichTextBox();
text.Location = new Point(10, t1 * 500 + 200 + place );
text.Size = new System.Drawing.Size(600, 100);
RichTextBox Rtext = new RichTextBox();
Rtext.Location = new Point(10, t1 * 500 + 150 + 200 + place);

……………………………………………………

text.Text = (num + 1).ToString() + "、" + data.Tables["Table"].Rows[i]["questioncontent"].ToString();

…………………………………………………………
panel1.Controls.Add(LA1);
panel1.Controls.Add(text);
panel1.Controls.Add(Rtext);
text.ReadOnly = true;
num = num + 1;
t1 = t1 + 1;
}
flowerjack 2010-06-04
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 dingxixi123 的回复:]
 【IT168技术】一、简介

  本短文将向您展示Visual C# 2010中新推出的一些功能及增强性特征。通过这些新功能的协同工作有利于改进微软Office可编程性,增加您的代码管理功能,并为测试驱动开发提供支持,等等。有关更多信息,请参见文章《Visual Studio 2010产品亮点展示》。下面,我们来作逐一介绍。

  二、C# 4.0语言及编译器新特征

  (一) 动……
[/Quote]

能解释一下,你的用意吗?
flowerjack 2010-06-04
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 hellosm 的回复:]
照你这么说,只能给panel的strollbar的位置重新赋值了吧
[/Quote]

嗯,你这个方法我试过了,但还是不行.代码如下
int X_Value;
int Y_Value;
X_Value = panel1.HorizontalScroll.Value;
Y_Value = panel1.VerticalScroll.Value;
//操作
label1.Text = String.Format("{0}:{1}:{2}", DateTime.Now.Hour.ToString("#00"), DateTime.Now.Minute.ToString("#00"), DateTime.Now.Second.ToString("#00"));

panel1.HorizontalScroll.Value = X_Value;
panel1.VerticalScroll.Value = Y_Value;
不懂装懂 2010-06-04
  • 打赏
  • 举报
回复

private void timer1_Tick(object sender, EventArgs e)
{
DateTime dt = DateTime.Now;
label1.Text = dt.Hour.ToString();
label2.Text = dt.Minute.ToString();
label3.Text = dt.Second.ToString();
}

我直接这么弄个时钟,没有出现panel的strollbar返回最开始的地方这种情况,你仔细检查下代码吧
zzx509 2010-06-04
  • 打赏
  • 举报
回复
楼主是在Timer中给panel1添加了一些控件?
panel1.Controls.Add(LA1);
panel1.Controls.Add(text);
panel1.Controls.Add(Rtext);
panel1.ScrollControlIntoView(LA1);//加上这个
allen3010 2010-06-04
  • 打赏
  • 举报
回复
没怎么看明白
hellosm 2010-06-04
  • 打赏
  • 举报
回复
照你这么说,只能给panel的strollbar的位置重新赋值了吧
flowerjack 2010-06-03
  • 打赏
  • 举报
回复
to 思源
你是说panel 还是什么的
我也不是很懂,个人感觉panel里面有一些控件是重名的
例如

for (int i = num1; i <= num1 + (m - 1); i++)
{
RichTextBox text = new RichTextBox();
text.Location = new Point(10, t1 * 500 + 200 + place );
text.Size = new System.Drawing.Size(600, 100);
RichTextBox Rtext = new RichTextBox();
Rtext.Location = new Point(10, t1 * 500 + 150 + 200 + place);
Rtext.Size = new System.Drawing.Size(500, 250);
mulRtBox[t1] = Rtext;

Label LA1 = new Label();
LA1.Text = "正确答案:";
LA1.Location = new Point(520, t1 * 500 + 150 + 200 + place);
LA1.Size = new System.Drawing.Size(600, 29);
mulLB[t1] = LA1;
LA1.ForeColor = SystemColors.Info;



text.Text = (num + 1).ToString() + "、" + data.Tables["Table"].Rows[i]["questioncontent"].ToString();


get_mul_content[t1] = data.Tables["Table"].Rows[i]["questioncontent"].ToString();
get_mul_Ranswer[t1] = data.Tables["Table"].Rows[i]["rightanswer"].ToString().Trim();
get_mul_score[t1] = data.Tables["Table"].Rows[i]["questionscore"].ToString().Trim();
get_mul_account[t1] = data.Tables["Table"].Rows[i]["questionaccount"].ToString().Trim();

panel1.Controls.Add(LA1);
panel1.Controls.Add(text);
panel1.Controls.Add(Rtext);
text.ReadOnly = true;
num = num + 1;
t1 = t1 + 1;
}
PandaIT 2010-06-03
  • 打赏
  • 举报
回复
是否有重名的??
flowerjack 2010-06-03
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zhoukang0916 的回复:]
贴点代码出来瞅瞅!
[/Quote]

源码很长
只贴一部分吧
我声明了一个Timer用来做一个相当于时钟的,每一个Timer就更新一次
label1.Text = String.Format("{0}:{1}:{2}", DateTime.Now.Hour.ToString("#00"), DateTime.Now.Minute.ToString("#00"), DateTime.Now.Second.ToString("#00"));
label2.Text = String.Format("{0}:{1}:{2}", H.ToString("#00"), M.ToString("#00"), S.ToString("#00"));


panel里面的都是一些自动生成的Label,Text之类的控件.
源码有1000多行,还是不贴了.谢谢啦
flowerjack 2010-06-03
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 shuzhan87 的回复:]
滚动条的位置值也在Timer中设置
[/Quote]

没有.这个没有设置.起码我没有去设它
flowerjack 2010-06-03
  • 打赏
  • 举报
回复
源码很长
只贴一部分吧
我声明了一个Timer用来做一个相当于时钟的,每一个Timer就更新一次
label1.Text = String.Format("{0}:{1}:{2}", DateTime.Now.Hour.ToString("#00"), DateTime.Now.Minute.ToString("#00"), DateTime.Now.Second.ToString("#00"));
label2.Text = String.Format("{0}:{1}:{2}", H.ToString("#00"), M.ToString("#00"), S.ToString("#00"));


panel里面的都是一些自动生成的Label,Text之类的控件.
源码有1000多行,还是不贴了.谢谢啦
加载更多回复(4)

110,533

社区成员

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

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

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