天道酬勤,学无止境

How to wordWrap the text in a column using ObjectListView

For example I have a big sentence:

"I like to eat pie and have fun around the house all day long!" And I want it to appear like this:

"I like to eat pie and have fun around the house all day long!"

In this post: Multi-line list items on WinForms ListView control? Grammarian said that you only need to have WordWrap on but I cannot find that option.

Thanks for the help in advanced

评论

Each column has a WordWrap property. Set that to true and the text of that column will wrap.

Remember, the list must be OwnerDrawn for the wrapping to be visible.

EDIT: I looked again today, and you are quite right -- that property has gone! I have no idea where it has vanished to. I'm sure it used to be there :(

OLVColumn should have a property like this:

    [Category("Behavior - ObjectListView"),
     Description("Draw this column cell's word wrapped"),
     DefaultValue(false)]
    public bool WordWrap {
        get { return wordWrap; }
        set { 
            wordWrap = value;
            if (wordWrap) {
                this.Renderer = new BaseRenderer();
                ((BaseRenderer)this.Renderer).CanWrap = true;
                ((BaseRenderer)this.Renderer).UseGdiTextRendering = false;
            } else {
                this.Renderer = null;
            }
        }
    }
    private bool wordWrap;

Put that in, and you'll be able to word wrap your column's contents.

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • How to add a new item into ObjectListView?
    I tried the demo code in demo project but I can't add new item successfully. It just add new new NULL group and NULL item. Please give me an simple example code to add new item (text and image). Thank you! Oh sorry! I forgot it. This is the first time I participate in this site. I use C#. And the code is: objectListView1.BeginUpdate(); objectListView1.AddObject(new string [] {"Hello","dfdsF" }); objectListView1.EndUpdate(); and objectListView1.BeginUpdate(); OLVListItem item = new OLVListItem(new string [] {"Hello","dfdsF" }); objectListView1.Items.Add(item); objectListView1.EndUpdate(); It's
  • 自动在VSCode中的列上自动换行(Automatically hard wrap lines at column in VSCode)
    问题 如何自动在VSCode中自动换行? 我的意思是,如果一行到达指定的列,请自动在最靠近该列的单词边界处插入换行符,而无需继续进行。 Vim有一个名为textwidth的设置,我可以在编辑Markdown时使用它。 据我所知,它似乎不像VSCode。 它只是具有控制软包装的方法。 回答1 VSCode不支持此功能。 但是您可以安装Rewrap扩展程序,该扩展程序允许您通过按Alt + Q来格式化光标当前所在的块。 Rewrap不需要进一步的设置,因为它会读取VSCode的设置来获取要在其处断开的列。 Rewrap包装还支持自动包装(默认情况下为关闭):https://github.com/stkb/Rewrap/wiki/Auto-wrap 回答2 不幸的是,VSCode还没有此功能。 但是,我们仍然可以使它接近vim自动自动换行的漂亮功能。 第一步 我们需要在VSCode中设置软自动换行功能。 通过Code => Preferences => Settings打开VSCode Code => Preferences => Settings 。 添加这三行编辑器设置。 "editor.wordWrap": "wordWrapColumn", "editor.wrappingIndent": "same", "editor.wordWrapColumn": n
  • 即使将焦点放在另一个控件上,如何更改listview所选行的背景色?(How to change listview selected row backcolor even when focus on another control?)
    问题 我有一个使用条形码扫描仪作为输入设备的程序,这意味着我需要将重点放在文本框上。 该程序具有一个listview控件,当扫描特定条形码时,我将以编程方式选择其中一项。 我通过以下方式设置行的背景色: listviewitem.BackColor = Color.LightSteelBlue; 我尝试过的事情: listview.HideSelection设置为false 设置颜色后调用listview.Focus() listviewitem.Focused设置为true 呼叫listview.Invalidate 呼叫listview.Update() 调用listview.Refresh() 上面的不同组合 我还在计时器中进行了上述组合,因此它们在不同的线程上被调用,但仍然没有成功。 有任何想法吗? 更多信息: 这里的关键是控制焦点。 选择其中一项时, listview控件没有焦点。 我通过执行以下操作选择一项: listView1.Items[index].Selected = true; 焦点始终在文本框中。 该计算机没有键盘或鼠标,只有条形码读取器。 我有以下代码可以将重点放在文本框上: private void txtBarcode_Leave(object sender, EventArgs e) { this.txtBarcode.Focus(); }
  • Filtering ListView with custom (object) adapter
    I'm trying to implement filtering of a ListView which is uses a custom object adapter, but I can't find any useful samples. The included code is very simplified, so no- keep in mind I can't use an regular ArrayAdapter. I have a EditText above the ListView, and when the user enters text in the EditText widget I would like to filter the ListView by the text written in the EditText. Any suggestions would be much appreciated! Here is the snippet from the activity class: public class management_objects extends Activity { private static List<User> UserList; private EfficientAdapter adapter = null
  • 使用自定义(对象)适配器过滤ListView(Filtering ListView with custom (object) adapter)
    问题 我正在尝试对使用自定义对象适配器的ListView进行过滤,但是找不到任何有用的示例。 包含的代码非常简化,因此请记住,我不能使用常规的ArrayAdapter。 我在ListView上方有一个EditText,当用户在EditText小部件中输入文本时,我想用EditText中编写的文本过滤ListView。 我们欢迎所有的建议! 这是活动类的摘录: public class management_objects extends Activity { private static List<User> UserList; private EfficientAdapter adapter = null; private ListView objectListView = null; private EditText SearchText = null; private static class EfficientAdapter extends BaseAdapter implements Filterable{ private LayoutInflater mInflater; public EfficientAdapter(Context context) { mInflater = LayoutInflater.from(context); } public int
  • 如何截断PHP中最接近一定数量字符的单词的字符串?(How to Truncate a string in PHP to the word closest to a certain number of characters?)
    问题 我有一个用PHP编写的代码片段,可从数据库中提取文本块并将其发送到网页上的小部件。 原始文本块可以是一篇冗长的文章或一两个简短的句子; 但是对于此小部件,我最多只能显示200个字符。 我可以使用substr()以200个字符的形式截断文本,但是结果是在中间截断-我真正想要的是在200个字符之前的最后一个的末尾截断文本。 回答1 通过使用自动换行功能。 它将文本分成多行,以使最大宽度是您指定的宽度,并在单词边界处断开。 拆分后,您只需走第一行: substr($string, 0, strpos(wordwrap($string, $your_desired_width), "\n")); 文本本身短于所需宽度时,oneliner无法处理的一件事。 要处理这种情况,应执行以下操作: if (strlen($string) > $your_desired_width) { $string = wordwrap($string, $your_desired_width); $string = substr($string, 0, strpos($string, "\n")); } 如果文本在实际剪切点之前包含换行符,则上述解决方案存在过早剪切文本的问题。 这里是解决此问题的版本: function tokenTruncate($string, $your_desired_width
  • 如何从一个字符串中获取第一个x字符,而不切断最后一个单词?(How to get first x chars from a string, without cutting off the last word?)
    问题 我在变量中有以下字符串。 Stack Overflow is as frictionless and painless to use as we could make it. 我想从上面的行中获取前28个字符,因此通常如果我使用substr,它将给我Stack Overflow is as frictio该输出一样,但是我希望输出为: Stack Overflow is as... PHP中是否有任何预制函数可以执行此操作,或者请向我提供此代码在PHP中? 编辑: 我想要从字符串中总共28个字符而不打断一个单词,如果它返回的字符数少于28个而不会打断一个单词,那很好。 回答1 您可以使用wordwrap()函数,然后在换行符上爆炸并开始第一部分: $str = wordwrap($str, 28); $str = explode("\n", $str); $str = $str[0] . '...'; 回答2 从AlfaSky: function addEllipsis($string, $length, $end='…') { if (strlen($string) > $length) { $length -= strlen($end); $string = substr($string, 0, $length); $string .= $end; } return
  • 在WinForms中将按钮添加到Listview中(Adding button into a Listview in WinForms)
    问题 有没有一种方法可以将按钮控件添加到WinForms应用程序中ListView内部的单元格中? 回答1 这是可以重用的类ListViewExtender的代码。 它不是ListView的派生类,基本上,您只是声明特定列显示为按钮而不是文本。 按钮的文本是子项的文本。 它允许没有问题的大型列表视图,不使用p / invoke,并且还可以与水平滚动条一起使用(此处提出的一些答案的代码在很多项目中没有或相当慢)。 注意,它要求扩展ListView的FullRowSelect设置为true ,视图类型设置为Details 。 这是使用它的示例代码: namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); // you need to add a listView named listView1 with the designer listView1.FullRowSelect = true; ListViewExtender extender = new ListViewExtender(listView1); // extend 2nd column ListViewButtonColumn buttonAction
  • 适用于UTF-8的多字节安全wordwrap()函数(Multi-byte safe wordwrap() function for UTF-8)
    问题 PHP的wordwrap()函数不适用于UTF-8等多字节字符串。 注释中有几个mb安全功能示例,但是使用一些不同的测试数据,它们似乎都存在一些问题。 该函数应采用与wordwrap()完全相同的参数。 特别要确保它能: 如果$cut = true则切中单词,否则不切中单词如果$break = ' '则不能在单词中插入多余的空格也适用于$break = "\n" 适用于ASCII和所有有效的UTF-8 回答1 我还没有找到适合我的工作代码。 这是我写的。 对我来说,它正在运行,以为它可能不是最快的。 function mb_wordwrap($str, $width = 75, $break = "\n", $cut = false) { $lines = explode($break, $str); foreach ($lines as &$line) { $line = rtrim($line); if (mb_strlen($line) <= $width) continue; $words = explode(' ', $line); $line = ''; $actual = ''; foreach ($words as $word) { if (mb_strlen($actual.$word) <= $width) $actual .= $word.' '
  • 自动换行(wordwrap a very long string)
    问题 如何显示带有自动换行符的长字符串,网站地址,单词或符号集,以保持div宽度? 我猜是一个自动换行。 通常添加空格是可行的,但是有CSS解决方案,例如自动换行吗? 例如,它(非常讨厌)与div重叠,强制水平滚动等。 我可以在上面的字符串中添加些什么以使其完全适合div中的几行或浏览器窗口? 回答1 之前曾在这里问过这个问题: 谁解决了我的div-break-breaks-my-div问题? (提示:不是stackoverflow) 在CSS / JS中自动换行 CSS:如何强制将长字符串(不带任何空格)包裹在XUL和/或HTML中带有长网址的CSS溢出 长话短说: 至于CSS的解决方案去了你就必须: overflow: scroll; 强制元素显示滚动条并overflow:hidden; 剪掉任何多余的文字。 有text-overflow:ellipsis; 和word-wrap: break-word; 但它们仅是IE(但是CSS3草案中包含了break-word ,因此从现在起这将是这5年的解决方案)。 底线是,如果对您来说非常重要,请不要将文本换行到下一行,以免发生这种情况,唯一合理的解决方案是注入­ (软连字符),<wbr>(分词标签)或&#8203; (零宽度空格,与­减连字符相同的效果)在您的字符串服务器端。 但是,如果您不介意使用Javascript
  • How to implement wordwrap on jqGrid which works on IE7, IE8 and FF
    How to implement wordwrap on jqGrid which works on IE7, IE8 and FF, while also having column-resize work (grid aligns correctly). Tried to innerwrap content on each td with a div of specific width (based on initial TH width), but colresize will not work on the divs I've inserted. jqGrid calculates the widths of the resized TH and adjacent THs though. Is there a better solution which will avoid all the JavaScript 'hacks'?
  • PHP word wrap with pixel dimensions
    I'm looking for a way to wrap text into a box of specific width using PHP. I have dynamic text strings coming in, and variable font sizes. I found a great way to cut the text up the way I want it from this thread: Smarter word-wrap in PHP for long words? Using this block of code: function smart_wordwrap($string, $width = 10, $break = "\n") { // split on problem words over the line length $pattern = sprintf('/([^ ]{%d,})/', $width); $output = ''; $words = preg_split($pattern, $string, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE); foreach ($words as $word) { if (false !== strpos($word, '
  • Wordwrap / Cut Text in HTML string
    here what i want to do : i have a string containing HTML tags and i want to cut it using the wordwrap function excluding HTML tags. I'm stuck : public function textWrap($string, $width) { $dom = new DOMDocument(); $dom->loadHTML($string); foreach ($dom->getElementsByTagName('*') as $elem) { foreach ($elem->childNodes as $node) { if ($node->nodeType === XML_TEXT_NODE) { $text = trim($node->nodeValue); $length = mb_strlen($text); $width -= $length; if($width <= 0) { // Here, I would like to delete all next nodes // and cut the current nodeValue and finally return the string } } } } } I'm not
  • How to do wordwrap for chart labels using d3.js
    I am trying to implement the horizontal bar chart using d3.js.Some of the chart labels are too long. How to do word wrap for the chart labels on y aixs? Source code: var data = [{"Name": "Label 1", "Count": "428275" }, { "Name": "Label 2", "Count": "365005" }, { "Name": "Label 3", "Count": "327619" }]; var m = [30, 10, 10, 310], w = 1000 - m[1] - m[3], h = 550 - m[0] - m[2]; var format = d3.format(",.0f"); var x = d3.scale.linear().range([0, w + 10]), y = d3.scale.ordinal().rangeRoundBands([0, h], .4); var xAxis = d3.svg.axis().scale(x).orient("bottom").tickSize(h), yAxis = d3.svg.axis().scale
  • The relationship between the two objects cannot be defined because they are attached to different ObjectContext objects
    I have 2 tables in SQL. One is called Training and one is called Consultants. Training is couple of fields like ID, Place, Time, Date and it also has ConsultantName which is foreign key and is connected with Consultants having ConsultantName, ConsultantFirstName etc. During save of Training i save the training first and then pass the Training value as varTraining. I tried to attatch it to context as per some suggestions I found on stack but it doesn't seem to work: Training Training = context.Trainings.First(p => p.TrainingID == varTraining.TrainingID); context.Trainings.Attach(Training)
  • 如何在不打断单词的情况下拆分长字符串?(How to split a long string without breaking words?)
    问题 我正在寻找一些类似的东西 str_split_whole_word($longString, $x) 其中$longString是句子的集合,而$x是每行的字符长度。 它可能会很长,我想将其基本上以数组的形式分成多行。 例如: $longString = 'I like apple. You like oranges. We like fruit. I like meat, also.'; $lines = str_split_whole_word($longString, $x); 所需的输出: $lines = Array( [0] = 'I like apple. You' [1] = 'like oranges. We' [2] = and so on... ) 回答1 这段代码可以避免打断​​单词,您不会使用wordwrap()来获得它。 最大长度使用$maxLineLength定义。 我已经做过一些测试,并且工作正常。 $longString = 'I like apple. You like oranges. We like fruit. I like meat, also.'; $words = explode(' ', $longString); $maxLineLength = 18; $currentLength = 0; $index = 0
  • How can I show scrollbars on a System.Windows.Forms.TextBox only when the text doesn't fit?
    For a System.Windows.Forms.TextBox with Multiline=True, I'd like to only show the scrollbars when the text doesn't fit. This is a readonly textbox used only for display. It's a TextBox so that users can copy the text out. Is there anything built-in to support auto show of scrollbars? If not, should I be using a different control? Or do I need to hook TextChanged and manually check for overflow (if so, how to tell if the text fits?) Not having any luck with various combinations of WordWrap and Scrollbars settings. I'd like to have no scrollbars initially and have each appear dynamically only if
  • 如何在Visual Studio Code中打开和关闭自动换行?(How can I switch word wrap on and off in Visual Studio Code?)
    问题 使用代码文件时,通常不需要较长的行来回绕。 但是,对于.md文件,这实际上非常有用。 但是,我似乎找不到启用自动换行的选项,因此将换行更长的行。 要进行复制,请打开将Visual Studio Code调整为一个足够小的窗口,然后在新文档中输入以下文本: This is my test lorem ipsum. This is my test lorem ipsum. This is my test lorem ipsum. This is my test lorem ipsum. This is my test lorem ipsum. This is my test lorem ipsum. This is my test lorem ipsum. This is my test lorem ipsum. This is my test lorem ipsum. A linebreak before this. 效果是这样的: 我正在尝试使水平滚动条保持不动,在窗口的右侧缠绕第1行。 我做了一些事情来回答我自己的问题: 搜索堆栈溢出:撰写本文时,结果为零; 仔细浏览Visual Studio Code菜单:找不到它;没有找到它。 将命令选项板与“ wrap”一起使用:不提供匹配的命令。 也许这是不可能的,而我需要提出功能请求? 还是我错过了什么? 请注意
  • 如果字符串太长,则添加…PHP [重复](Add … if string is too long PHP [duplicate])
    问题 这个问题已经在这里有了答案: 将字符串截断为字符串的前n个字符,如果删除了任何字符,则添加三个点(19个答案) 去年关闭。 我在MySQL数据库中有一个description字段,我在两个不同的页面上访问数据库,一个页面显示整个字段,但在另一个页面上,我只想显示前50个字符。 如果description字段中的字符串少于50个字符,则不会显示...,但是如果不是,则在前50个字符后显示...。 示例(完整字符串): Hello, this is the first example, where I am going to have a string that is over 50 characters and is super long, I don't know how long maybe around 1000 characters. Anyway this should be over 50 characters now ... 示例2(前50个字符): Hello, this is the first example, where I am going ... 回答1 PHP的方法很简单: $out = strlen($in) > 50 ? substr($in,0,50)."..." : $in; 但是您可以使用以下CSS达到更好的效果: .ellipsis {
  • 在CSS / JS中自动换行(word wrap in css / js)
    问题 我正在寻找一种跨浏览器的方式来包装具有预定宽度的div内不包含空格(例如长URL)的文本的较长部分。 这里有一些解决方案,我在网络上找到,为什么他们不为我工作: 溢出:隐藏/自动/滚动-我需要整个文本在不滚动的情况下可见。 div可以垂直增长,但不能水平增长。 注射&shy; 通过js /服务器端输入字符串-&shy; FF3现在支持FF3,但是复制和粘贴带有&shy;的URL。 在中间无法在Safari中使用。 另外,据我所知,没有一种干净的方法来测量文本宽度,以找出最佳的字符串偏移量以将这些字符添加到其中(这是一种怪癖,请参阅下一项)。 另一个问题是,放大Firefox和Opera可以轻松解决这个问题。 将文本转储到隐藏元素中并测量offsetWidth-与上面的项目有关,它需要在字符串中添加额外的字符。 同样,测量一长段文本所需的中断数量可能很容易需要数千个昂贵的DOM插入(每个子字符串长度一个),这可以有效地冻结该站点。 使用等宽字体-再次,缩放会弄乱宽度计算,并且文本无法随意设置样式。 看起来很有希望但还不存在的事情 word-wrap:断行词-它现在是CSS3工作草案的一部分,但Firefox,Opera或Safari尚不支持。 如果它今天可以在所有浏览器中使用,那么这将是理想的解决方案:( 通过js /服务器端将<wbr>标记注入字符串中