@Whenever כתב בשני גלמודות מסכנות - האם ישנם ארגונים שיכולים להתערב ולעזור במקרים כאלה?:
אני חושב שאפשר לפנות למחקלת רווחה בעירייה.
סליחה על הבורות איך פונים למחלקת הרווחה?
הפורום כעת לקריאה בלבד, לקריאה נוספת.
@Whenever כתב בשני גלמודות מסכנות - האם ישנם ארגונים שיכולים להתערב ולעזור במקרים כאלה?:
אני חושב שאפשר לפנות למחקלת רווחה בעירייה.
סליחה על הבורות איך פונים למחלקת הרווחה?
אינני יודע אם זה מקום טוב לשאול את השאלה שלי, בכל אופן אני רוצה לשתף אתכם במצב קשה שמתרחש בבניין שלנו, בתקווה שאולי למישהו כאן יש מידע או ידע כיצד לעזור.
בבניין שלנו מתגוררות שתי נשים מבוגרות ועריריות, שאין להן כל מקור פרנסה. הן חיות בתנאים קשים מאוד, בדירה שהפכה לגרוטאה, ואינן מקבלות כל עזרה או תמיכה מגורם כלשהו.
מצבן הכלכלי קשה מאוד והן מתקשות לנהל את חיי היום-יום. בנוסף, השכנים סובלים מהמצב בגלל צעקות עסיסיות שהן מפנות לכל מי שמנסה לתקשר איתן.
כבר מזמן שהן לא משלמות שכירות, והסיבה שבעלת הבית לא גירשה אותן היא רק בגלל חוק הגנת הדייר. כתגובה, בעלת הבית מנסה להתנקם בהן בכל דרך אפשרית. למשל, לאחרונה הייתה נזילה בדירה ובעלת הבית הביאה פועלים לתקן את הבעיה, אך הם השאירו את כל הרצפה פתוחה והלכו.
האם ישנם ארגונים, עמותות או גורמים ממשלתיים שיכולים להתערב ולעזור במקרים כאלה? כל מידע או הכוונה יתקבלו בברכה.
אם מדובר באתר מסוים או אפילו כמה אתרים, אפשר לבנות אפליקציה בקלות יחסית שתשתלט על המסך ותציג את האתרים הללו. אם מדובר גם בתוכנות, זה כבר יותר מורכב (לפי מה שקראתי כאן נראה שזה גם אפשרי אבל זה קצת יותר התעסקות), אלא אם כן מדובר בהצגת מידע בלבד, שלזה אפשר כמובן ג"כ לבנות תוכנה די בקלות.
בקיצור, אם זה מתאים לך, הייתי מציע לך לשקול לשלם למישהו שיבנה לך תוכנה ייעודית. זה לא אמור לעלות יותר מדי.
@nigun
יפה העלית את הצדדים בצורה נכוחה וברורה והשוקל ישקול. האמירה "תוכנית מוצלחת" היא כמובן מאוד סובייקטיבית ולכן אין לי באמת איך להגיב לך על כך.
אציין שלמרות שהמצב לא מזהיר, בכל אופן, חלק מהתוכניות מצליחות לייצר השמות ואת זה אני אומר מידיעה, אמנם ההשמות הללו לא הכי מרתקות, כך שזה מאוד תלוי באישיות.
למצוא עבודה לבד בלי ניסיון, הכשרה פורמלית והמלצות זה קשה ודורש הרבה סייעתא דשמיא. אני לא אומר שזה לא אפשרי יש דרכים וכמו"כ יש אתרים שמאוד עוזרים אם הכיוון שלך הוא פרילנס אבל זה לא תותים.
בנוסף, חשוב להדגיש שבלמידה עצמית יש סיכון שלא באמת תדע כמה התקדמת והאם רכשת את ההרגלים הנכונים או לא.
@nigun כתב בלימודי תכנות:
@pcinfogmach כתב בלימודי תכנות:
אני ממליץ לך לשקול תוכנית כמו "מיגו" או תוכניות דומות. תוכניות אלו מעניקות מלגת קיום ומסייעות בהשמה מקצועית לאחר סיום הלימודים.
לפי מה שאנשים כותבים בפרוג נראה שלא הצליח להם כ"כ
https://www.prog.co.il/threads/תוכנית-הכשרת-גברים-להייטק-מיגו.789408/page-12
לפני שאני מגיב למה שאתה אומר אני חייב להסכים עם כל מילה ש@yossiz אמר בגדול במקומות האלה כמו מיגו זה המהלך שמובילים ג"כ אבל לא בהכרח
לגופו של דבר אני מבקש סליחה אם מישהו הבין מדברי שכוונתי הייתה להמליץ על תכנית כזו או אחרת ודאי שכל תכנית צריכה בדיקה לעומק ולוודא מול בוגרים האם הם מרוצים אבל לבוא עם אמירה גורפת שאין תוכניות כאלו מוצלחות זה פשוט לא נכון. למרות שאני חייב לציין שעקב המצב בשוק גם התוכניות הללו נמצאים במצוקה והעבודות השמה שהם מוצאים לבוגרים שלהם הם לא הכי מרתקות בלשון המעטה.
אני ממליץ לך לשקול תוכנית כמו "מיגו" או תוכניות דומות. תוכניות אלו מעניקות מלגת קיום ומסייעות בהשמה מקצועית לאחר סיום הלימודים.
עם זאת, כדאי לקחת בחשבון שייתכן שזה לא המסלול הכי מספק עבורך, מכיוון שעליך לקבל את מה שהם מציעים ולא בהכרח מה שאתה אוהב. בנוסף, בחלק מהמקרים אתה עלול להיות מחויב להם למספר שנים לאחר סיום התוכנית. בקיצור, בדוק היטב את הפרטים לפני שאתה מתחייב.
בהצלחה!
כלומר לאפוקי אם אם משתמשים ב-
net FrameWork.
שמה זה תמיד מראה את המיושן
רק ב-
NET Core 3.1 ומעלה זה מראה את העדכני
@dovid
זה עובד, אך לדעתי הוא פחות מתקדם מהאופציה שהצעתי. זה ממש מעצבן למשתמש להשתמש ב- FolderBrowserDialog. האינטרנט מלא בפוסטים של אנשים שמחפשים תחליף לדיאלוג הזה, ולכן כשמצאתי תחליף אחר, החלטתי לשתף ולהמליץ עליו למי שגם כן מחפש חוויית משתמש יפה יותר.
מצו"ב תמונות לשם המחשה


מדריך פשוט עבור FolderPicker מתקדם ב-C#
איך לתת למשתמש לבחור תיקייה על יד דיאולוג יפה של ווינדוס
יש להתקין את חבילת הnuget
Microsoft.WindowsAPICodePack-Shell
קוד דוגמא
using Microsoft.WindowsAPICodePack.Dialogs;
// פונקציה לבחירת תיקיה
private string ShowFolderPicker()
{
CommonOpenFileDialog dialog = new CommonOpenFileDialog();
dialog.IsFolderPicker = true;
if (dialog.ShowDialog() == CommonFileDialogResult.Ok)
{
return dialog.FileName;
}
return null;
}
פתרון לבעיה ב-binding של TextBox ב-WPF שלא עבד:
נתקלתי בבעיה מעצבנת עם ה-binding של TextBox בפרויקט WPF שלי - ה-binding פשוט לא עבד! לאחר חיפוש מצאתי את הפתרון:
הפתרון הוא להוסיף פרמטר נוסף ל-binding בשם UpdateSourceTrigger.
דוגמא:
<TextBox x:Name="SearchTextBox" Text="{Binding SearchTerm, Mode=TwoWay, BindsDirectlyToSource=True, UpdateSourceTrigger=PropertyChanged}"/>
יש לכם הערות? אנא כתבו אותם לתועלת כולם!
הערה: אישית אני ראיתי תועלת גדולה ב-mvvm, למרות שביישום של commands לא כל כך ראיתי תועלת בפרוייקטים שלי כי לרוב זה לא היה נצרך ורק הפך את הקוד למסורבל, בכל אופן הדוגמא דלהלן כוללת אותם לצורך ההדגמה ואפשר לראות כיצד הם 'מחליקים' את פעולת התוכנה, כמו"כ הוספתי קיצורי מקשים דרך ה-commands מה שמדגים את השימושיות שלהם.
עיין כאן להסבר על המושג MVVM:
להרחבה על הנושא עיין כאן
היה לי צורך להדגים את המודל mvvm עבור ידיד אז יצרתי את הפרוייקט דלהלן על בסיס כתבה זו (הפרוייקט רחוק מלהיות מושלם אבל הוא מספיק בשביל הדגמה לדעתי):
התוכנה מיישמת מחשבון (כלשהו) שיניתי קצת מהכתבה לצורך ההדגמה.
<Window x:Class="WpfTestProject.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfTestProject"
mc:Ignorable="d"
Background="WhiteSmoke"
SizeToContent="WidthAndHeight"
FocusManager.FocusedElement="{Binding ElementName=FirstValueTextBox}">
<Window.DataContext>
<local:CalculatorViewModel/>
</Window.DataContext>
<Window.InputBindings>
<KeyBinding Key="A" Modifiers="Control" Command="{Binding AddCommand}"/>
<KeyBinding Key="S" Modifiers="Control" Command="{Binding SubTractCommand}"/>
<KeyBinding Key="T" Modifiers="Control" Command="{Binding TimesCommand}"/>
<KeyBinding Key="D" Modifiers="Control" Command="{Binding DivideCommand}"/>
<KeyBinding Key="P" Modifiers="Control" Command="{Binding PercentCommand}"/>
</Window.InputBindings>
<Window.Resources>
<Style TargetType="TextBox">
<Setter Property="Margin" Value="5"/>
<Setter Property="HorizontalContentAlignment" Value="Center"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
<Setter Property="BorderBrush" Value="LightGray"/>
</Style>
<Style TargetType="TextBlock">
<Setter Property="Margin" Value="5"/>
<Setter Property="VerticalAlignment" Value="Center"/>
</Style>
<Style TargetType="Label">
<Setter Property="Margin" Value="5"/>
<Setter Property="HorizontalContentAlignment" Value="Center"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
<Setter Property="BorderBrush" Value="LightGray"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="Background" Value="White"/>
</Style>
<Style TargetType="Button">
<Setter Property="Margin" Value="5"/>
<Setter Property="Background" Value="{x:Null}"/>
<Setter Property="BorderBrush" Value="LightGray"/>
<Setter Property="Height" Value="38"/>
<Setter Property="Width" Value="{Binding Path=Height, RelativeSource={RelativeSource Self}}"/>
</Style>
</Window.Resources>
<StackPanel>
<TextBlock Text="Calculator" HorizontalAlignment="Center"
FontSize="34" Foreground="BlueViolet"/>
<Grid Margin="5,10,5,5" KeyboardNavigation.TabNavigation="Cycle">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="auto"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBox x:Name="FirstValueTextBox" Grid.Column="0" Text="{Binding FirstValue}" />
<TextBlock Text="{Binding MathMethod}" Grid.Column="1"/>
<TextBox x:Name="SecondValueTextBox" Grid.Column="2" Text="{Binding SecondValue}"/>
<TextBlock Text="=" Grid.Column="3" VerticalAlignment="Center" Margin="5"/>
<Label Grid.Column="4" Margin="5"
Content="{Binding ResultValue, BindsDirectlyToSource=True}"/>
</Grid>
<StackPanel Orientation="Horizontal" Margin="5">
<Button Content="+" Command="{Binding AddCommand}"/>
<Button Content="-" Command="{Binding SubTractCommand}"/>
<Button Content="*" Command="{Binding TimesCommand}"/>
<Button Content="/" Command="{Binding DivideCommand}"/>
<Button Content="%" Command="{Binding PercentCommand}"/>
</StackPanel>
</StackPanel>
</Window>
using System;
using System.Windows.Input;
namespace WpfTestProject
{
public abstract class ICommandBase : ICommand
{
public event EventHandler CanExecuteChanged;
public virtual bool CanExecute(object parameter)
{
return true;
}
public abstract void Execute(object parameter);
protected void OnCanExecuteChanged()
{
CanExecuteChanged?.Invoke(this, new EventArgs());
}
}
public class RelayCommand : ICommandBase
{
private Action commandTask;
public RelayCommand(Action action)
{
commandTask = action;
}
public override void Execute(object parameter)
{
commandTask();
}
}
}
public class INotifyPropertyChangedBase : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Input;
namespace WpfTestProject
{
public class CalculatorViewModel : INotifyPropertyChangedBase
{
#region members
string _mathMethod;
double _firstValue;
double _secondValue;
double _result;
#endregion
#region properties
public string MathMethod { get => _mathMethod; set { _mathMethod = value; OnPropertyChanged(nameof(MathMethod)); } }
public double FirstValue { get => _firstValue; set => _firstValue = value; }
public double SecondValue { get => _secondValue; set => _secondValue = value; }
public double ResultValue { get => _result; set { _result = value; OnPropertyChanged(nameof(ResultValue)); } }
#endregion
#region Commands
public ICommand AddCommand
{
get
{
//return plusCommand;
return new RelayCommand(Add);
}
}
public ICommand SubTractCommand
{
get
{
return new RelayCommand(SubTract);
}
}
public ICommand TimesCommand
{
get
{
return new RelayCommand(Times);
}
}
public ICommand PercentCommand
{
get
{
return new RelayCommand(Percent);
}
}
public ICommand DivideCommand
{
get
{
return new RelayCommand(Divide);
}
}
#endregion
#region Methods
public void Add()
{
MathMethod = "+";
ResultValue = FirstValue + SecondValue;
return;
}
public void SubTract()
{
MathMethod = "-";
ResultValue = FirstValue - SecondValue;
}
public void Times()
{
MathMethod = "*";
ResultValue = FirstValue * SecondValue;
}
public void Divide()
{
MathMethod = "/";
ResultValue = FirstValue / SecondValue;
}
public void Percent()
{
MathMethod = "%";
ResultValue = FirstValue * SecondValue;
}
#endregion
}
}