RDLC не отображается правильно [дублировать]

Angular1

Для людей, которые используют AngularJS , может справиться с этой ситуацией, используя Promises.

Здесь it говорит,

Обещания могут использоваться для отключения асинхронных функций и позволяют объединять несколько функций вместе.

blockquote>

Вы можете найти приятное объяснение здесь .

Пример, найденный в docs , упомянутом ниже.

  promiseB = promiseA.then(
    function onSuccess(result) {
      return result + 1;
    }
    ,function onError(err) {
      //Handle error
    }
  );

 // promiseB will be resolved immediately after promiseA is resolved 
 // and its value will be the result of promiseA incremented by 1.

Angular2 and Later

In Angular2, посмотрите на следующий пример, но его рекомендовал использовать Observables с Angular2.

 search(term: string) {
     return this.http
  .get(`https://api.spotify.com/v1/search?q=${term}&type=artist`)
  .map((response) => response.json())
  .toPromise();

}

Вы можете использовать это таким образом,

search() {
    this.searchService.search(this.searchField.value)
      .then((result) => {
    this.result = result.artists.items;
  })
  .catch((error) => console.error(error));
}

См. здесь оригинал . Но TypScript не поддерживает native es6 Promises , если вы хотите его использовать, для этого вам может понадобиться плагин.

Кроме того, здесь представлены обещания spec определите здесь.

6
задан david l 1 May 2014 в 16:47
поделиться

2 ответа

Я столкнулся с той же проблемой. WinForms ReportViewer уже осведомлен о DPI и сделает свое собственное масштабирование. Вам просто нужно сообщить системе, что ваше приложение DPI известно, чтобы система не пыталась масштабировать его после.

Добавьте манифест в ваше приложение, если вы еще этого не сделали, а затем внутри тега , добавьте следующее:

  <asmv3:application  xmlns:asmv3="urn:schemas-microsoft-com:asm.v3" >
    <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
      <dpiAware>true</dpiAware>
    </asmv3:windowsSettings>
  </asmv3:application>

Вы также можете использовать функцию API SetProcessDPIAware, но рекомендуется использовать ее: http://msdn.microsoft.com/en-us/library/ms633543 .aspx

4
ответ дан JOMan 5 September 2018 в 08:53
поделиться

В качестве бесплатного ответа на вопрос о том, что @JoMan сказал (поскольку я не могу комментировать его сообщение), имейте в виду, что вы можете вручную масштабировать элементы пользовательского интерфейса в своем приложении относительно просто. Поэтому оставьте свое приложение DPI осведомленным (чтобы ваша система не искажала напечатанные результаты), как предложил JOMan. Вы можете использовать что-то вроде этого ...

Using g As System.Drawing.Graphics = WindowsForm.CreateGraphics
 Dim sngScaleFactor As Single = 1
 Dim sngFontFactor As Single = 1 

 If (graphics.Dpix >= 96) Then
      sngScaleFactor = (graphics.Dpix / 96) - 0.25
      sngFontFactor = (graphics.Dpix / 96) - 0.25
 End If

 If WindowsForm.AutoScaleDimensions = WindowsForm.CurrentAutoScaleDimensions Then
            WindowsForm.Scale(sngScaleFactor)
            For Each child As Control In WindowsForm.Controls
                ScaleFontRecursively(child, sngFontFactor)
            Next
 End If
End Using

Я уверен, что многие люди будут спорить (правильно!), Что вы вообще не хотите обнаруживать DPI и вручную масштабируете себя, но ошибка с автозагрузка на дюйм, запечатанная печатными отчетами microsoft, по-прежнему остается неизменной по состоянию на 2018 год, поэтому это обеспечивает легкую работу.

0
ответ дан VivaLebowski 5 September 2018 в 08:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: