小编Ozz*_*zah的帖子

C#设置ListBox宽度,使最长的项目适合

我想设置我的ListBox.Width属性,使其不比需要更宽或更窄,以显示其中的项目.ListBox左边和文本开头之间有一些像素的边距 - 我希望右边有一个类似的边距.(即不应有很大的间隙,字母不应接触右边缘).

鉴于我不确定给定字符串的像素数,我不知道如何计算这个宽度.

c# listbox winforms

3
推荐指数
1
解决办法
6600
查看次数

C#如何杀死被阻塞的线程?

我有一个帖子:

void threadCode(object o)
{
  doStuffHere(o); // Blocking call. Sometimes hangs.
}
Run Code Online (Sandbox Code Playgroud)

而我这样称呼它:

Thread t = new Thread(new ThreadStart(delegate()
  {
    threadCode(o);
  }));
t.Start();

StopWatch sw = new StopWatch();
sw.Start();

while (t.IsAlive)
{
  Application.DoEvents();

  if (sw.EllapsedMilliseconds > myTimeout)
    // Somehow kill t even though doStuffHere(o) is blocked (but hung)
}
Run Code Online (Sandbox Code Playgroud)

我正在使用.NET Zip Library并且调用ZipFile.CommitUpdate()大部分时间都可以工作,但有时只是挂起.我不知道为什么,我在文档中看不到任何指示为什么会发生这种情况的内容.一个不超过5-10秒的小文件有时会在那里停留超过5分钟但没有进展.进程资源管理器中的I/O图表显示该进程不是读取或写入,并且没有CPU使用情况.基本上,如果发生这种情况,我想CommitUpdate()在放弃之前杀死并再试一次或两次.

知道如何杀死阻塞调用中的线程吗?

(或者 - 那些有这个zip库经验的人:你知道为什么有时会挂起一些文件吗?我正在修改.docx和.pptx(GZip)文件的内容.这将是一个理想的解决方案. )

c# zip multithreading gzip block

2
推荐指数
2
解决办法
6690
查看次数

在CreateWindow上设置HWND似乎失败

我来自C#而且很新,所以请耐心等待.

我有一个MainWindow有一些私有HWND变量的类.一个用于窗口本身,一个用于每个控件.我想我需要跟踪它们,或者以后会让事情变得更容易吗?

无论如何,我有:

class GUIMain
{
private:
    HINSTANCE hInstance;
    HWND hWnd; // The windows itself
    HWND cmdGenerate, cmdQuit; // 2 buttons
Run Code Online (Sandbox Code Playgroud)

我有一个调用的私有方法initialise(HWND hWnd)被调用WM_CREATE,它将所有控件添加到窗口:

void MainWindow::initialise(HWND hWnd)
{
  this->hWnd = hWnd;

  cmdGenerate = CreateWindow(TEXT("BUTTON"), TEXT("&Generate..."),
                             WS_VISIBLE | WS_CHILD,
                             6, 6, 150, 25,        
                             hWnd, (HMENU)1, 0, 0);

  cmdQuit     = CreateWindow(TEXT("BUTTON"), TEXT("&Quit"),
                             WS_VISIBLE | WS_CHILD,
                             6, 37, 150, 25,        
                             hWnd, (HMENU)2, 0, 0);
}
Run Code Online (Sandbox Code Playgroud)

但是这似乎没有把按钮放在窗口上.事实上,当我调试时,我可以看到它甚至没有越过第一行.奇怪的是,当我把它更改为:

void MainWindow::initialise(HWND hWnd)
{
  //this->hWnd = hWnd;

  /*cmdGenerate = */CreateWindow(TEXT("BUTTON"), …
Run Code Online (Sandbox Code Playgroud)

c++ windows winapi createwindow

2
推荐指数
1
解决办法
3089
查看次数

Windows已生成断点

我在VS2010中调试我的C++ Win32程序,我总是得到"Windows在program.exe中触发了一个断点".

我对代码进行了双重检查,三重检查和四重检查.我找不到应该发生的任何理由.但它每次都发生在同一点,所以必须有一些东西.

涉及相当多的代码(构造函数,析构函数,窗口消息,内存分配和释放等等),所以在这里放置一些具体内容非常困难,但与此同时我明白,如果没有代码,你可以'我真的做了很多解释.

基本上在点击按钮时,会显示一个显示图像的窗口.如果满足某个条件,我发送一个WM_DESTROY窗口并删除触发析构函数的变量,该析构函数调用Release()my LPPICTURE,并将释放的变量设置为NULL.

然后,当用户再次单击该按钮时,它会尝试动态分配一个新实例(与之前完全相同),这就是生成断点的地方.AFAIK(我一直试图调试这个超过一个小时),构造函数甚至没有启动.它似乎打破new()了动态内存分配的功能.

据我所知,它突破了return HeapAlloc(_crtheap, 0, size ? size : 1);第54行或malloc.c

奇怪的是,当我在VS2010之外运行exe时,一切都继续正常.该程序不会崩溃,并继续按预期工作!

c++ winapi visual-studio-2010

2
推荐指数
1
解决办法
3075
查看次数

读取PIC18上输入引脚的状态

我已经能够在我的PIC上运行输出,并且当我设置各种输出锁存器高/低时,可以使一堆LED跳开和关闭.但是,我在阅读状态时遇到了很多困难.

请参阅下面的代码.我设置了我的配置,并将TRISC定义为输入,将TRISB定义为输出.在无限循环中,我检查RC6是高电平还是低电平,并根据结果将整个B锁存器设置为高电平或低电平.

#include <htc.h>

__CONFIG(1, FOSC_IRC   & FCMEN_OFF & IESO_OFF);
__CONFIG(2, PWRTEN_OFF & BOREN_OFF & WDTEN_OFF);
__CONFIG(3, MCLRE_OFF);
__CONFIG(4, STVREN_ON  & LVP_OFF   & DEBUG_OFF);
__CONFIG(5, 0xFFFF);
__CONFIG(6, 0xFFFF);
__CONFIG(7, 0xFFFF);

void main(void)
{
  TRISC = 0xFF; // input
  TRISB = 0x00; // output

  while (1)
  {
    if (PORTCbits.RC6 == 0)
      LATB = 0b00000000;
    else
      LATB = 0b11111111;
  }

  return;
}
Run Code Online (Sandbox Code Playgroud)

代码编译良好,没有警告或错误.如果我的代码逻辑只是将锁存器设置为高电平和低电平然后工作正常,但我无法成功读取引脚的状态.

有任何想法吗?

我正在使用PIC18F14K50和MPLAB v8.43以及HiTech ANSI C编译器.

我的连接是+ 5V到VDD(引脚1),VSS(引脚20)到地.我有+ 5V到C6(引脚8),以及从B7(引脚10)到地的100K电阻和LED.要切换RC6,我将电线连接/断开连接到C6.

     ??????????
+5v -? 01  20 ?- gnd
    -? 02  19 ?- …
Run Code Online (Sandbox Code Playgroud)

microcontroller pic pic18 mplab

2
推荐指数
1
解决办法
2万
查看次数

在 TypeScript 中通过其类型名称实例化抽象派生类

我正在用 TypeScript 2.6 编写一些图形代码,但在继承和通用代码方面我有一个小障碍:

abstract class Series { /**/ }

class LineSeries    extends Series { /**/ }
class BarSeries     extends Series { /**/ }
class ScatterSeries extends Series { /**/ }

class Chart {
  private seriesArray: Series[] = [];

  constructor(series: Series[]) {
    let seriesType: typeof Series = null;

    switch (series.SeriesType) {
      case SeriesType.LineSeries:
        seriesType = LineSeries;
        break;
      case SeriesType.BarSeries:
        seriesType = BarSeries;
        break;
      case SeriesType.ScatterSeries:
        seriesType = ScatterSeries;
        break;
      default:
        throw "Unsupported series type";
    }

    for (let i = 0; …
Run Code Online (Sandbox Code Playgroud)

inheritance abstract-class typescript typescript2.6

2
推荐指数
1
解决办法
1781
查看次数

如何以优雅的方式表示用户权限?

这是用户权限表

Post
        Guest User                      Admin 
Create    N     Y                         Y
Read      Y     Y                         Y
Update    N   Their own post ONLY        All
Delete    N     N (yes, user can't del)   Y
Run Code Online (Sandbox Code Playgroud)

情况就是这样.我想将所有验证用户权限放在一个单独的类中来处理.并且所有操作都有一个已定义的名称,例如:create_post,read_post.另外,让user_role传入,比方说:role_guest,role_user.验证课做了所有的魔术.你觉得这个设计怎么样?谢谢.

php authentication

1
推荐指数
1
解决办法
156
查看次数

带有display:none的嵌套HTML元素在IE8中不起作用

我正在使用jQuery淡入<article>包含<section>元素的元素.

外元件是display:none,position:fixed,和z-index:5.里面的元素是position:absolute.

基本上,文章给出了一个框架,内部部分保存内容并具有滚动条.

我正在淡出外部元素并期待内部效仿.

在IE9 +,FF和Chrome中,它按预期工作.

在IE8中 - 它没有.外部文章根本不会淡入 - 保持不可见,内部部分相对于浏览器框架定位并始终可见.页面上的其他元素都是倾斜的,页面大部分都不起作用.

代码示例:

article
{
  display: none;
  position: fixed;
  z-index: 5;
}

section
{
  position: absolute;
  top: 10px;
  right: 10px;
  bottom: 10px;
  left: 10px;
  overflow: auto;
}
Run Code Online (Sandbox Code Playgroud)

<!doctype html>
<html>
  <head>
    <meta charset="utf-8">
  </head>
  <body>
    <article id="contentFrame">
      <section id="content">
        Lorem Ipsum
      </section>
    </article>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

$("#contentFrame").fadeIn(2000);
Run Code Online (Sandbox Code Playgroud)

javascript css jquery html5 internet-explorer

1
推荐指数
1
解决办法
578
查看次数

为什么我的 GZipStream 不可写?

我的程序中有一些 GZ 压缩资源,我需要能够将它们写入临时文件以供使用。我编写了以下函数来写出文件并true在成功或false失败时返回。此外,我在其中放置了一个 try/catch,它MessageBox在发生错误时显示:

private static bool extractCompressedResource(byte[] resource, string path)
{
  try
  {
    using (MemoryStream ms = new MemoryStream(resource))
    {
      using (FileStream fs = new FileStream(path, FileMode.Create, FileAccess.ReadWrite))
      {
        using (GZipStream zs = new GZipStream(fs, CompressionMode.Decompress))
        {
          ms.CopyTo(zs); // Throws exception

          zs.Close();
          ms.Close();
        }
      }
    }
  }
  catch (Exception ex)
  {
    MessageBox.Show(ex.Message); // Stream is not writeable
    return false;
  }

  return true;
}
Run Code Online (Sandbox Code Playgroud)

我已经在引发异常的行上添加了注释。如果我在该行上放置一个断点并查看内部,GZipStream那么我可以看到它不可写(这就是导致问题的原因)。

我做错了什么,还是这是班级的限制GZipStream

c# compression gzip gzipstream

1
推荐指数
1
解决办法
2647
查看次数