我的问题是在.NET框架中使用C#创建一个包含富文本框(RTB)控件的简单表单应用程序。
简单地说,我遇到的问题是,当试图清除RTB的内容(.Text)时,滚动条不会消失。我想知道我使用RTB的方式是否存在任何内在错误。我道歉,但该网站不允许我发布图片。因此,如果对“不会消失”的含义存在误解,请询问!
首先,我使用以下代码片段将数据写入框中:
// append the new message
this.rtb_receive_0.Text += message;
this.rtb_receive_0.SelectionStart = this.rtb_receive_0.Text.Length;
this.rtb_receive_0.ScrollToCaret();
稍后,我使用以下代码清除RTB内容(RTB.Text):
this.rtb_receive_0.Text = String.Empty;
this.rtb_receive_0.Refresh();
在上面的代码中,我已经尝试使用“刷新”方法修复我的问题。但是它似乎没有完成这项工作。
当我清除RTB内容时,滚动条不会消失......我注意到如果我抓住另一个窗口并将其拖到应用程序的顶部,那么冻结的滚动条就会消失。此外,我可以最小化应用程序,然后再次最大化它,条形将消失。必须有一种方法可以防止这个冻结的滚动条在第一时间发生。
根据答案,这是阻止酒吧冻结的修复方法:
this.rtb_receive_0.Text = String.Empty;
this.rtb_receive_0.Clear();
this.rtb_receive_0.ScrollBars = RichTextBoxScrollBars.None;
this.rtb_receive_0.ScrollBars = RichTextBoxScrollBars.Vertical;
this.rtb_receive_0.Refresh();
答案 0 :(得分:1)
您是否只是尝试以编程方式在RTB上设置Scrollbars属性?
myRichTextBox.ScrollBars = RichTextBoxScrollBars.None;
编辑:我想我误解了你需要的东西。搜索周围,我在另一个论坛上发现了这个类似的帖子:http://www.vbforums.com/showthread.php?793671-RESOLVED-RichTextBox-Visual-Bug
此用户根据列表视图中的选择设置RTB的值。设置新值并且不需要滚动条时,它不会重新绘制并仍然显示该栏。
似乎添加myRichTextBox.Clear(); myRichTextBox.Refresh();
会有所帮助。在这种情况下,用户也以编程方式设置ScrollBars
属性。
此外,您是否能够确定在需要滚动条之前RichTextBox中可以容纳多少行文本?我想这可能会因机器上的系统设置而异,但您可能只能以编程方式检查myrtb.Scrollbars = (myrtb.Lines.Length > X) ? Vertical : None;
(请原谅psuedo代码语法)
答案 1 :(得分:0)
对我有帮助的只是两次调用refresh()
方法。非常难看,但它确实起了作用。
答案 2 :(得分:0)
我遇到了同样的问题。我通过调用Invalidate()方法解决了这一问题,该方法强制控件重新绘制。
const LocalStrategy = require("passport-local").Strategy;
var User = require("./models/user");
module.exports = function() {
passport.serializeUser(function(user, done) {
done(null, user._id);
});
passport.deserializeUser(function(id, done) {
User.findById(id, function(err, user) {
done(err, user);
});
});
passport.use(
"login",
new LocalStrategy(function(username, password, done) {
User.findOne({ username: username }, function(err, user) {
if (err) {
return done(err);
}
if (!user) {
return done(null, false, { message: "No user has that username!" });
}
user.checkPassword(password, function(err, isMatch) {
if (err) {
return done(err);
}
if (isMatch) {
return done(null, user);
} else {
return done(null, false, { message: "Invalid password." });
}
});
});
})
);
};```
答案 3 :(得分:0)
我尝试过Refresh(); Update(); Invalidate();,但对我没有用。
我使用以下三行代码解决了这个问题:-
filename=str(input('Insert file name'))
results=pandas.dataframe()
results.to_csv("%s.csv"%filename)
尝试三行以上的内容。它将100%起作用。