我想把一个TextBox中的文字按照datatable中的文字顺序(rows0-rowsmax)每秒进行刷新,刷新不了,高手看看要怎么改。 private void btnDrawing_Click(object sender, RoutedEventArgs e)
{
BeginDrawText();
}
private void BeginDrawText()
{
stopFlag = false;
Thread thread = new Thread(new
ThreadStart(refreshText));
thread.Start();
} private delegate void DelegateDrawText();
private bool stopFlag = false; private void refreshText()
{
while (!stopFlag)
{
//向UI界面更新显示
Dispatcher.Invoke(System.Windows.Threading.
DispatcherPriority.SystemIdle,
new DelegateDrawText
(DrawText));
}
}
private void DrawText()
{
String currentTime = System.
DateTime.Now.ToString();
txtDrawUser.Text = currentTime;
}
{
BeginDrawText();
}
private void BeginDrawText()
{
stopFlag = false;
Thread thread = new Thread(new
ThreadStart(refreshText));
thread.Start();
} private delegate void DelegateDrawText();
private bool stopFlag = false; private void refreshText()
{
while (!stopFlag)
{
//向UI界面更新显示
Dispatcher.Invoke(System.Windows.Threading.
DispatcherPriority.SystemIdle,
new DelegateDrawText
(DrawText));
}
}
private void DrawText()
{
String currentTime = System.
DateTime.Now.ToString();
txtDrawUser.Text = currentTime;
}
{
if (dt.Rows.Count > 0)
{
for (int i = 0; i < dt.Rows.Count; i++)
{
txtDrawUser.Text = dt.Rows[i][0].ToString() + " " + dt.Rows[i][1].ToString();
txtDrawUser.InvalidateArrange();
System.Threading.Thread.Sleep(1000);
}
}
}
private void DrawText()
{
UserNameShow();
}
具体方法是使用另一个线程将数据取出,使用代理将数据显示 private void btnDrawing_Click(object sender, RoutedEventArgs e)
{
getdata();
BeginDrawText();
} private void button1_Click(object sender, RoutedEventArgs e)
{
stopFlag = true;
DataFlag = true;
} /// <summary>
/// 取得人员名单
/// </summary>
private void getdata()
{
getscnstr();
string SqlStr = "SELECT Code,Name FROM DW_User";
dt = acc.GetSereachData(scn, SqlStr);
}
/// <summary>
/// 此方法为在线程内直接刷新UI,使TEXTBox刷新。//此方法无效
/// </summary>
private void UserNameShow()
{
if (dt.Rows.Count > 0)
{
for (int i = 0; i < dt.Rows.Count; i++)
{
txtDrawUser.Text = dt.Rows[i][0].ToString() + " " + dt.Rows[i][1].ToString();
txtDrawUser.InvalidateArrange();
System.Threading.Thread.Sleep(200);
}
}
} #region//使用委托显示TextBox的内容
private void BeginDrawText()
{
stopFlag = false;
Thread thread = new Thread(new
ThreadStart(refreshText));
thread.Start();
} private delegate void DelegateDrawText();
private bool stopFlag = false;
private void refreshText()
{
while (!stopFlag)
{
//向UI界面更新显示
Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.SystemIdle,
new DelegateDrawText(DrawText));
}
}
private void DrawText()
{
// String currentTime = System.
// DateTime.Now.ToString();
// txtDrawUser.Text = currentTime;//此实例显示为当前时间 //UserNameShow();
txtDrawUser.Text = drawtext;
}
#endregion
/// <summary>
/// /////////////////////////以下使用线程更新TextBox的数据,旨在得出TextBox在何时需要显示何数据
/// </summary>
private bool DataFlag = false;
private void refDataText()
{
DataFlag = false;
Thread thread = new Thread(new
ThreadStart(SetData));
thread.Start();
}
private void SetData()
{
while (!DataFlag)
{
for (int i = 0; i < dt.Rows.Count; i++)
{
drawtext = dt.Rows[i][0].ToString() + " " + dt.Rows[i][1].ToString();
System.Threading.Thread.Sleep(300);
}
}
}